From abc24fff4285f61854ed75328a8a772d7bda3969 Mon Sep 17 00:00:00 2001 From: Hoang Khanh Nguyen Date: Mon, 13 Feb 2023 15:53:25 +0700 Subject: [PATCH 01/13] WIP: check if reward contract address supports ERC721 --- contracts/LearnToEarn.sol | 4 +++- test/LearnToEarn.test.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/contracts/LearnToEarn.sol b/contracts/LearnToEarn.sol index 1e2e6e3..fc80525 100644 --- a/contracts/LearnToEarn.sol +++ b/contracts/LearnToEarn.sol @@ -8,6 +8,7 @@ import { IERC721Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ER import { ERC165CheckerUpgradeable } from "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol"; import { ILearnToEarn, Course, Learner } from "./interfaces/ILearnToEarn.sol"; import { INFTReward } from "./interfaces/INFTReward.sol"; +import "hardhat/console.sol"; contract LearnToEarn is ReentrancyGuardUpgradeable, OwnableUpgradeable, ILearnToEarn { using SafeERC20Upgradeable for IERC20Upgradeable; @@ -93,7 +94,8 @@ contract LearnToEarn is ReentrancyGuardUpgradeable, OwnableUpgradeable, ILearnTo _canMintNFT = _rewardAddress.supportsInterface(type(INFTReward).interfaceId); if (!_canMintNFT) { - require(IERC721Upgradeable(_rewardAddress).balanceOf(_msgSender()) >= _budget, "Balance of creator is not enough"); + require(_rewardAddress.supportsInterface(type(IERC721Upgradeable).interfaceId), "Reward contract is not ERC721"); + require(IERC721Upgradeable(_rewardAddress).balanceOf(_msgSender()) >= _budget, "Insufficient creator's balance"); } } diff --git a/test/LearnToEarn.test.ts b/test/LearnToEarn.test.ts index f74dbd7..69e094d 100644 --- a/test/LearnToEarn.test.ts +++ b/test/LearnToEarn.test.ts @@ -105,7 +105,7 @@ describe("LearnToEarn contract", () => { await expect(learnToEarn.connect(creator).createCourse(iouToken.address, TOKEN_1.mul(20), TOKEN_1, timeStart, timeStart - 1, false, true)).to.revertedWith("Invalid time end bonus"); }); - it("[OK]: Create course with bonus is nft that is deployed by system successfully", async () => { + it.only("[OK]: Create course with bonus is nft that is deployed by system successfully", async () => { const NEXT_60_DAYS = Date.now() + ONE_DAY * 60; let tx: ContractTransaction = await learnToEarn.connect(creator).createCourse(nftReward.address, 100, 1, timeStart, NEXT_60_DAYS, false, false); let receipt: ContractReceipt = await tx.wait(); From bbccfb5028fa1528d66a43a88b798a834be054ba Mon Sep 17 00:00:00 2001 From: Hoang Khanh Nguyen Date: Tue, 14 Feb 2023 14:45:26 +0700 Subject: [PATCH 02/13] Small changes in test cases --- test/LearnToEarn.test.ts | 4 ++-- test/integration/LearnToEarnFlow.test.ts | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/test/LearnToEarn.test.ts b/test/LearnToEarn.test.ts index 69e094d..acc4915 100644 --- a/test/LearnToEarn.test.ts +++ b/test/LearnToEarn.test.ts @@ -96,7 +96,7 @@ describe("LearnToEarn contract", () => { }); it("[Fail]: Creator with external nft contract but balance of creator is not enough", async () => { - await expect(learnToEarn.connect(creator).createCourse(erc721Test.address, 20, 1, timeStart, ONE_DAY * 60, true, false)).to.revertedWith("Balance of creator is not enough"); + await expect(learnToEarn.connect(creator).createCourse(erc721Test.address, 20, 1, timeStart, ONE_DAY * 60, true, false)).to.revertedWith("Insufficient creator's balance"); }); it("[Fail]: Invalid time end bonus", async () => { @@ -105,7 +105,7 @@ describe("LearnToEarn contract", () => { await expect(learnToEarn.connect(creator).createCourse(iouToken.address, TOKEN_1.mul(20), TOKEN_1, timeStart, timeStart - 1, false, true)).to.revertedWith("Invalid time end bonus"); }); - it.only("[OK]: Create course with bonus is nft that is deployed by system successfully", async () => { + it("[OK]: Create course with bonus is nft that is deployed by system successfully", async () => { const NEXT_60_DAYS = Date.now() + ONE_DAY * 60; let tx: ContractTransaction = await learnToEarn.connect(creator).createCourse(nftReward.address, 100, 1, timeStart, NEXT_60_DAYS, false, false); let receipt: ContractReceipt = await tx.wait(); diff --git a/test/integration/LearnToEarnFlow.test.ts b/test/integration/LearnToEarnFlow.test.ts index ec6adc0..974fb6c 100644 --- a/test/integration/LearnToEarnFlow.test.ts +++ b/test/integration/LearnToEarnFlow.test.ts @@ -846,7 +846,8 @@ describe("Integration test LearnToEarn contract", () => { it("Create course 7 with external NFT contract and time bonus to next 45 days but reverted because of have not minted NFT before", async () => { const NEXT_45_DAYS = (await getTimestamp()) + ONE_DAY * 45; - await expect(learnToEarn.connect(creator).createCourse(erc721Test.address, 4, 2,(await getTimestamp()) + 14, NEXT_45_DAYS, false, false)).to.revertedWith("Balance of creator is not enough"); + await expect(learnToEarn.connect(creator).createCourse(erc721Test.address, 4, 2,(await getTimestamp()) + 14, NEXT_45_DAYS, false, false)) + .to.revertedWith("Insufficient creator's balance"); }); it("Creator mint NFTs", async () => { From abba0e082be08a34800c1c672b97e583d139edb7 Mon Sep 17 00:00:00 2001 From: Hoang Khanh Nguyen Date: Tue, 14 Feb 2023 14:46:52 +0700 Subject: [PATCH 03/13] Removed import console.sol --- contracts/LearnToEarn.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/LearnToEarn.sol b/contracts/LearnToEarn.sol index fc80525..9051941 100644 --- a/contracts/LearnToEarn.sol +++ b/contracts/LearnToEarn.sol @@ -8,7 +8,6 @@ import { IERC721Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ER import { ERC165CheckerUpgradeable } from "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol"; import { ILearnToEarn, Course, Learner } from "./interfaces/ILearnToEarn.sol"; import { INFTReward } from "./interfaces/INFTReward.sol"; -import "hardhat/console.sol"; contract LearnToEarn is ReentrancyGuardUpgradeable, OwnableUpgradeable, ILearnToEarn { using SafeERC20Upgradeable for IERC20Upgradeable; From c8ee8121fd93caff45f8b0a74421414a38ea6da2 Mon Sep 17 00:00:00 2001 From: phongho01 Date: Tue, 14 Feb 2023 14:51:21 +0700 Subject: [PATCH 04/13] upgrade proxy --- contracts/ERC721Test.sol | 16 ---------------- ...5861179741.json => mumbai_1675861179741.json} | 0 deployed/nft_test_goerli_1676356838824.json | 1 + .../upgraded_arbitrumGoerli_1676257584535.json | 8 +++++++- .../upgraded_auroraTestnet_1675853611049.json | 1 - .../upgraded_auroraTestnet_1676257547654.json | 8 +++++++- deployed/upgraded_goerli_1675766298752.json | 7 ------- deployed/upgraded_goerli_1675853410270.json | 7 ------- deployed/upgraded_goerli_1676257492901.json | 8 +++++++- deployed/upgraded_mumbai_1676257422397.json | 8 +++++++- 10 files changed, 29 insertions(+), 35 deletions(-) rename deployed/{polygonMumbai_1675861179741.json => mumbai_1675861179741.json} (100%) create mode 100644 deployed/nft_test_goerli_1676356838824.json delete mode 100644 deployed/upgraded_auroraTestnet_1675853611049.json delete mode 100644 deployed/upgraded_goerli_1675766298752.json delete mode 100644 deployed/upgraded_goerli_1675853410270.json diff --git a/contracts/ERC721Test.sol b/contracts/ERC721Test.sol index ef7797a..d213201 100644 --- a/contracts/ERC721Test.sol +++ b/contracts/ERC721Test.sol @@ -36,20 +36,4 @@ contract ERC721Test is ERC721URIStorage, Ownable { emit MintedNFT(_to, tokenIds, _uri); } - - function mint(string memory _uri) external { - tokenIds++; - _safeMint(_msgSender(), tokenIds); - _setTokenURI(tokenIds, _uri); - - emit MintedNFT(_msgSender(), tokenIds, _uri); - } - - function mintBatch(string[] memory _uris) external onlyOwner { - for(uint256 i = 0; i < _uris.length; i++) { - tokenIds++; - _safeMint(_msgSender(), tokenIds); - _setTokenURI(tokenIds, _uris[i]); - } - } } \ No newline at end of file diff --git a/deployed/polygonMumbai_1675861179741.json b/deployed/mumbai_1675861179741.json similarity index 100% rename from deployed/polygonMumbai_1675861179741.json rename to deployed/mumbai_1675861179741.json diff --git a/deployed/nft_test_goerli_1676356838824.json b/deployed/nft_test_goerli_1676356838824.json new file mode 100644 index 0000000..0f69d0b --- /dev/null +++ b/deployed/nft_test_goerli_1676356838824.json @@ -0,0 +1 @@ +{"ERC721Test_deploy":"0x05E0A893B47ddd9063d2FFf71d5f2c0f499f47fe"} \ No newline at end of file diff --git a/deployed/upgraded_arbitrumGoerli_1676257584535.json b/deployed/upgraded_arbitrumGoerli_1676257584535.json index c5ce9a6..74880ae 100644 --- a/deployed/upgraded_arbitrumGoerli_1676257584535.json +++ b/deployed/upgraded_arbitrumGoerli_1676257584535.json @@ -1 +1,7 @@ -{"LearnToEarn_proxy":"0x1DAE40f862c69bAa6c1899b34e6b0595D1b39CcC","LearnToEarn_verify":"0xdB24E5a4353D62e382F6b71e1dC4CaFF44ddb062","NFTReward_deploy":"0x9b075656A75a7656749B20B3Edca1F05c6fc272B","TokenFactory_proxy":"0x9955346c16D3805e3Fb5F84Fba9179Da209b121C","TokenFactory_verify":"0xDd19Cf85BC9f83ab5E4C4fcD9248FC462ecd0581"} \ No newline at end of file +{ + "LearnToEarn_proxy": "0x1DAE40f862c69bAa6c1899b34e6b0595D1b39CcC", + "LearnToEarn_verify": "0xdB24E5a4353D62e382F6b71e1dC4CaFF44ddb062", + "NFTReward_deploy": "0x9b075656A75a7656749B20B3Edca1F05c6fc272B", + "TokenFactory_proxy": "0x9955346c16D3805e3Fb5F84Fba9179Da209b121C", + "TokenFactory_verify": "0xDd19Cf85BC9f83ab5E4C4fcD9248FC462ecd0581" +} diff --git a/deployed/upgraded_auroraTestnet_1675853611049.json b/deployed/upgraded_auroraTestnet_1675853611049.json deleted file mode 100644 index 4b3b0b3..0000000 --- a/deployed/upgraded_auroraTestnet_1675853611049.json +++ /dev/null @@ -1 +0,0 @@ -{"LearnToEarn_proxy":"0xB4501DdA26b1179914B29C00a22F67aC18fbB3EC","LearnToEarn_verify":"0xc1E0437e46ee7d40728F055070CBBaa293db893a","NFTReward_deploy":"0x1148f77868B1F392dd1a4508B7d66041631939c2","TokenFactory_proxy":"0xfEEaA5E390e8837B8ffcb1324D1b88090bBD4E63","TokenFactory_verify":"0x635AA6D983E5D7Fc7ac44827d5C4048c703A62E4"} \ No newline at end of file diff --git a/deployed/upgraded_auroraTestnet_1676257547654.json b/deployed/upgraded_auroraTestnet_1676257547654.json index fa20159..21dd471 100644 --- a/deployed/upgraded_auroraTestnet_1676257547654.json +++ b/deployed/upgraded_auroraTestnet_1676257547654.json @@ -1 +1,7 @@ -{"LearnToEarn_proxy":"0xB4501DdA26b1179914B29C00a22F67aC18fbB3EC","LearnToEarn_verify":"0x83E2F84DC141474Fdd1a12900fDc48d35Ff16Cec","NFTReward_deploy":"0x1148f77868B1F392dd1a4508B7d66041631939c2","TokenFactory_proxy":"0xfEEaA5E390e8837B8ffcb1324D1b88090bBD4E63","TokenFactory_verify":"0x635AA6D983E5D7Fc7ac44827d5C4048c703A62E4"} \ No newline at end of file +{ + "LearnToEarn_proxy": "0xB4501DdA26b1179914B29C00a22F67aC18fbB3EC", + "LearnToEarn_verify": "0x83E2F84DC141474Fdd1a12900fDc48d35Ff16Cec", + "NFTReward_deploy": "0x1148f77868B1F392dd1a4508B7d66041631939c2", + "TokenFactory_proxy": "0xfEEaA5E390e8837B8ffcb1324D1b88090bBD4E63", + "TokenFactory_verify": "0x635AA6D983E5D7Fc7ac44827d5C4048c703A62E4" +} diff --git a/deployed/upgraded_goerli_1675766298752.json b/deployed/upgraded_goerli_1675766298752.json deleted file mode 100644 index caa050a..0000000 --- a/deployed/upgraded_goerli_1675766298752.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "LearnToEarn_proxy": "0x9b075656A75a7656749B20B3Edca1F05c6fc272B", - "LearnToEarn_verify": "0x522BC2d2A2563A146C129a3A8Aed212e23e591eD", - "NFTReward_deploy": "0xD35Eb1Bc1D82C1c31650D18A998cc7b2FCe588b2", - "TokenFactory_proxy": "0xf0c39397540324d22C44f0e7583D5C03a25d352b", - "TokenFactory_verify": "0x720a8D5D3A67eAa5Abb72d5525A432729c42A467" -} diff --git a/deployed/upgraded_goerli_1675853410270.json b/deployed/upgraded_goerli_1675853410270.json deleted file mode 100644 index 8d6da5c..0000000 --- a/deployed/upgraded_goerli_1675853410270.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "LearnToEarn_proxy": "0x9b075656A75a7656749B20B3Edca1F05c6fc272B", - "LearnToEarn_verify": "0x80c2df05B7886464D81818aEe79fe9bEa2B57D36", - "NFTReward_deploy": "0xD35Eb1Bc1D82C1c31650D18A998cc7b2FCe588b2", - "TokenFactory_proxy": "0xf0c39397540324d22C44f0e7583D5C03a25d352b", - "TokenFactory_verify": "0x720a8D5D3A67eAa5Abb72d5525A432729c42A467" -} diff --git a/deployed/upgraded_goerli_1676257492901.json b/deployed/upgraded_goerli_1676257492901.json index cf13c82..8dc9ab8 100644 --- a/deployed/upgraded_goerli_1676257492901.json +++ b/deployed/upgraded_goerli_1676257492901.json @@ -1 +1,7 @@ -{"LearnToEarn_proxy":"0x9b075656A75a7656749B20B3Edca1F05c6fc272B","LearnToEarn_verify":"0x2e82555B18f82E91408f129577937E3C145380ec","NFTReward_deploy":"0xD35Eb1Bc1D82C1c31650D18A998cc7b2FCe588b2","TokenFactory_proxy":"0xf0c39397540324d22C44f0e7583D5C03a25d352b","TokenFactory_verify":"0x720a8D5D3A67eAa5Abb72d5525A432729c42A467"} \ No newline at end of file +{ + "LearnToEarn_proxy": "0x9b075656A75a7656749B20B3Edca1F05c6fc272B", + "LearnToEarn_verify": "0x2e82555B18f82E91408f129577937E3C145380ec", + "NFTReward_deploy": "0xD35Eb1Bc1D82C1c31650D18A998cc7b2FCe588b2", + "TokenFactory_proxy": "0xf0c39397540324d22C44f0e7583D5C03a25d352b", + "TokenFactory_verify": "0x720a8D5D3A67eAa5Abb72d5525A432729c42A467" +} diff --git a/deployed/upgraded_mumbai_1676257422397.json b/deployed/upgraded_mumbai_1676257422397.json index f2d237f..2e5fe91 100644 --- a/deployed/upgraded_mumbai_1676257422397.json +++ b/deployed/upgraded_mumbai_1676257422397.json @@ -1 +1,7 @@ -{"LearnToEarn_proxy":"0xE03154264512Af7a13d194B67bC24B242831166E","LearnToEarn_verify":"0x64f00e6b5297a5c3c6fB93145242D475df9a2910","NFTReward_deploy":"0xc1E0437e46ee7d40728F055070CBBaa293db893a","TokenFactory_proxy":"0x409A82938cc91d9B3314c19884cda613Aaa69B7B","TokenFactory_verify":"0x4b669F76f58183bd890Def76c3e65C95d4b5481B"} \ No newline at end of file +{ + "LearnToEarn_proxy": "0xE03154264512Af7a13d194B67bC24B242831166E", + "LearnToEarn_verify": "0x64f00e6b5297a5c3c6fB93145242D475df9a2910", + "NFTReward_deploy": "0xc1E0437e46ee7d40728F055070CBBaa293db893a", + "TokenFactory_proxy": "0x409A82938cc91d9B3314c19884cda613Aaa69B7B", + "TokenFactory_verify": "0x4b669F76f58183bd890Def76c3e65C95d4b5481B" +} From a0aacdf32941c50945f3c9d2e775ddd47fdc784f Mon Sep 17 00:00:00 2001 From: phongho01 Date: Wed, 15 Mar 2023 09:24:07 +0700 Subject: [PATCH 05/13] add test --- contracts/LearnToEarnTest.sol | 56 +++++++++++++++++++++++++++++++++++ contracts/MyContract.sol | 34 +++++++++++++++++++++ contracts/test.py | 31 +++++++++++++++++++ 3 files changed, 121 insertions(+) create mode 100644 contracts/LearnToEarnTest.sol create mode 100644 contracts/MyContract.sol create mode 100644 contracts/test.py diff --git a/contracts/LearnToEarnTest.sol b/contracts/LearnToEarnTest.sol new file mode 100644 index 0000000..d2d4e8e --- /dev/null +++ b/contracts/LearnToEarnTest.sol @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.16; +import { LearnToEarn, Course } from "./LearnToEarn.sol"; +import { ERC721Test } from "./ERC721Test.sol"; + +contract LearnToEarnTest { + LearnToEarn learnToEarn; + ERC721Test erc721Test; + + constructor() { + learnToEarn = new LearnToEarn(); + learnToEarn.initialize(); + + erc721Test = new ERC721Test("Certificate", "PIONCE"); + } + + function _generateId(uint256 _nonce) private view returns (bytes32) { + return keccak256(abi.encodePacked(msg.sender, blockhash(block.number - 1), _nonce)); + } + + function test_createCourse() public { + address rewardAddress = address(0x1); + uint256 budget = 100; + uint256 bonus = 10; + uint256 timeStart = block.timestamp; + uint256 timeEndBonus = timeStart + 1 days; + bool isUsingDuration = true; + bool isBonusToken = true; + + learnToEarn.createCourse( + rewardAddress, + budget, + bonus, + timeStart, + timeEndBonus, + isUsingDuration, + isBonusToken + ); + + bytes32 courseId = _generateId(0); + + // Assert that the course data was stored correctly + Course memory course = learnToEarn.getCourseData(courseId); + assert(course.creator == address(this)); + assert(course.rewardAddress == rewardAddress); + assert(course.budget == budget); + assert(course.budgetAvailable == budget); + assert(course.bonus == bonus); + assert(course.timeCreated == timeStart); + assert(course.timeEndBonus == timeEndBonus); + assert(course.timeRemoved == 0); + assert(course.isUsingDuration == isUsingDuration); + assert(course.isBonusToken == isBonusToken); + assert(course.canMintNFT == false); + } +} \ No newline at end of file diff --git a/contracts/MyContract.sol b/contracts/MyContract.sol new file mode 100644 index 0000000..d5cd9c8 --- /dev/null +++ b/contracts/MyContract.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +contract MyContract { + uint256 public x; + + function setX(uint256 _x) public { + x = _x; + } +} + +import "github.com/crytic/echidna/blob/master/contracts/echidna.sol"; + +contract TestMyContract { + using Echidna for Echidna.Test; + + MyContract public myContract; + + function setUp() public { + myContract = new MyContract(); + } + + function test_setX() public { + Echidna.Test memory test = myContract.echidna_test(); + + // Ensure x is correctly set + test.call(myContract.setX(1)); + Echidna.assert(test, myContract.x() == 1); + + // Ensure x is correctly updated + test.call(myContract.setX(2)); + Echidna.assert(test, myContract.x() == 2); + } +} \ No newline at end of file diff --git a/contracts/test.py b/contracts/test.py new file mode 100644 index 0000000..b598c58 --- /dev/null +++ b/contracts/test.py @@ -0,0 +1,31 @@ +import echidna +from echidna import test, property + +echidna.config.ENVIRONMENT = "debug" + +contract_source = "" + +def test_set_value(): + # Create a new instance of the contract + my_contract = MyContract() + + # Set the value to 42 + my_contract.setValue(42) + + # Assert that the value was set correctly + assert my_contract.value == 42 + +# Define the Echidna property function +@property +def value_is_greater_than_100(): + # Create a new instance of the contract + my_contract = MyContract() + + # Set the value to 42 + my_contract.setValue(42) + + # Assert that the value is greater than 100 + assert my_contract.value > 100 + +# Compile and run the tests +echidna.testing.TestBuilder().build_and_run(contract_source) \ No newline at end of file From adce0b919b32ca9ddef5a0d295102e27b49f51e7 Mon Sep 17 00:00:00 2001 From: phongho01 Date: Mon, 24 Apr 2023 14:35:38 +0700 Subject: [PATCH 06/13] optimize contract --- .openzeppelin/unknown-31337.json | 3511 +++++++++-------- contracts/LearnToEarn.sol | 6 +- contracts/LearnToEarnTest.sol | 56 - contracts/MyContract.sol | 34 - contracts/ReBakedDAO.sol | 26 +- contracts/test.py | 31 - .../3ef46554809429534217e8863dee321b.json | 1 + .../7b56c664f87a319177abdc204d9723d0.json | 1 + scripts/deploy.js | 18 +- 9 files changed, 1948 insertions(+), 1736 deletions(-) delete mode 100644 contracts/LearnToEarnTest.sol delete mode 100644 contracts/MyContract.sol delete mode 100644 contracts/test.py create mode 100644 crytic-export/3ef46554809429534217e8863dee321b.json create mode 100644 crytic-export/7b56c664f87a319177abdc204d9723d0.json diff --git a/.openzeppelin/unknown-31337.json b/.openzeppelin/unknown-31337.json index 442d855..991728f 100644 --- a/.openzeppelin/unknown-31337.json +++ b/.openzeppelin/unknown-31337.json @@ -1,8 +1,8 @@ { "manifestVersion": "3.2", "admin": { - "address": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", - "txHash": "0x5ecc801bf21c1345c491e0e1bc3e02113f1fcee9b467a9316c5ef5173bbc8758" + "address": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", + "txHash": "0xebb9a87f16cab7d0b9f0548ec59302058a7894600f5a34cfb4ded0e0b668604f" }, "proxies": [ { @@ -45,11 +45,6 @@ "txHash": "0xa35eeba1c970924af4b166648eaf4e7007db20347f20ba94b6f1e5ee9bde0ae6", "kind": "transparent" }, - { - "address": "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "txHash": "0x36d6467a1ff80a8d5197f33720eb0a7a65564534aae615af91f7b5e22e697e36", - "kind": "transparent" - }, { "address": "0xfc073209b7936A771F77F63D42019a3a93311869", "txHash": "0xfcefe7b69f809b01c717ef4c8f35d1a3910e322f80f244c5d57e4f9d4bb6f4b7", @@ -190,11 +185,6 @@ "txHash": "0xb01d85c47c5640069caaab983ef167808dfc1292ba0d54d63c1e24b6c09452d4", "kind": "transparent" }, - { - "address": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", - "txHash": "0x100d8af1c373aa5b271ad11466cdd3a99afb1cf15d9dd359edcfc7e6a9eead92", - "kind": "transparent" - }, { "address": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", "txHash": "0xe8afcc19558d4940542d7f1e350b18bac085130c75addbea4572e61545b317c9", @@ -365,46 +355,16 @@ "txHash": "0x0eb581164360f9130df7c0520a7ea9b7e61c7f7175306e74d0fb9e5952262876", "kind": "transparent" }, - { - "address": "0x36b58F5C1969B7b6591D752ea6F5486D069010AB", - "txHash": "0x77955f18be953465fdfba3869851a61da3483304f33d867bb854e8a0eeeeebb9", - "kind": "transparent" - }, - { - "address": "0x4631BCAbD6dF18D94796344963cB60d44a4136b6", - "txHash": "0x2c51201773e4041addf08841f2f97a66a59b936a6dbad230b79ed95f66586c7b", - "kind": "transparent" - }, - { - "address": "0xD5ac451B0c50B9476107823Af206eD814a2e2580", - "txHash": "0xdc36fc11119087c39dd288bff7153b5fe318fb0fed6c606c04987a3679309eff", - "kind": "transparent" - }, { "address": "0xF8e31cb472bc70500f08Cd84917E5A1912Ec8397", "txHash": "0xd558f1c319e66685d36a630efbf03d38efb05bf660c084cb9b0df8c65c895cc1", "kind": "transparent" }, - { - "address": "0x3155755b79aA083bd953911C92705B7aA82a18F9", - "txHash": "0x81b7b19e0c6f877edb5ae8dc0fb87c5af4caa249b616b67c3be3945881e59944", - "kind": "transparent" - }, - { - "address": "0x2a810409872AfC346F9B5b26571Fd6eC42EA4849", - "txHash": "0x7947b76298aee9f7a73aa06145da71dc3435558384fd2a023e53a8e852731235", - "kind": "transparent" - }, { "address": "0xb9bEECD1A582768711dE1EE7B0A1d582D9d72a6C", "txHash": "0xbfc51da718eaa306db8d5a5eb8b105aa9059f42c7cf778bdef938eddeda9512e", "kind": "transparent" }, - { - "address": "0xeF31027350Be2c7439C1b0BE022d49421488b72C", - "txHash": "0x3f76c03550357d47d931757760ed503783dfb29af896437d3fc6669d4afaf96b", - "kind": "transparent" - }, { "address": "0x82EdA215Fa92B45a3a76837C65Ab862b6C7564a8", "txHash": "0xbf664206e4a5f8af048f789bfc50a3469c76a43f9538f08e4406c5f60ac1a21b", @@ -655,61 +615,6 @@ "txHash": "0x1d4dc2538c78ec1790bf9eca44dd3d4b7769cdade40d3274ecf09f80003fc10a", "kind": "transparent" }, - { - "address": "0x09635F643e140090A9A8Dcd712eD6285858ceBef", - "txHash": "0x60708e9e47518eb62504537ae1bae3767b8e2bda254ff921568bdfe6b9a1e313", - "kind": "transparent" - }, - { - "address": "0x9E545E3C0baAB3E08CdfD552C960A1050f373042", - "txHash": "0x1de9cb1f7e4f755e589a5f0c5094e1c708a8a205f40a7849cf22b7dea7b27c5d", - "kind": "transparent" - }, - { - "address": "0x998abeb3E57409262aE5b751f60747921B33613E", - "txHash": "0x8510a0c08d63f05cc7a96a52a460dadb296bf54c7f68ab4e8f174b1cac44a3c0", - "kind": "transparent" - }, - { - "address": "0x9d4454B023096f34B160D6B654540c56A1F81688", - "txHash": "0xa94ff011cbcd71fa6ce8ce89aae577e98b9f31544d26f5c75dba1af4e192e771", - "kind": "transparent" - }, - { - "address": "0x5f3f1dBD7B74C6B46e8c44f98792A1dAf8d69154", - "txHash": "0x010295717e3230911165de465d723e09313d0cb316046a4b0f80c168ad7e278e", - "kind": "transparent" - }, - { - "address": "0x7bc06c482DEAd17c0e297aFbC32f6e63d3846650", - "txHash": "0x80c8fe44b391afa59bb08a30c262bdf182d0d2ae63861c81a720996f56d0c7ec", - "kind": "transparent" - }, - { - "address": "0x162A433068F51e18b7d13932F27e66a3f99E6890", - "txHash": "0xa991832f57c78f8c357bf3227942ba72e1843c36c7596f69998735b2351f3e19", - "kind": "transparent" - }, - { - "address": "0x4C4a2f8c81640e47606d3fd77B353E87Ba015584", - "txHash": "0xa56826534cd4738b02ed6be3a6ece861775b4df243327e6e96dd1adcaed73960", - "kind": "transparent" - }, - { - "address": "0x4EE6eCAD1c2Dae9f525404De8555724e3c35d07B", - "txHash": "0x914f501692cab7b5f6335c0f43d1657ee2688189c65caca32e8443c3b3b77512", - "kind": "transparent" - }, - { - "address": "0x02b0B4EFd909240FCB2Eb5FAe060dC60D112E3a4", - "txHash": "0x94e4a150b8614054160a20335b3539235ce164fdedf1a97456bb0c29723d999a", - "kind": "transparent" - }, - { - "address": "0x045857BDEAE7C1c7252d611eB24eB55564198b4C", - "txHash": "0xe2aaa47a41d0d86c7158ffaf5a8f2b28958cfd3fae4e3791117e2dc19d3fe902", - "kind": "transparent" - }, { "address": "0x3904b8f5b0F49cD206b7d5AABeE5D1F37eE15D8d", "txHash": "0x2d9017374a85e53fe79ac630fe5d7500b3258ad1069adf1956008a73dc4483bd", @@ -1280,16 +1185,6 @@ "txHash": "0xdc3b81b45884090fe5a35306d7121c2ca10a407e33e8c89b88bccec2edecd61b", "kind": "transparent" }, - { - "address": "0xC9a43158891282A2B1475592D5719c001986Aaec", - "txHash": "0x517e8da3f92966228d54e0bc8bc4b6dbc2d1b18c7aeb913828f5303c28b9fc4a", - "kind": "transparent" - }, - { - "address": "0xD49a0e9A4CD5979aE36840f542D2d7f02C4817Be", - "txHash": "0xfc3851b26a8c3c8b854aee70105083dabfaff2c1613e0066f420a8d48ad4519f", - "kind": "transparent" - }, { "address": "0x1fA02b2d6A771842690194Cf62D91bdd92BfE28d", "txHash": "0x1ad4cef95297b71b8c663143482993d376728f25de5f9f20110127669abba585", @@ -1305,31 +1200,11 @@ "txHash": "0xf3eca548158049b1f0048a6997fbea759e968ce0825c2c2a9762ff3924dd1597", "kind": "transparent" }, - { - "address": "0xAA292E8611aDF267e563f334Ee42320aC96D0463", - "txHash": "0xf5637294647bba67876f0cbfc8db47a62202c68a8ef63c7ebe9d0052aad830e7", - "kind": "transparent" - }, - { - "address": "0x34B40BA116d5Dec75548a9e9A8f15411461E8c70", - "txHash": "0x3b7a1b8f5830cd5cd6e6accc5ef555d5b92633ee6e80075c47d7bfa408b0b335", - "kind": "transparent" - }, { "address": "0x3aAde2dCD2Df6a8cAc689EE797591b2913658659", "txHash": "0x6fa9829c694ec0543ed9b6462f27644a6fa19aa7ff2f467a33492569b4f53aa0", "kind": "transparent" }, - { - "address": "0xab16A69A5a8c12C732e0DEFF4BE56A70bb64c926", - "txHash": "0x308b9515f12ddc2b353ea87a2491aff0c6b9667c16cee6442505f7800c682b62", - "kind": "transparent" - }, - { - "address": "0x0ed64d01D0B4B655E410EF1441dD677B695639E7", - "txHash": "0x07be0059ec8fe2f9743772f6dfa536f0eaaa89af819cc7f490469b2251f8990e", - "kind": "transparent" - }, { "address": "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", "txHash": "0x144b6d82bf70c5b70ef3918eab1eb7de9df2b42a764f2a7feb3372fa862d37da", @@ -1390,16 +1265,6 @@ "txHash": "0x434d7e46b850bbb8c0fc69465cba499220b4c5dceabbc2968508810b55f7aab3", "kind": "transparent" }, - { - "address": "0xefc1aB2475ACb7E60499Efb171D173be19928a05", - "txHash": "0x05904562f43871501158669118f3875a388962a0e01da78518cd8c047617d0ce", - "kind": "transparent" - }, - { - "address": "0x8F4ec854Dd12F1fe79500a1f53D0cbB30f9b6134", - "txHash": "0xcda0cb97c6442686bbcb37be6465fb3b00c6139f899b3601922ae372d590094d", - "kind": "transparent" - }, { "address": "0x7B4f352Cd40114f12e82fC675b5BA8C7582FC513", "txHash": "0x6e66fb014731f12f4be34069f5e4ba809a5f213d695a1f45279b9909e7495cd2", @@ -1756,2033 +1621,2278 @@ "kind": "transparent" }, { - "address": "0xC32609C91d6B6b51D48f2611308FEf121B02041f", - "txHash": "0x70a0be82a35248f34d4c13f70b9363c0c6e464372fcfddfb039bf67dffcb9b90", + "address": "0x1c85638e118b37167e9298c2268758e058DdfDA0", + "txHash": "0x9bf930e349077e3ff7eeffbfbba2363d61052d1bcdb8f9208efeec2ab23a060f", "kind": "transparent" }, { - "address": "0x262e2b50219620226C5fB5956432A88fffd94Ba7", - "txHash": "0xc41e41f1828cc238b7eeb7030162548b1a3096b3e640dacf962688fa8ec6ce71", + "address": "0x18E317A7D70d8fBf8e6E893616b52390EbBdb629", + "txHash": "0x3f4f3399afa90c54c53fb08a722eb3fd61b89bc091f840541505c5fd6e047a30", "kind": "transparent" }, { - "address": "0x90c84237fDdf091b1E63f369AF122EB46000bc70", - "txHash": "0xa33df5bea63f000521da7f70b2b0c162af4523e9e6211d4c3b800271f1efca26", + "address": "0xD0141E899a65C95a556fE2B27e5982A6DE7fDD7A", + "txHash": "0x6060bf413116da11e06e3616f05c3a87f98722a46d961ff11319333338027d31", "kind": "transparent" }, { - "address": "0x3D63c50AD04DD5aE394CAB562b7691DD5de7CF6f", - "txHash": "0x8bc71b6aa97ba1cd877466742a504c49e417fe662669b4a2b081d0276bb43ea7", + "address": "0x5bf5b11053e734690269C6B9D438F8C9d48F528A", + "txHash": "0xa5a467edb2b8e6fc36ccc0a7df5053df14dae295182b9eac2118f7eb20ea0f38", "kind": "transparent" }, { - "address": "0x124dDf9BdD2DdaD012ef1D5bBd77c00F05C610DA", - "txHash": "0x8929fbedf33ce78fef48e3e3f0b8804428cefd6353607c2b1558b0a7de379b22", + "address": "0x38a024C0b412B9d1db8BC398140D00F5Af3093D4", + "txHash": "0xdffaf18c1a2fcbf735d6a24c2a5135dc8d3165db5e2b2bba7c65bb64a408037a", "kind": "transparent" }, { - "address": "0xe044814c9eD1e6442Af956a817c161192cBaE98F", - "txHash": "0x70988d9f2d2d26af925c3ca36f7197984bbbd88f0cd12d8eb152edd9650f1289", + "address": "0x40918Ba7f132E0aCba2CE4de4c4baF9BD2D7D849", + "txHash": "0x0800b0acd9e098b212854c2b3be2533deca93c7e7ac10cd9bfbf80cd9578c2f7", "kind": "transparent" }, { - "address": "0xe14058B1c3def306e2cb37535647A04De03Db092", - "txHash": "0xb0d3084fd2e7f02d0e0e65b435b76cfe658be19e4a2851e1a075a8e45fab01f1", + "address": "0x927b167526bAbB9be047421db732C663a0b77B11", + "txHash": "0xfedab89a178a0196780d98c58d80fd68a2b8bc9ba6f17179223bfcb73cd71f3d", "kind": "transparent" }, { - "address": "0x74ef2B06A1D2035C33244A4a263FF00B84504865", - "txHash": "0x070d9a910601f2a152b8ddc431485d82c605ffa67247ab4099bce33bae995849", + "address": "0xFD6F7A6a5c21A3f503EBaE7a473639974379c351", + "txHash": "0x9dd79df46f4513a6884f59b1578f630cc91a512148fe5b32f0c5a8237ee76c78", "kind": "transparent" }, { - "address": "0x6f2E42BB4176e9A7352a8bF8886255Be9F3D2d13", - "txHash": "0xcfa2a39f24fffade54a8bde60574921a0fcc0333a6686a2e7a749a7fd8ff6493", + "address": "0x5302E909d1e93e30F05B5D6Eea766363D14F9892", + "txHash": "0xffd1f7a850039148a5a2093b78014057cebe11141db050b153f800c36e60e559", "kind": "transparent" }, { - "address": "0xA3f7BF5b0fa93176c260BBa57ceE85525De2BaF4", - "txHash": "0x28edb49ea4da17eb7224a989214caa015e633e376a836f715eb44aff79f39be8", + "address": "0x4bf010f1b9beDA5450a8dD702ED602A104ff65EE", + "txHash": "0xacd1cd4bce8810cb305d8a8381aed445e9df6b5c0d54ac9c07e520831914ea50", "kind": "transparent" }, { - "address": "0xa195ACcEB1945163160CD5703Ed43E4f78176a54", - "txHash": "0xdb30c45dd74aaa6c74e8d73368a1b84f6b686e9cf711f34c160d1a9c7c44f854", + "address": "0x96F3Ce39Ad2BfDCf92C0F6E2C2CAbF83874660Fc", + "txHash": "0x2d103f965f9c046818bd827296f85bc5261fe0e8769f86813599ca7ad254c397", "kind": "transparent" }, { - "address": "0x6212cb549De37c25071cF506aB7E115D140D9e42", - "txHash": "0xb13bd3fbeda1eb370b19a3b200d9c30f0f235bf64bd7c371b44f6cfa4009c358", + "address": "0xde2Bd2ffEA002b8E84ADeA96e5976aF664115E2c", + "txHash": "0x17aea62be040b7ed6375a3e38f9fd9329cc81ef25d3143c2803b4540c7547e1b", "kind": "transparent" }, { - "address": "0x46d4674578a2daBbD0CEAB0500c6c7867999db34", - "txHash": "0xea55e2fa28bda07583ae50e6197d36e152ebea98cbc717779a2dba1a4afa7ef6", + "address": "0x870526b7973b56163a6997bB7C886F5E4EA53638", + "txHash": "0x0404ea5a423b5f41708bc2185bb930932ebee41e85fa3c618f74b9ab2c71a327", "kind": "transparent" }, { - "address": "0x9155497EAE31D432C0b13dBCc0615a37f55a2c87", - "txHash": "0xcb0e5e66e3e36b6637638d9912f7dc9e6077d25434f57a5ef66777fdf11d353e", + "address": "0xe1Fd27F4390DcBE165f4D60DBF821e4B9Bb02dEd", + "txHash": "0xfb340a83e7e06a5d2269b551a741c4fedadb3c40e693ef2afed148d49a3e406c", "kind": "transparent" }, { - "address": "0x04d7478fDF318C3C22cECE62Da9D78ff94807D77", - "txHash": "0xca805f12eba1cdb3b0688da98fbd3d7c13cf2b1825565d08c4fda1353fe47941", + "address": "0xB2b580ce436E6F77A5713D80887e14788Ef49c9A", + "txHash": "0xf7ca0b5f24813594d57078d0709bd9fc3950563561f452d856be890ca7aa0fda", "kind": "transparent" }, { - "address": "0xd9abC93F81394Bd161a1b24B03518e0a570bDEAd", - "txHash": "0xcdea17f15635d806d21c1123d599aa78918f980c5d7b060fa15ad2c4d7a5ca1c", + "address": "0x66F625B8c4c635af8b74ECe2d7eD0D58b4af3C3d", + "txHash": "0x6dfa6a5adf3e6ef965bb86d99bc1e441d33bb972b0db2008ff4af551217c6c3d", "kind": "transparent" }, { - "address": "0x89ec9355b1Bcc964e576211c8B011BD709083f8d", - "txHash": "0x52f2351c0a8004440ac354585694262a29ff53bbf2f563baccd95b545c5b38fa", + "address": "0x74Cf9087AD26D541930BaC724B7ab21bA8F00a27", + "txHash": "0x6ba07ee80482084fe95ba0f46a48b2dd23858c245561a067585e424d71f85a37", "kind": "transparent" }, { - "address": "0x72662E4da74278430123cE51405c1e7A1B87C294", - "txHash": "0xc2f3537b1faf08ecda000126ff0b59c254c3e383ec9613e52d792f798b8ce12f", + "address": "0xaca81583840B1bf2dDF6CDe824ada250C1936B4D", + "txHash": "0x17607281a38b7a468ddb59f7247b207a3acd5ad732bce62e698b43021a743ac4", "kind": "transparent" }, { - "address": "0x0B1a87021ec75fBaE919b1e86b2B1335FFC8F4d3", - "txHash": "0x7bc79f045871388eba66e28e5848278a8ed92c649c88090e2753314d7ca0d9c7", + "address": "0x5D42EBdBBa61412295D7b0302d6F50aC449Ddb4F", + "txHash": "0x04277c8081379b012223c4156af32009c25a38fa5f5479f39f77d591479e084d", "kind": "transparent" }, { - "address": "0x18eb8AF587dcd7E4F575040F6D800a6B5Cef6CAf", - "txHash": "0x8f91b9df55a5a391175d39d6af14e171e355e4f77410e71058707bd06f3d92c4", + "address": "0xB06c856C8eaBd1d8321b687E188204C1018BC4E5", + "txHash": "0xaa3e798e26d56391520a45271e41c9b2aae7299258d13b6364257b3d840a4a7b", "kind": "transparent" }, { - "address": "0xa4d0806d597146df93796A38435ABB2a3cb96677", - "txHash": "0x6150a435ab9ab235b3b484b4eaa69e9ecc683a243fe494b941b5ba45db6297cd", + "address": "0xAD523115cd35a8d4E60B3C0953E0E0ac10418309", + "txHash": "0xa6fd55f55f19e817327ca3d8e087a47c4527054bb8510f9475f873edfd511f15", "kind": "transparent" }, { - "address": "0xAE246E208ea35B3F23dE72b697D47044FC594D5F", - "txHash": "0x5add0c5c94a3ca5295eaebabc5a06c0922345c6393f7034a29f927dd723884ed", + "address": "0x02df3a3F960393F5B349E40A599FEda91a7cc1A7", + "txHash": "0xcc588c84ac89851e163c1854951039333ef9ec015b5a39ba2d47ab2c1c0d85f7", "kind": "transparent" }, { - "address": "0xD56e6F296352B03C3c3386543185E9B8c2e5Fd0b", - "txHash": "0xdafa411813f74a4b113df8db6b112d08a04ab7d417a6bcaae7411825897d0b83", + "address": "0x1780bCf4103D3F501463AD3414c7f4b654bb7aFd", + "txHash": "0x32082a83f4e385721acfa4d572545d296fb87077aaa4ae4bdd0fe8349d5d2c81", "kind": "transparent" }, { - "address": "0xEC7cb8C3EBE77BA6d284F13296bb1372A8522c5F", - "txHash": "0xdd6913bbb6f7a24ebc732df0f0d86b482da1dac9df3318d53c603330579ffd2d", + "address": "0x71089Ba41e478702e1904692385Be3972B2cBf9e", + "txHash": "0x6bc35f599376cd7a8a5c3c5bfddd558e525aa2f40870140b4bfc65079ea680c3", "kind": "transparent" }, { - "address": "0xCC5Bc84C3FDbcF262AaDD9F76652D6784293dD9e", - "txHash": "0x2f3cd5c20991536f62114a4d219f928bfbc6541093660f5dae88bcace0723c6a", + "address": "0xC66AB83418C20A65C3f8e83B3d11c8C3a6097b6F", + "txHash": "0x18acccf6b3d6d67e0f1ca027a6665b77515fd432c61f6c856d3f9f733f6ce996", "kind": "transparent" }, { - "address": "0x04F75a27cE2FDC591C71a88f1EcaC7e5Ce44f5Fc", - "txHash": "0xd147bef5d7caafc18b52c1c9a9dddf92ed1c66f2741b564b5c087cd81284e4a1", + "address": "0x12Bcb546bC60fF39F1Adfc7cE4605d5Bd6a6A876", + "txHash": "0x1ae72c0fa75b07421baec5176f11449049163d4b302d2e3fbaffc5a85c55fda6", "kind": "transparent" }, { - "address": "0x820638ecd57B55e51CE6EaD7D137962E7A201dD9", - "txHash": "0x20b851121bae9e302b821241c0b9c58f8d6e65357f7eb15eb837aeb11f1c6f64", + "address": "0x9BcC604D4381C5b0Ad12Ff3Bf32bEdE063416BC7", + "txHash": "0x2789c817ee012f138247e043298bb3eee8419c889ab017214d7e3c404bac39e0", "kind": "transparent" }, { - "address": "0x987Aa6E80e995d6A76C4d061eE324fc760Ea9F61", - "txHash": "0x047c5a10f7e30bcfc2b0e37428ffe48d082fdc24ef98da3a9a7d6bb67564cff7", + "address": "0xdFdE6B33f13de2CA1A75A6F7169f50541B14f75b", + "txHash": "0xac6064dc98f20d391ee7ac2731854bab8338363e5483f369be1bfb63237fc06d", "kind": "transparent" }, { - "address": "0x6B9C4119796C80Ced5a3884027985Fd31830555b", - "txHash": "0x7b26d1e0d28f3e2acd5c558a4dcaaa34a91c3b4b67e04bdb4ba503f9f7ffa530", + "address": "0x38A70c040CA5F5439ad52d0e821063b0EC0B52b6", + "txHash": "0x0a422be89d4e7af4231c5d13bfb187251caefa43cf5d40065ed7c7cb6a20f291", "kind": "transparent" }, { - "address": "0xA8d14b3d9e2589CEA8644BB0f67EB90d21079f8B", - "txHash": "0x92c7b4342dfcf6597b7cac2482f80a078ea6e4c35bfc970737598d07f2b3fdfe", + "address": "0xf090f16dEc8b6D24082Edd25B1C8D26f2bC86128", + "txHash": "0x152f117a03df4dfd48f7bec32d89ad962721c36d291a2006834fc3e830a508a2", "kind": "transparent" }, { - "address": "0x716473Fb4E7cD49c7d1eC7ec6d7490A03d9dA332", - "txHash": "0xec68f1272865dae247bf984d3a4f3911bbfd8ac52e910846a3c74c4238f3ce08", + "address": "0xe039608E695D21aB11675EBBA00261A0e750526c", + "txHash": "0x6ca6e3bb5d851dd2d2e5b4a6e093247ae96c9f73ba491463ec76075de204e188", "kind": "transparent" }, { - "address": "0x67Fc5Aa53440518DdbAd4B381fD4b86fFD77B776", - "txHash": "0xbc409c69b624d5e31c90f1c2cc06bbf1496451d2d69ba0bb40558141c0b76bdf", + "address": "0xe70f935c32dA4dB13e7876795f1e175465e6458e", + "txHash": "0x0c74101887a87cf9763e24adaf03e0109944319853ad45dca023ce4172fe8710", "kind": "transparent" }, { - "address": "0xf4e55515952BdAb2aeB4010f777E802D61eB384f", - "txHash": "0xcc824cedc9c2d1facfadac4953680de01820899687e7f1a916797910f647d8a1", + "address": "0xccf1769D8713099172642EB55DDFFC0c5A444FE9", + "txHash": "0xf3867ef4477ba07bebf0963147f049b0d3aaf8efb0df11986d21ce631428ad01", "kind": "transparent" }, { - "address": "0xcE7e5946C14Cdd1f8de4473dB9c20fd65EBd47d0", - "txHash": "0xe7f86a6f53575353097d896f51476ee50a7f962d8b5054b35385868d86e9c31c", + "address": "0x2625760C4A8e8101801D3a48eE64B2bEA42f1E96", + "txHash": "0x72b9d08f5b683e10e64aee406373445eb543f8785743ea6088af4e5d637b0028", "kind": "transparent" }, { - "address": "0x4E76FbE44fa5Dae076a7f4f676250e7941421fbA", - "txHash": "0xa694075135c85059552d6d41cf1e0603006dfddad93e9d31940209e5a037e582", + "address": "0xD6b040736e948621c5b6E0a494473c47a6113eA8", + "txHash": "0xafe189b02ee76fcec2fe53bad7127fb911d5fbfec73eaae167e8df3a8990e88c", "kind": "transparent" }, { - "address": "0x49AeF2C4005Bf572665b09014A563B5b9E46Df21", - "txHash": "0xb5703d5b195a9de45ada2362b8de665b31de3a2a45a0bee421b455ef4735994a", + "address": "0xAdE429ba898c34722e722415D722A70a297cE3a2", + "txHash": "0x48139fd558cc46bf5f20c1a35f1b042811ad9770511ecbebe19320875fce51c4", "kind": "transparent" }, { - "address": "0x72F853E9E202600c5017B5A060168603c3ed7368", - "txHash": "0xa1d321550ab3736a78ab228c2782d4459da284d18eab33c32996da30c393bc4f", + "address": "0xcE0066b1008237625dDDBE4a751827de037E53D2", + "txHash": "0x68d6e0a57d82f160717ec48fb5cdb714bc5fc3d5cb69e01480268b1903f83137", "kind": "transparent" }, { - "address": "0x26Df0Ea798971A97Ae121514B32999DfDb220e1f", - "txHash": "0xd0eda354fc5fd272e500781ee6691c27c7e0e0d3483775467aa2356eb335a286", + "address": "0x87006e75a5B6bE9D1bbF61AC8Cd84f05D9140589", + "txHash": "0xec0605d88a6fddef2c38abc9b9e7c63368299366fec44e0fdd872ec0ca375b38", "kind": "transparent" }, { - "address": "0xa138575a030a2F4977D19Cc900781E7BE3fD2bc0", - "txHash": "0x9fdee9dd06fdc759fc91f471d1b3684b19d1d8270be49e97fb8d39f9d3f93955", + "address": "0x8fC8CFB7f7362E44E472c690A6e025B80E406458", + "txHash": "0xb9b4bce8c70fc10b877f425ddb6dee9806e6aea3389bf7a7c1df077758033a4c", "kind": "transparent" }, { - "address": "0xf524930660f75CF602e909C15528d58459AB2A56", - "txHash": "0xfab41dd05bc5da1b889f23d82f24025e14de5ad22dc91ca2f16b445bb1fbe2e3", + "address": "0x359570B3a0437805D0a71457D61AD26a28cAC9A2", + "txHash": "0xfb4f1077ab1b072fe96b3d854af2862e951a2af5b3f67141b266731db1ffae9c", "kind": "transparent" }, { - "address": "0xAAF0F531b7947e8492f21862471d61d5305f7538", - "txHash": "0x7722858688206c872d784220a722921ea7369e521143aae389e5777d73ba06ab", + "address": "0xDde063eBe8E85D666AD99f731B4Dbf8C98F29708", + "txHash": "0xe9bf021cba2f3fe6234953cafde79a639424657ece28771cc587d7f77a57c4da", "kind": "transparent" }, { - "address": "0x81f4f47aa3bBd154171C877b4d70F6C9EeCAb216", - "txHash": "0x1ab41f19451d90156ca7762cc60adc82fb6e79c7c145313095dbac5c8dc3d13b", + "address": "0x70eE76691Bdd9696552AF8d4fd634b3cF79DD529", + "txHash": "0xe76fbd50ae3890e995fa15f909eb8807b4b78534b1b56b6274c9cf3aa168a0ce", "kind": "transparent" }, { - "address": "0xE5b6F5e695BA6E4aeD92B68c4CC8Df1160D69A81", - "txHash": "0x59667bbc3b42fbaa3610a41927d78ff5babfa6ad716b138346269f571a107798", + "address": "0x67aD6EA566BA6B0fC52e97Bc25CE46120fdAc04c", + "txHash": "0xc88e5a4e99f67088f285fee03d5a6799a1cb8fbc0f545ced922630e25b9c4908", "kind": "transparent" }, { - "address": "0x01c93598EeC9131C05a2450Cd033cbd8F82da31e", - "txHash": "0xbfee457090296d4f457c01143b26674dfd284653ff19b12a86af12ac78702e24", + "address": "0xcD0048A5628B37B8f743cC2FeA18817A29e97270", + "txHash": "0x0c12ca54980b5c0a39afed2241d3700d6f3b80c67f6c5ccdbc39bd19c5405a3e", "kind": "transparent" }, { - "address": "0x33f4f8bf90d8AA3d19fF812B50e79c15Df0d0b03", - "txHash": "0xb79751c0d739d4015945684c70bbb88a88a1cbf11bbdbfc838b0a4a4953e0e09", + "address": "0x8bEe2037448F096900Fd9affc427d38aE6CC0350", + "txHash": "0xd139fa6a4e828672ef5e2cb136b7ecee2412747f51f2831b3c76f909e78243d6", "kind": "transparent" }, { - "address": "0xE57A305f34fD0B6A55A66e8ec9559e6573100cBe", - "txHash": "0x8f9ca6b1d40672c1f6d8c6b40f9d7005a5816e211b507c6a317bcc1238477e2a", + "address": "0xa722bdA6968F50778B973Ae2701e90200C564B49", + "txHash": "0x14451b9af518e5cc69627e2ea96b8fe691227543d1f5a3c7bb702a4e7b02648e", "kind": "transparent" }, { - "address": "0xB354ECF032e9e14442bE590D9Eaee37d2924B67A", - "txHash": "0x02d5b9851d21dc0906a8fa4a11ee0a46c257702e35d1424f62d8c1e6e8cc40f7", + "address": "0x967AB65ef14c58bD4DcfFeaAA1ADb40a022140E5", + "txHash": "0x5e7bebb42e097a68d60a8c93031bd18d819ba32be239157797acf92271c22f79", "kind": "transparent" }, { - "address": "0x00436c9F57dfFd96cECd129c04D9E488c57266cF", - "txHash": "0x8ee64dc49999cd5a570d1d2bf0935c90bc44cb3302ae9fdb07026fb5636215f5", + "address": "0x0aec7c174554AF8aEc3680BB58431F6618311510", + "txHash": "0xccdda93b1b46617eb3d9ea3f34bf305ef0e96686ffed13ff029118049ba3c801", "kind": "transparent" }, { - "address": "0xD962a5F050A5F0a2f8dF82aFc04CF1afFE585082", - "txHash": "0xd3cfa390401b3689f650f5a84a471fb1dac3144f814ba5c68a0ca96dbe1ea194", + "address": "0x871ACbEabBaf8Bed65c22ba7132beCFaBf8c27B5", + "txHash": "0xdb5eb2f70aa06917ee4445d749d10f619808e9eaa262b448e38e5b8ff8e331e3", "kind": "transparent" }, { - "address": "0x0BbfcD7a557FFB8A70CB0948FF680F0E573bbFf2", - "txHash": "0x0d596ceb8cf21d4405c76cb68485e6ebe70ff2213a0a10a03e3baedfb87e27fc", + "address": "0xC1e0A9DB9eA830c52603798481045688c8AE99C2", + "txHash": "0x478997b2f71a79609ab722ee6a40227463ce710b63055d37c51e6990ebaa1897", "kind": "transparent" }, { - "address": "0xdABF214E5a833269c192D9d70efDdE174680628D", - "txHash": "0x470e5e8b323b743fc39c839e15ffa873fcd4db079c430ff8184dbf4b37b50cc7", + "address": "0x1c9fD50dF7a4f066884b58A05D91e4b55005876A", + "txHash": "0xb0c01a75f5d06b74d0a69bd6706bdae5800fc3b0088ed0fa5a7bdb2bcb678392", "kind": "transparent" }, { - "address": "0x81F82957608f74441E085851cA5Cc091b23d17A2", - "txHash": "0x4190146c896598c68c29d0377f24ef245c16ec09a90ece513d33d0eeada2ad1f", + "address": "0x71a0b8A2245A9770A4D887cE1E4eCc6C1d4FF28c", + "txHash": "0x847dc34dd64de21f428914a22de9aee1fbcb7ade2fbe20f42d4814773a29a06a", "kind": "transparent" }, { - "address": "0x9a8164cA007ff0899140719E9aEC9a9C889CbF1E", - "txHash": "0x857a5aaacf569766236e5aebc09a04b349a45c69e271650b6a97f80f0b7d4ac3", + "address": "0xAe120F0df055428E45b264E7794A18c54a2a3fAF", + "txHash": "0x0989e27c7e04a3f37c145381d55a2e79b970665f72cf06c2c95a15ff5692611a", "kind": "transparent" }, { - "address": "0x69F94e46cbC82Ab02781ac4FaFc3580d21f1a888", - "txHash": "0xb4f5e349c9872dc25e0f63cafbb1c4880d4290914029334e8d19e78783bfbb4b", + "address": "0x9Fcca440F19c62CDF7f973eB6DDF218B15d4C71D", + "txHash": "0xef03ca6a3850c9b251622273dfec115bba85e64e5eaf2bd2cbf03789b8d3f132", "kind": "transparent" }, { - "address": "0x5BFaaA02cAb795d576276a19CB1c2D2D2d652717", - "txHash": "0xfe7ea834e5ab2705869ed8875fbfba0931c19ab8ad3e1f9df2d0e97d3d678aed", + "address": "0x22a9B82A6c3D2BFB68F324B2e8367f346Dd6f32a", + "txHash": "0x37f187c2f8bc58ceb77dd8e249af973553d036311c473a719b93660e3eacb348", "kind": "transparent" }, { - "address": "0x0462Bc7390a33C8BB748d5c2ad76E93690A365c5", - "txHash": "0x37f058d7bc14303a55d8f1dc079e5c99cd48581b213fe98a49d8a214640925ca", + "address": "0x7C8BaafA542c57fF9B2B90612bf8aB9E86e22C09", + "txHash": "0xb575ae62efa1837f5c31c779abef6dc3c8b9b83826eeb3bac77d7f67098c5747", "kind": "transparent" }, { - "address": "0x1c32f8818e38a50d37d1E98c72B9516a50985227", - "txHash": "0x53615903713668531b92a8d168c9802444e3510634f846636bed3f19c3a62cb6", + "address": "0x5e6CB7E728E1C320855587E1D9C6F7972ebdD6D5", + "txHash": "0xfd3ffe24e7fe01c6b8ea37c0b7d1c6499e892354a71af55fb35ea713325fc9a7", "kind": "transparent" }, { - "address": "0x0BFC626B583e93A5F793Bc2cAa195BDBB2ED9F20", - "txHash": "0x68f9e119ad36bd813c75f168bcc18f2d6ebe9311ccf6c0f197973ea1391338bf", + "address": "0x95775fD3Afb1F4072794CA4ddA27F2444BCf8Ac3", + "txHash": "0x9ac0d8bec6bbc57798045fc72390dbd0a5688939909668919396af33be257765", "kind": "transparent" }, { - "address": "0x76d05F58D14c0838EC630C8140eDC5aB7CD159Dc", - "txHash": "0x8a61e302d71aaa9b13882efd7c6c46b94268d0dd587ba5889e53e4a28c3f8c0b", + "address": "0xd3FFD73C53F139cEBB80b6A524bE280955b3f4db", + "txHash": "0xc6fc726e4032525f7d70dd58dc916d78f4c7740e4d7cb19beed045b50327af69", "kind": "transparent" }, { - "address": "0xd2983525E903Ef198d5dD0777712EB66680463bc", - "txHash": "0x5fca9229b20da44f3144666bb04fcc9cbf3275b53a3b01aab4102eff23e05010", + "address": "0x9fD16eA9E31233279975D99D5e8Fc91dd214c7Da", + "txHash": "0x7839c98420a48f4de43fdc6e918ce23eba94cb3f75e57d46e5ee0e66d19b181d", "kind": "transparent" }, { - "address": "0x862E3acDE54f01a4540C4505a4E199214Ff6cD49", - "txHash": "0xa8936ec9b5451e5e77ec4e47dcf9d562e3e30d094f9d5c84675c5b9d772df54a", + "address": "0x987e855776C03A4682639eEb14e65b3089EE6310", + "txHash": "0xe35ba4df7d77917cdbea12d00daaebf30ae71f7a04a0b5eca1a8acac96331d33", "kind": "transparent" }, { - "address": "0x37453c92a0E3C63949ba340ee213c6C97931F96D", - "txHash": "0xbf85ab6da2b534336e81a4d7331cc65dad37d052986942e7c3007b6bc2af08bc", + "address": "0xE8F7d98bE6722d42F29b50500B0E318EF2be4fc8", + "txHash": "0x85db7c964485b62786ab2fdfeeb121faf2f81aeda226ec9f8986e6653b52a847", "kind": "transparent" }, { - "address": "0xAAd4F7BB5FB661181D500829e60010043833a85B", - "txHash": "0xe1b60763743ba6c1a194aea827521bb61cc90634d5e3ab227e4f89cd3d80fa0d", + "address": "0x2c8ED11fd7A058096F2e5828799c68BE88744E2F", + "txHash": "0x941114205ffe600bf090358d1005ea173964618bed9243cdb969da7feb51c1a8", "kind": "transparent" }, { - "address": "0x2B64822cf4bbDd77d386F51AA2B40c5cdbeb80b5", - "txHash": "0x77e1ead4aa50f7b80821e8d2e6e034d74cbc96744bb87f970c25389eddbd312b", + "address": "0x75c68e69775fA3E9DD38eA32E554f6BF259C1135", + "txHash": "0xe1f8794a28c285b7e7271eaca153b15fd65b1681b49d31c132779d4799e4372b", "kind": "transparent" }, { - "address": "0xCd9BC6cE45194398d12e27e1333D5e1d783104dD", - "txHash": "0xb531c3c5ac8c8360e4338e2f8697cb2555bb9d6fcaf7c6639f017873c13e3a34", + "address": "0x975Ab64F4901Af5f0C96636deA0b9de3419D0c2F", + "txHash": "0x6a53ae4ff1a560bee86ce5f5c50c4ceeb07cff127bba709f5ba7baa354ef1428", "kind": "transparent" }, { - "address": "0xd8E4Af8145A8288537B85878bb2371fa070Aa5eF", - "txHash": "0x650df3dbd878f14853e549e9a828a27a0d9b001a84ac53969875d2e5060a8a71", + "address": "0xCd7c00Ac6dc51e8dCc773971Ac9221cC582F3b1b", + "txHash": "0x76e0ddbfa83261b6824a4ccc92f7a6f652d9202e944f6bd96b5ac9ca11816649", "kind": "transparent" }, { - "address": "0x86c64cB21f88fA9E2c46b61c35889E75f08FDce1", - "txHash": "0xaa232771cb0aab5d40e983cee938c6c589702bc70ea2818dadb0a776f72d9bcd", + "address": "0xdF46e54aAadC1d55198A4a8b4674D7a4c927097A", + "txHash": "0x8bb6551888a457699fa92ba5a7168b325269b39f17e5e17a2c79e79565a007b1", "kind": "transparent" }, { - "address": "0xA901DA770A472Caf6E6698261BB02ea58C5d3235", - "txHash": "0x3580fa8e1c8bd78af16f2e81a57fe13a2606ff19120c53e589b276ea03b3de47", + "address": "0xFD2Cf3b56a73c75A7535fFe44EBABe7723c64719", + "txHash": "0xf25fe32af8db5801973534b21dbfdf4a485ed894386dacb32846dc468eabf726", "kind": "transparent" }, { - "address": "0x5f58879Fe3a4330B6D85c1015971Ea6e5175AeDD", - "txHash": "0xd4e299027e3d8ccfdaad0081a0f32e7351edfbe7b49618abf9c5f45fe2ad0bb3", + "address": "0x666D0c3da3dBc946D5128D06115bb4eed4595580", + "txHash": "0x990986f98ee30a342eca2b5250cec0c855a81f3bbfcb0ba3e60d7fe34c12680d", "kind": "transparent" }, { - "address": "0x63ecE4C05B8fB272D16844E96702Ea2f26370982", - "txHash": "0x8bfdaaa815196dee2069ea6bd1f388b71eadbd2c96d55299be359d2af0d050b1", + "address": "0x1E3b98102e19D3a164d239BdD190913C2F02E756", + "txHash": "0x218cb627e617e13d7c651d4754307bfee4bc77cd055f4e1a721115b1e96a9c8c", "kind": "transparent" }, { - "address": "0x8dF2a20225a5577fB173271c3777CF45305e816d", - "txHash": "0x9b7b3096794a63b4d51450921955e955d354bc25923cfbf3e31c9a343e5ca062", + "address": "0x286B8DecD5ED79c962b2d8F4346CD97FF0E2C352", + "txHash": "0x769b0da0d6384519ddd2bc2b757e9ba458dd8f24b96bdec6fd5a5683ed24a892", "kind": "transparent" }, { - "address": "0x645B0f55268eF561176f3247D06d0b7742f79819", - "txHash": "0xd49f19eb244b8dc40c25549188fb81cf117b7f6b601272a263368be772753c87", + "address": "0x70E5370b8981Abc6e14C91F4AcE823954EFC8eA3", + "txHash": "0x2722d3f8bc7cdf5d333ae69f9e5d39e664ac0c54ce2557be4557842fcb50ee85", "kind": "transparent" }, { - "address": "0x8AFB0C54bAE39A5e56b984DF1C4b5702b2abf205", - "txHash": "0x1ae3d3f8208219f0eaa0ba6a8f7324ecac2ac3161b924bc0109e8b111d593b24", + "address": "0x9338CA7d556248055f5751d85cDA7aD6eF254433", + "txHash": "0x847aea5e4fa487a54f832e29eeaed9425f0880451c1fdc0bbaacb62c3e6f84ac", "kind": "transparent" }, { - "address": "0x6B763F54D260aFF608CbbAeD8721c96992eC24Db", - "txHash": "0xfec94df2cdf86ef503b2038fac1771197448f427c03125a3f02018b554be3eaa", + "address": "0x7Cf4be31f546c04787886358b9486ca3d62B9acf", + "txHash": "0x463c66d90784b195990ea7782050234b28a29767cf23acb77f8f3fb1cdf61ea8", "kind": "transparent" }, { - "address": "0x226A19c076a3047a53e5430B14bcDB42dbccA159", - "txHash": "0x521a9f7b8f4ec1ce512f91f2f55becb4db7210ff3b26c5981588578708db5215", + "address": "0x0c626FC4A447b01554518550e30600136864640B", + "txHash": "0x134a79d4bad66a96f13a8febc5c4bd2c6baa72fb676ff5ef0e8fb968c7d3831a", "kind": "transparent" }, { - "address": "0x093D305366218D6d09bA10448922F10814b031dd", - "txHash": "0xfa216cf7cdd8ec029f6b24e2e93d67ad2a347a0142111d4f3a6867fd513a2e5e", + "address": "0x2A590C461Db46bca129E8dBe5C3998A8fF402e76", + "txHash": "0x44fadbcb000c9a951e204ab01019e52b9f93f4d68a4d811c8323d4fb92fef9f3", "kind": "transparent" }, { - "address": "0x9581c795DBcaf408E477F6f1908a41BE43093122", - "txHash": "0xc6c8387f568c70e4d4b9d454342d31e35875c9891e1056a7f61c1714925cc1fb", + "address": "0x2F54D1563963fC04770E85AF819c89Dc807f6a06", + "txHash": "0x25ccc006b8c84360f40cf9c6d586b455ace41b9866d8c4e6355a854c4cdc4a5c", "kind": "transparent" }, { - "address": "0x8a6E9a8E0bB561f8cdAb1619ECc4585aaF126D73", - "txHash": "0xa9ddbbc21bf7ee3e394de35131710093b2483877461ca60e17d051aee7278fec", + "address": "0x9849832a1d8274aaeDb1112ad9686413461e7101", + "txHash": "0x1336cc9c961af9a0d20467a32c163c1cdba6048122c30063d894bc23c5af214c", "kind": "transparent" }, { - "address": "0x492844c46CEf2d751433739fc3409B7A4a5ba9A7", - "txHash": "0x186ef67eb8696eaa83947f13acff4b8b94d48ff2e35a9a7a7959754d75c35072", + "address": "0x4eaB29997D332A666c3C366217Ab177cF9A7C436", + "txHash": "0x1b6cda7c67148e59253b44611a0159788cbfbb5a8c34c75e141f0d5fc02bc5c2", "kind": "transparent" }, { - "address": "0xC1dC7a8379885676a6Ea08E67b7Defd9a235De71", - "txHash": "0x652e1e23a142b0b237eaac3fdcd20503b88139c8898ddee803dc056f6d1f97f9", + "address": "0x627b9A657eac8c3463AD17009a424dFE3FDbd0b1", + "txHash": "0x9d1710379596039ab6933a88bae81be6280fecef635c5d3a75c87a4232aeaacc", "kind": "transparent" }, { - "address": "0xCC9676b9bf25cE45a3a5F88205239aFdDeCF1BC7", - "txHash": "0xa7f7e2fe37992e5a91f9c97e65fe685f27d5e40a5350132a3978a8dce563ad22", + "address": "0x8E45C0936fa1a65bDaD3222bEFeC6a03C83372cE", + "txHash": "0x491d96afc24bce38448191268f69e7a2b155a0e9afe5f717d0d1924d6852d797", "kind": "transparent" }, { - "address": "0xDC0a0B1Cd093d321bD1044B5e0Acb71b525ABb6b", - "txHash": "0x68bbe7e22f1d23d4ab2042d00fe1411037fa13047c9237241d9231d633eadfd2", + "address": "0x172076E0166D1F9Cc711C77Adf8488051744980C", + "txHash": "0x64b492e1258ec68345ca901a22d89524a7bbdc5f1ac883f9bbd06ff455a23502", "kind": "transparent" }, { - "address": "0x1D87585dF4D48E52436e26521a3C5856E4553e3F", - "txHash": "0x35a809f62b98d43e497cd90531ab39b73c44fba8c0af9e3af53d51f72727501c", + "address": "0xc96304e3c037f81dA488ed9dEa1D8F2a48278a75", + "txHash": "0xbd77b847b02a9cf9f9cd94020d7187470013980768dba6c3698f5ffa1cfcdbf2", "kind": "transparent" }, { - "address": "0x2B8F5e69C35c1Aff4CCc71458CA26c2F313c3ed3", - "txHash": "0x9d3e02afc58219194c46d7a83fc71e4e34c0dc1ef13766fe33d1bce6489683bc", + "address": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", + "txHash": "0xd737a778d62a7b6d5d916196842651534a6ebbbd7265d205a4f2a9737bd8484a", "kind": "transparent" }, { - "address": "0xA899118f4BCCb62F8c6A37887a4F450D8a4E92E0", - "txHash": "0x47bda590191ddffd55a1885a85d0983ce4acb92275cc4f9a3fb61acd3e008fd4", + "address": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", + "txHash": "0x362e37fc25a891bea8ec6be478c0274411589986fa5032b27c5f095ce43fe47e", "kind": "transparent" }, { - "address": "0xD185B4846E5fd5419fD4D077dc636084BEfC51C0", - "txHash": "0x1b07ab0bc559e44322a87b7fefe57fd39637fe6b897c58dee261ea9121a493f8", + "address": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", + "txHash": "0xff41c51821a448d0b0fc7f74302d567a4bdc9cf14798d804bf6093729ea12d97", "kind": "transparent" }, { - "address": "0xBCF063A9eB18bc3C6eB005791C61801B7cB16fe4", - "txHash": "0xb01249b359a7a83e23bdd6d016c064d5566d7cb218dffa83ea7084a9e32c818b", + "address": "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", + "txHash": "0xa1cf1eead46119f56d8fe9d68772769f5dbfb78d3634e72e64f93cc3c9397c79", "kind": "transparent" }, { - "address": "0x364C7188028348566E38D762f6095741c49f492B", - "txHash": "0xcd76725337e2d8a57f52764c8cf2cb46a9bd820ce4fd17666ae591cd5b286b7b", + "address": "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F", + "txHash": "0x25d83dcd89de18e9d04a469fe987a7994ff10708913ac5b51c78f5649469ebc8", "kind": "transparent" }, { - "address": "0xF2cb3cfA36Bfb95E0FD855C1b41Ab19c517FcDB9", - "txHash": "0x9035914873124ff056a33a021a44a219aabf39a5275e76dba3ebfba68f24a46b", + "address": "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB", + "txHash": "0x786d75624c914e2bd4fa6476594bb9a8d4242a0a50cf0bd30cdcc096784ae94c", "kind": "transparent" }, { - "address": "0xAB8Eb9F37bD460dF99b11767aa843a8F27FB7A6e", - "txHash": "0xa11e81566363f7f230efe90341e55ea0fd15afb9d3271debf333c10dc1ed7f96", + "address": "0x95401dc811bb5740090279Ba06cfA8fcF6113778", + "txHash": "0x54c0290e27f3ed4099f86a34c00c99291550a8e25cc991e05288fa39e751dfa3", "kind": "transparent" }, { - "address": "0xbB57FE325e769DEDB1236525a91cDEd842143fA7", - "txHash": "0x9ac319a1245d959286ae05898c7fb2700bb904ccb709c5b8cdf814109f2218d5", + "address": "0x8f86403A4DE0BB5791fa46B8e795C547942fE4Cf", + "txHash": "0x6a0ed12fc930254da04ff3bca52be0ab4c0d877a2f5ae8ebfe0ba919014045e5", "kind": "transparent" }, { - "address": "0x6712008CCD96751d586FdBa0DEf5495E0E22D904", - "txHash": "0x50270bae5b4851ae7b3fa95817c6b047b0514032a075eaff11546113075c2489", + "address": "0x1291Be112d480055DaFd8a610b7d1e203891C274", + "txHash": "0x922d13462af2801b880ec1433394365795d8c0c53b534c4a68c3b96cb303213a", "kind": "transparent" }, { - "address": "0x1f9c84B161b2c7FFB540BC5354543108cCE37df1", - "txHash": "0xb030a77c749fa2b3a70ae7d43dfdf070bf5b7cf8ac2d2485573724d26390d498", + "address": "0x7969c5eD335650692Bc04293B07F5BF2e7A673C0", + "txHash": "0x79498917eec9f2e01cf6892f2cff7190dee566a4d85eb11fa4e363b61f69c58c", "kind": "transparent" }, { - "address": "0x87E8f332f34984728Da4c0A008a495A5Ec4E09a2", - "txHash": "0xb1ce0e3a6e4df055df0a2c8973acc3360f9dbe7b990d7ddebea8c8a820926e89", + "address": "0xB0D4afd8879eD9F52b28595d31B441D079B2Ca07", + "txHash": "0x08eea8b0d9672112b62eeadcdef55bb5428991d4f972c9a8986a209c7d44f7cb", "kind": "transparent" }, { - "address": "0x1E2e9190Cea3A97b5Aa85d9757117F499D31C47d", - "txHash": "0x6464500c3858597839c521bb841a23db0033086787eaa169d397cedf650dca54", + "address": "0x04C89607413713Ec9775E14b954286519d836FEf", + "txHash": "0x09ec33b783e2f41c1f12bc1a7bd4c9bfde51e98fb090a7d137164120ee0ee531", "kind": "transparent" }, { - "address": "0x53DaB165b879542E9aDFC41c6474A9d797B9b042", - "txHash": "0x2f77810312700b228cf19587fe7081c447ce3e86640df5e84af29e464e2d8bc0", + "address": "0x51A1ceB83B83F1985a81C295d1fF28Afef186E02", + "txHash": "0xf3d90af478c01e0dd7837cc1c803bcc9a3537279495ece64d47293539882cf6d", "kind": "transparent" }, { - "address": "0x4BEA9aAe24187d6128403DC556510A18d727871a", - "txHash": "0xbe4dd20817c400315d8a3fe60a0c148fc3b6f7ca89bb6156bf712299a67c23d2", + "address": "0x46b142DD1E924FAb83eCc3c08e4D46E82f005e0E", + "txHash": "0xbbaef08a9e4e6eb54e33c516335a05a8d65eba6561012b6a92bf1bbfe246c7f6", "kind": "transparent" }, { - "address": "0x64386BC53c213F23C6960d3e080139A0f9Ef1733", - "txHash": "0x80ad44dc7957e9e2c6916a6f530de95d9148bd9400747a18c5059a697376a5ed", + "address": "0x49fd2BE640DB2910c2fAb69bB8531Ab6E76127ff", + "txHash": "0xf4372e7967f2de46a4f1b99152e749a9e45ba244ea7572208f7145fb98a2bf7c", "kind": "transparent" }, { - "address": "0x295129609d6876f5ECC62052Ba6bc082139A982c", - "txHash": "0x0fa37f342776f1f07e8aba35d5469d36de660c754044650fd124b676fef786ba", + "address": "0xCace1b78160AE76398F486c8a18044da0d66d86D", + "txHash": "0x59d07830296af664a104c3be448fe953811cedaccb09153f221ed83482fe547a", "kind": "transparent" }, { - "address": "0x737b8F095E3c575a6Ae5FE1711AdB8F271E20269", - "txHash": "0x2435764c5ab4c316e60be1ac39887f57ee3554e1586db2572e0464040753d81f", + "address": "0x3347B4d90ebe72BeFb30444C9966B2B990aE9FcB", + "txHash": "0xfffa8ad1ecdd3252e0329a0f749797401f5dd07e84195b01cb663e3605d83bae", "kind": "transparent" }, { - "address": "0x0Ac85d55ebFc7f7b0cF4c13bb3BD6Eaf3909d62d", - "txHash": "0x359a5272e53fb90671ada54f9c99b7acaa94ce392ab8c75fba9bc291c90233ce", + "address": "0xB82008565FdC7e44609fA118A4a681E92581e680", + "txHash": "0xa47686b1f474ae2ec468eb702e1cbee2f4141101734b1e7a9a5b8167a7d0e74e", "kind": "transparent" }, { - "address": "0x8C08821f5f94b519c853486eB131667AA528A460", - "txHash": "0xcd4c8f8be2ed5ae1c1f4c0c0c0d833241e57baf00fc7a2dca9790e82efe66928", + "address": "0x976fcd02f7C4773dd89C309fBF55D5923B4c98a1", + "txHash": "0x706a9714453b986e428be4af3c66867ba05429d80552a7a039ed504dbc140bf8", "kind": "transparent" }, { - "address": "0xcf23CE2ffa1DDd9Cc2b445aE6778c4DBD605a1A0", - "txHash": "0xbb260c19ff1d825440d04e37af93b6de3525284e6cbfbefe95c92f91e744de0a", + "address": "0x26B862f640357268Bd2d9E95bc81553a2Aa81D7E", + "txHash": "0x2f1558d3e8407915c820cb4eeef905eeb14d454aa886a906b6a7080c001c6962", "kind": "transparent" }, { - "address": "0x2963ff0196a901ec3F56d7531e7C4Ce8F226462B", - "txHash": "0x78f8228bc2842b6fd2e5c7f08ef5020a398b6f6af9d5af85d86486bd06a10159", + "address": "0x56D13Eb21a625EdA8438F55DF2C31dC3632034f5", + "txHash": "0x423941cc1b87926138b8275d7c89a64fbafda5e59f059951a089e5d21e676081", "kind": "transparent" }, { - "address": "0xA13d4a67745D4Ed129AF590c495897eE2C7F8Cfc", - "txHash": "0x46fee71ae0dcfbc7761a465ae53ef33bc05de56999bc267f24c7489ffb8ec918", + "address": "0x8B190573374637f144AC8D37375d97fd84cBD3a0", + "txHash": "0x689201b4ba60668036a424b7f571aff66c166cdf58c08dd04bbdc2bdbae68f59", "kind": "transparent" }, { - "address": "0x23228469b3439d81DC64e3523068976201bA08C3", - "txHash": "0xd2ded286070daefaf34265219f2f04ffc0f5a03f2a8f98c0373c71476fa3efa4", + "address": "0x9385556B571ab92bf6dC9a0DbD75429Dd4d56F91", + "txHash": "0x07090c916e76bcf7b4d764fac8735f54e00383dbefc1954edad72c1a6a6ee517", "kind": "transparent" }, { - "address": "0x01D4648B896F53183d652C02619c226727477C82", - "txHash": "0x6ba81b50e1b69c22d6b9873e1e94a80d680ec324ec5bdbe47aa26755f475efa4", + "address": "0x01E21d7B8c39dc4C764c19b308Bd8b14B1ba139E", + "txHash": "0xdde786a98aee7fbfad14feee9b2e752bb68ac964f397027d941006958c4569e3", "kind": "transparent" }, { - "address": "0xf4fa0d1C10c47cDe9F65D56c3eC977CbEb13449A", - "txHash": "0xc1068751eed6b651c3a4901b9a78c51d0d125128a4e983131dc0373080548b22", + "address": "0x3C1Cb427D20F15563aDa8C249E71db76d7183B6c", + "txHash": "0xdaa1e08b0d7bdeb9e1cb180ff4dab45ae99d000d8d9ca9046c3b457e9210eb14", "kind": "transparent" }, { - "address": "0x88B9Ad010A699Cc0c8C5C5EA8bAF90A0C375df1a", - "txHash": "0x9098bd1c0412da5e80af77823dd41e42d40edb2a94d1c2041fc0ef0d6720a289", + "address": "0x8ac87219a0F5639BC01b470F87BA2b26356CB2B9", + "txHash": "0x23902369dae651ad305096afc784ac18b2ce11fd2081d79b565f5b9c3db88e92", "kind": "transparent" }, { - "address": "0xAaC7D4A36DAb95955ef3c641c23F1fA46416CF71", - "txHash": "0x908413ce836f33c60462af42d47cc45f695a655e1ea04f6248771da5669205f1", + "address": "0x94fFA1C7330845646CE9128450F8e6c3B5e44F86", + "txHash": "0xe0a1c37bdec1121186af1f1acda016ae7b8a6edef744c92b239b4885d8c052fe", "kind": "transparent" }, { - "address": "0x594f79e85F6f041eb56cF6822FF4125ee316409E", - "txHash": "0x53d71a71480320331a5455aa9c96e64af1dad1e836fad17281985da7bae8eebf", + "address": "0xa4E00CB342B36eC9fDc4B50b3d527c3643D4C49e", + "txHash": "0x94e6ffa10036b636d7aedd48d8a180aba3b5bea6fe8dc81150b1aba955217b02", "kind": "transparent" }, { - "address": "0x2fe19128A8257182fdD77f90eA96D27cA342897A", - "txHash": "0x6c46eac956f7743ee76c0faf244a0b22def34d4014567e8543f0cb419383e82c", + "address": "0x8ac5eE52F70AE01dB914bE459D8B3d50126fd6aE", + "txHash": "0xb9f8449d88fc777438feaadfe5b2c2315170d0777b43ccd7703b0f555361f343", "kind": "transparent" }, { - "address": "0xb9b0c96e4E7181926D2A7ed331C9C346dfa59b4D", - "txHash": "0x898024368e85909e5e61b5fe327fdd5b536e7ae784c69a7f557f708579eea48e", + "address": "0x24d41dbc3d60d0784f8a937c59FBDe51440D5140", + "txHash": "0x598c837fc270e9d07fd948235a72a73cd016a3d1feca3406b4beb3035120976b", "kind": "transparent" }, { - "address": "0xe3EF345391654121f385679613Cea79A692C2Dd8", - "txHash": "0x18ea4b71df31f6eaaa561685e568ca054475c37bb098166574ae7bb9a5543005", + "address": "0xC976c932092ECcD8f328FfD85066C0c05ED54044", + "txHash": "0x3aba7253b48f035302ee6d53e57b0c658e7677cc62a43c8930c4a75db0379986", "kind": "transparent" }, { - "address": "0x6D39d71fF4ab56a4873febd34e1a3BDefc01b41e", - "txHash": "0xc7b0fe6ab471c16c7770544583c12a6b87c80db50b395cae768775fad1703546", + "address": "0x3a622DB2db50f463dF562Dc5F341545A64C580fc", + "txHash": "0xa7c7e1f11b18d65aae6dc90831759ba07bf522d7c900346ccd917e1dbd5f53f8", "kind": "transparent" }, { - "address": "0xeF66010868Ff77119171628B7eFa0F6179779375", - "txHash": "0x235ce5c90453e10ed2457eddbdbd91fab3ccc302af81633256eef9988b807bd9", + "address": "0x6A47346e722937B60Df7a1149168c0E76DD6520f", + "txHash": "0x49f9109030545eb90ec46bce08e6b11a3dbce580b636d5f1fa8e41affae2ff76", "kind": "transparent" }, { - "address": "0x103416cfCD0D0a32b904Ab4fb69dF6E5B5aaDf2b", - "txHash": "0x7fc754bc79957d0d299ca0082867850868126189a583d4732d2114d263d393e9", + "address": "0x15Ff10fCc8A1a50bFbE07847A22664801eA79E0f", + "txHash": "0x29943c6bd0dbaa02132245beb8bb0b9c5deee553aa53623c71ac65707473084c", "kind": "transparent" }, { - "address": "0xACB5b53F9F193b99bcd8EF8544ddF4c398DE24a3", - "txHash": "0xb54eec53a2129d2b3850f4714757e0302bafd1177799c40f19893269b95792c1", + "address": "0xAe9Ed85dE2670e3112590a2BB17b7283ddF44d9c", + "txHash": "0x3a682ec1e171d428ecb8272b08194892aaf0b9e958b457b11714164fcf7c2598", "kind": "transparent" }, { - "address": "0x6C3F7ed79b9D75486D0250946f7a20BDA74844Ba", - "txHash": "0x909be7e134f9ea23cbc29a136745c01eb8347a9942fdf8f4e0920807b0e7dcf8", + "address": "0xd977422c9eE9B646f64A4C4389a6C98ad356d8C4", + "txHash": "0x086d1c32b98f3fd83a08dd24037275dbd37bd0afd347dcdb382897059477040e", "kind": "transparent" }, { - "address": "0x43c5DF0c482c88Cef8005389F64c362eE720A5bC", - "txHash": "0xd2693bd5a0c259e1ec4814227b52040e00e5247b22ba509e6ce4216c4ddecaf0", + "address": "0x1eB5C49630E08e95Ba7f139BcF4B9BA171C9a8C7", + "txHash": "0x3445c4b902bf599f0568066d7951d06b42bb03f021f5d17f1261ab1f752dd40e", "kind": "transparent" }, { - "address": "0xF01f4567586c3A707EBEC87651320b2dd9F4A287", - "txHash": "0x4424569baadb3a3417af1525f70feed18f96f802c9a6548e355991a7a322cbb1", + "address": "0xB1c05b498Cb58568B2470369FEB98B00702063dA", + "txHash": "0x4b7097468f2a9a35b7ada76b49b606b5feb40909e9daa065c0528f803bbe7ff5", "kind": "transparent" }, { - "address": "0xCaC60200c1Cb424f2C1e438c7Ee1B98d487f0254", - "txHash": "0x4ef8f40f4ffb1b17ba189cb49b7fa1199991280309ef7b88d1aaeb4ee445dff6", + "address": "0x92A00fc48Ad3dD4A8b5266a8F467a52Ac784fC83", + "txHash": "0xac36b4d1390fee33e88f0fc6a4dfa402fae500a64c2429c01bd0df32624e711a", "kind": "transparent" }, { - "address": "0xFf8FA9381caf61cB3368a6ec0b3F5C788028D0Cd", - "txHash": "0x0ddde961746e0980703c1c15b1fd911b46f770ecd376fb54727fbb7efb5e05a4", + "address": "0x021DBfF4A864Aa25c51F0ad2Cd73266Fde66199d", + "txHash": "0x610686d85b1b1ad15de8e8f9c1809cbed7a98724b647bad90ae3bceb6969530f", "kind": "transparent" }, { - "address": "0x69eB226983E10D7318816134cd44BE3023dC74cd", - "txHash": "0x14a53f3e966dc1d12c898803c1525c5feb0e589af30d3f2d6786707faf9bd76a", + "address": "0x4CF4dd3f71B67a7622ac250f8b10d266Dc5aEbcE", + "txHash": "0xefd534e821a6ebc1908018cf5eaa2f1d346325106439b7fa4605555949b084eb", "kind": "transparent" }, { - "address": "0xD8fE7c45330c8b12cA0D4728D75557b9e7BeB24F", - "txHash": "0xe251d8618c06cc376953a5a09435acd776dca105910fcd654079b8b48b310716", + "address": "0x26291175Fa0Ea3C8583fEdEB56805eA68289b105", + "txHash": "0xb6a2f7f5e52810184b12b65d131e06843cadfd96897566a57cafbcf81c531e5a", "kind": "transparent" }, { - "address": "0x3Aa338c8d5E6cefE95831cD0322b558677abA0f1", - "txHash": "0xfd183e40482bbc74e17650c22609f079af001225e76e82e8b74063f1e52885da", + "address": "0x840748F7Fd3EA956E5f4c88001da5CC1ABCBc038", + "txHash": "0x9caaae2c9ddd30e9c1937947196592dd8b4b6659c16aa4b4efba4324905aae21", "kind": "transparent" }, { - "address": "0x267fB71b280FB34B278CedE84180a9A9037C941b", - "txHash": "0x501ae8bf30ea1dbd2551f986ba1737efdf0f9d6ea5d63e996d0307284edc6ed7", + "address": "0xa8d297D643a11cE83b432e87eEBce6bee0fd2bAb", + "txHash": "0x8e711d450c36c3ab11f9916cf2234ced3d91ef23d9ab3a8927f18ccc23449408", "kind": "transparent" }, { - "address": "0x9015957A2210BB8B10e27d8BBEEF8d9498f123eF", - "txHash": "0xf4a10b2329504d575d1e1548a5681ee17f8c37b30ffdf5eb1a6475d14ee4c2a1", + "address": "0x6Da3D07a6BF01F02fB41c02984a49B5d9Aa6ea92", + "txHash": "0xa4b3cdb40330944c4a13251227b73fac4e225e12ea6c0ce4967a501b4a4e505d", "kind": "transparent" }, { - "address": "0x9C6c49E1a5108eC5A2111c0b9B62624100d11e3a", - "txHash": "0xb118fa3de76c12a964e17c5e38dc0fcfc1942cc78e0ed7aa627f484c993d89b3", + "address": "0x3AeEBbEe7CE00B11cB202d6D0F38D696A3f4Ff8e", + "txHash": "0xea0f80acac00fcc17d12bf43effeae740f63e13f8cceb599efcb6083e8bfc7d4", "kind": "transparent" }, { - "address": "0x95D7fF1684a8F2e202097F28Dc2e56F773A55D02", - "txHash": "0x87ccb08dd43f3def1c9f385f7b64a36ca83bcb4969c201c9550a44b6cbeceb8d", + "address": "0xB2ff9d5e60d68A52cea3cd041b32f1390A880365", + "txHash": "0x8a4c0fe07fd764a3d14be2be3862d46ce7cc146a3231c766a1433da9ccad8c1c", "kind": "transparent" }, { - "address": "0x633a7eB9b8912b22f3616013F3153de687F96074", - "txHash": "0xbb92e43912bd42b9616925357dd46e32cc0715d92aeb41ef9dbd5c4b0d4404e0", + "address": "0x889D9A5AF83525a2275e41464FAECcCb3337fF60", + "txHash": "0x5833ce18b2c83e750fc8a1d5f0c1e4efdda10c6ad43b24276845514368a6c4ff", "kind": "transparent" }, { - "address": "0x1E53bea57Dd5dDa7bFf1a1180a2f64a5c9e222f5", - "txHash": "0x0bf88e78fa04862975f297c2edd065678b54ae776b83057577ea16f7feb11fd7", + "address": "0xf274De14171Ab928A5Ec19928cE35FaD91a42B64", + "txHash": "0xa134758e3746def8ae94cad0db95774d92232c9dbf4c13fa72f3ded0d23601e3", "kind": "transparent" }, { - "address": "0x17f4B55A352Be71CC03856765Ad04147119Aa09B", - "txHash": "0x91635e68bc304d8dfb994d4511f202b4fd9399d9a58e789baf1a8ca0be8dc2c1", + "address": "0x519b05b3655F4b89731B677d64CEcf761f4076f6", + "txHash": "0xeacf574610b07d6bca2ae2af7aa412ce6dd4c2ad3ddedfd2d8e60fe717a9f84f", "kind": "transparent" }, { - "address": "0x08677Af0A7F54fE2a190bb1F75DE682fe596317e", - "txHash": "0xcc540ff89746020600d32eff1da6a61f63fc0fc64967820a2c3a2ad1b9a2d573", + "address": "0x057cD3082EfED32d5C907801BF3628B27D88fD80", + "txHash": "0x5fce92538b763f713c2436b720f80ba2384e0e26f60db4f68e6382e7e0e5bdad", "kind": "transparent" }, { - "address": "0x87a2688d6E41b23d802F74c6B1F06a8e8d118929", - "txHash": "0xde6e7a071b053e31c6a1e3c778cd23113aee167280edee97bc65f51ffb5b9765", + "address": "0xCA87833e830652C2ab07E1e03eBa4F2c246D3b58", + "txHash": "0xea282d0df28916b15589687ca56c1ed0aa18f888b85fdf115247ab58820b4ad9", "kind": "transparent" }, { - "address": "0x8797847c9d63D8Ed9C30B058F408d4257A33B76C", - "txHash": "0xaad0a04762380782e7d2435cb6465d12e915e61ccb92715934e9035848a6944e", + "address": "0x9Bb65b12162a51413272d10399282E730822Df44", + "txHash": "0x1e36a60e959745079294d75e4f8e7cbf3702b891160f900ca780016eeb3b77f7", "kind": "transparent" }, { - "address": "0xF816b7FfDa4a8aB6B68540D1993fCa98E462b3bc", - "txHash": "0xa501fe5542d39dfd5f590f042b914a014988158ea391b66aa2068ef27ff32f19", + "address": "0xeA8AE08513f8230cAA8d031D28cB4Ac8CE720c68", + "txHash": "0x895196478e2a23cf9b9da10b3261e7d3695cec700eb31b421fe97b8722b38bd7", "kind": "transparent" }, { - "address": "0xDB259fa7d7f9F68aE3ffC3c748516ba9567a7576", - "txHash": "0xc05d786a57888039ce4a8b6ae7dd2c11cc7bcbc37fab2348ab592ccfdced35a9", + "address": "0x6431AF84d34F0522cAA58b221d94A150B5AdAC69", + "txHash": "0x941e7ec40c8e79640cbc951d860906ea1e23848b51c63aee30fc90d6cfd3c67f", "kind": "transparent" }, { - "address": "0x71d75C9A9e1a4fFa5a16556b51D6e630A4FA902A", - "txHash": "0xb1a4553030465f11524886ab3d87d64c444ad569d61cf5ad6bdb54bfdc5d3207", + "address": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", + "txHash": "0x0af1b78cd045185c3babc470b969ee789fc8d29fec2b531db3b631943f6b8c3a", "kind": "transparent" }, { - "address": "0x701dC26AcaD119E892695bb6A06956e2165C2052", - "txHash": "0x5bc2dd3d1f7e85e268aa5b979b30cb4a31252bb085eed282b04ab28f01d29f9a", + "address": "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "txHash": "0xa7f0a941c226e7bd28bac815eff8d17db44a8a49dd6e14d19af59e50aa35b9a4", "kind": "transparent" }, { - "address": "0xbaee9B65349929Bd78f9878555bF78027Df7f101", - "txHash": "0x7f5f41aef1f79aecfb8a1bf9dbbb898398610154745a15f93ba6b5bff2168e39", + "address": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", + "txHash": "0x67c7c20bfcb1c0b666ee9b851f87bb548d7fb551420aaed505ebab2b5d9af4d3", "kind": "transparent" }, { - "address": "0x886a2A3ABF5B79AA5dFF1C73016BD07CFc817e04", - "txHash": "0xe10b4371962b280d9d8ae1ad9b1c460ace1305967b4d0eaf8b7003016e8bb9db", + "address": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "txHash": "0xa4446cf0efaacb3d29852509af5085a7a857a569c95a934ca2ed7dcbcd68ecc0", "kind": "transparent" }, { - "address": "0x449C286Ab90639fd9F6604F4f15Ec86bce2b8A61", - "txHash": "0xc359e21505ceeef6d8d34524fbc441b76753f555ad688b94a89aa299db0a602e", + "address": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", + "txHash": "0xc2a12ad9663b519223ab2cccd602ed66d324706643ff6b79271be59929d0b674", "kind": "transparent" }, { - "address": "0x5aA185fbEFc205072FaecC6B9D564383e761f8C2", - "txHash": "0xdfdf10a3a3e25f1edbc76017fe814c59243e0a725aad5d213c7c1a729faf5c27", + "address": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", + "txHash": "0x8e2af1b68bc56a66a4dc2302be665d976ab5cc961f2e0964c2c1fcc220797055", "kind": "transparent" }, { - "address": "0x63275D081C4A77AE69f76c4952F9747a5559a519", - "txHash": "0x90b6cdd247a950e8b9b55d667854240a2be53974054a906355991cbdb184ccc3", + "address": "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", + "txHash": "0x6f604872a90cbcce98d1f632ee22491a5e4bd8b099b440479c866252a26cf9e4", "kind": "transparent" }, { - "address": "0x67832b9Fc47eb3CdBF7275b95a29740EC58193D2", - "txHash": "0x760c7911c1e2371d5e508867013a677e7dc87af56094f73697fe4441e52afa31", + "address": "0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44", + "txHash": "0xded757594c5953b6079029795a3c822250f4ef2eb2c422bc60707e23956df165", "kind": "transparent" }, { - "address": "0x832092FDF1D32A3A1b196270590fB0E25DF129FF", - "txHash": "0x9c06703c107505a17cc4dab86db19d8ad1409224fc7a77e1ea63be946c48e66a", + "address": "0x4A679253410272dd5232B3Ff7cF5dbB88f295319", + "txHash": "0x7526e846bd05e422421fe0cd4473458f13ecd041cbece25db80180cc101b026b", "kind": "transparent" }, { - "address": "0x8729c0238b265BaCF6fE397E8309897BB5c40473", - "txHash": "0xca18daf3344bd254c03018c4c88c68510d4df626bc767ab766105ec90adf1fdf", + "address": "0x09635F643e140090A9A8Dcd712eD6285858ceBef", + "txHash": "0xa746587dce9074909968b28cdd403c0ee3d99e19eabd4798ffde4cae6484591b", "kind": "transparent" }, { - "address": "0xDf795df2e0ad240a82d773DA01a812B96345F9C5", - "txHash": "0x43aca645e2389aeca7291fdcf1e920d6ce7023a0634a39cadf1c8879f93e7959", + "address": "0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690", + "txHash": "0x6997ba2e2d64b60a12f87ab52e81ebbf89ca48baf96906a147397f6855756c2c", "kind": "transparent" }, { - "address": "0xDb731EaaFA0FFA7854A24C2379585a85D768Ed5C", - "txHash": "0xbf8f6e87264d16af441499df65dd3ac6626f3b33c71f5efe3854475232dfdd1f", + "address": "0x9E545E3C0baAB3E08CdfD552C960A1050f373042", + "txHash": "0xa14ff821869f00046db0eec3378437d3ac3b2c5bd2b6d631e1cf5cb291a0b564", "kind": "transparent" }, { - "address": "0x335796f7A0F72368D1588839e38f163d90C92C80", - "txHash": "0x695de7eca08cd0ec9367f0d228296e7d14bb9fafd2b1e95c9165dc079e7feb76", + "address": "0xf5059a5D33d5853360D16C683c16e67980206f36", + "txHash": "0x45ca7c88f21886bfa2850fe0de268f1616fcac0240f94b15d0ef4f57600ba694", "kind": "transparent" }, { - "address": "0xC63db9682Ff11707CADbD72bf1A0354a7feF143B", - "txHash": "0x88eedea406ef4a987ce3a0230633620c7b9e4cb35807369dfe07acb8bc9202f6", + "address": "0x998abeb3E57409262aE5b751f60747921B33613E", + "txHash": "0x0cc5f6f6a426ea3686edca141c539557145f712e42f2f2b2f439f7cb1d1479ba", "kind": "transparent" }, { - "address": "0xF8b1d4d0A2Dd9Dd53200A4C6783a69c15E3a25F4", - "txHash": "0xcb16d63658b653c346934a4583ef6ef09a013683e77f958edefb25a3ac92be99", + "address": "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF", + "txHash": "0x454f11d07294d896a0843aea4ba094e6246ada660e35c7d5c2fec135723ba185", "kind": "transparent" }, { - "address": "0x9A676e781A523b5d0C0e43731313A708CB607508", - "txHash": "0x041fc2306775cd59d703efd206650152ddbb7097bc501e78cce272a13fb14ff9", + "address": "0x9d4454B023096f34B160D6B654540c56A1F81688", + "txHash": "0x53a499872f386e681dc8af81d616f0f09ce2b51f66407202eafc0c080a85c17f", "kind": "transparent" }, { - "address": "0x59b670e9fA9D0A427751Af201D676719a970857b", - "txHash": "0x4f719966e63c7e533014686beeb8888b7f3cc057ac7c84536b5332b620c2ea9f", + "address": "0x4c5859f0F772848b2D91F1D83E2Fe57935348029", + "txHash": "0x130b670398acc86106b4f94ce4d64a7d16bca48019e3382e51d2bedefe449f90", "kind": "transparent" }, { - "address": "0x5067457698Fd6Fa1C6964e416b3f42713513B3dD", - "txHash": "0x8734c4365f365f3607fd735f34cb0afe5f93e62f5765678422eaae0484b98c5a", + "address": "0x5f3f1dBD7B74C6B46e8c44f98792A1dAf8d69154", + "txHash": "0x513d77bc99fae04cb036b9ec3f82358b689eaf000d3b50eeeed77fa810e9a450", "kind": "transparent" }, { - "address": "0x22753E4264FDDc6181dc7cce468904A80a363E44", - "txHash": "0x5d5834c04cba1536624241c819ae411e5ded61025170e1033e45f77befbbf8fb", + "address": "0x2bdCC0de6bE1f7D2ee689a0342D76F52E8EFABa3", + "txHash": "0x0438942566144362501dd7e1657289d8ef807b0e7907979617e58d8e1e9d74db", "kind": "transparent" }, { - "address": "0xA7c59f010700930003b33aB25a7a0679C860f29c", - "txHash": "0x1b07053803e9c29a71a2f8c0b50bf20cf4b9680692b02620040dd16f2d64ec46", + "address": "0x7bc06c482DEAd17c0e297aFbC32f6e63d3846650", + "txHash": "0x7b6846bd605433019c0ecda7f49e3b40354c7ea14dce8fbd3fbc331dc900ca04", "kind": "transparent" }, { - "address": "0x457cCf29090fe5A24c19c1bc95F492168C0EaFdb", - "txHash": "0xd9b5da730acd059ea149aaea981eb7ae20be61cb63bc4a5257c10c6b9af2cc8d", + "address": "0x1429859428C0aBc9C2C47C8Ee9FBaf82cFA0F20f", + "txHash": "0xd256a6170e659f754938e99cf6e4c68a05ab3a3edb6a0271d28b18bd50e44065", "kind": "transparent" }, { - "address": "0x6F6f570F45833E249e27022648a26F4076F48f78", - "txHash": "0x4eecdee8fc3482764284d8c704a05cc4f75d0082eff8f3a16446d193f950626a", + "address": "0x162A433068F51e18b7d13932F27e66a3f99E6890", + "txHash": "0x69ee75055f14dbe0e5dbaacbb0821abf128cacc1a10ee21a5973afa2e9192a1f", "kind": "transparent" }, { - "address": "0x6C2d83262fF84cBaDb3e416D527403135D757892", - "txHash": "0xb1444a3ff98f2379ab7935f63a3e0fd36bcbcec5cbf070d47ec9890d0ec5e5c0", + "address": "0xdbC43Ba45381e02825b14322cDdd15eC4B3164E6", + "txHash": "0xb03b3c347b082160931f9867a0ad324c26ef367a4a94f27a5d4245813a4c15bc", "kind": "transparent" }, { - "address": "0x413b1AfCa96a3df5A686d8BFBF93d30688a7f7D9", - "txHash": "0x5c4f1dacd5add371d2c0a40b2c31a1d8aef85a822d2be9555da7548c4d23d75f", + "address": "0x4C4a2f8c81640e47606d3fd77B353E87Ba015584", + "txHash": "0x880b2e4787d4366b758eff184f4748831afe41f4e2d5eb29d75ae5c5cec97b40", "kind": "transparent" }, { - "address": "0x56fC17a65ccFEC6B7ad0aDe9BD9416CB365B9BE8", - "txHash": "0x5a8335d102824dd9007ee7db80d7cdac075fb7de91afe9621b2a927ff1a32257", + "address": "0xDC11f7E700A4c898AE5CAddB1082cFfa76512aDD", + "txHash": "0x1e2314140f65a4e807c47c76b0ebb4d1ade18014e9f603df1784ce9e35828e2a", "kind": "transparent" }, { - "address": "0xcC4c41415fc68B2fBf70102742A83cDe435e0Ca7", - "txHash": "0x5282c57db885d116d18cb3bf6cc7e59223e3ef03d77c6f37fe3a07cb3a933dd4", + "address": "0x36b58F5C1969B7b6591D752ea6F5486D069010AB", + "txHash": "0x683e04bacc22051e1e21ee27710f3a9964bad3d4be91523fce9289b6575a5328", "kind": "transparent" }, { - "address": "0xeAd789bd8Ce8b9E94F5D0FCa99F8787c7e758817", - "txHash": "0x63bb666e4e5a9770382f7ff4121bbb5ef65893a322208a63095ab41dea27c4ef", + "address": "0xf4B146FbA71F41E0592668ffbF264F1D186b2Ca8", + "txHash": "0x94150913434ac76b74e78f395649eab226f1c928a4e2fd4689ca034b8816b363", "kind": "transparent" }, { - "address": "0xA9e6Bfa2BF53dE88FEb19761D9b2eE2e821bF1Bf", - "txHash": "0x48731f5d878fca847be622c5ac23975d444c5a56f53b5591f9f8c970209fa8a0", + "address": "0x4EE6eCAD1c2Dae9f525404De8555724e3c35d07B", + "txHash": "0x92296d626087308fcd76db3fb51ea40109a0ca5578cfdf0ad51c39406cb457ad", "kind": "transparent" }, { - "address": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", - "txHash": "0x0bc29a63d25dab38349b636173d70352f9d9a7afb42b52ac918c5474b6820353", + "address": "0xfbC22278A96299D91d41C453234d97b4F5Eb9B2d", + "txHash": "0x6d4e5fa578ae4081999b06e2311f42875fbd9a8bb67282570482258ba12230c6", "kind": "transparent" }, { - "address": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "txHash": "0xbf167b7e157780093c38ebad9e6255428c6a823061d6f32e101f69d8b3ec0b5b", + "address": "0xC9a43158891282A2B1475592D5719c001986Aaec", + "txHash": "0x66c6959ec29bad9d109287b14cbaa8f29618e30175939273ca9d9a591db8f964", "kind": "transparent" }, { - "address": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", - "txHash": "0xcad1cef10d1df8be3010d3a5dfd9db6b8f24347c1b6267817c3a53235353d5ff", + "address": "0x367761085BF3C12e5DA2Df99AC6E1a824612b8fb", + "txHash": "0xbc0f399db54828d8a05940ffa0cb3a716453e033c53b28f0193f51847af29dbd", "kind": "transparent" }, { - "address": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", - "txHash": "0xd17c8c3b31cacdec397bbd2710f4b09776ed2a9a4a95eb5f4e7fe037fd1be91c", + "address": "0x7A9Ec1d04904907De0ED7b6839CcdD59c3716AC9", + "txHash": "0x4dce76acf5ab779f19ed88fd049423b25f8d4ff2d6b2069166780852db674119", "kind": "transparent" }, { - "address": "0x4ed7c70F96B99c776995fB64377f0d4aB3B0e1C1", - "txHash": "0x4f83893595a0a2e8c8ac40e9a893268ea8ebb4767c1a8ad0c7724474744b53c1", + "address": "0x4631BCAbD6dF18D94796344963cB60d44a4136b6", + "txHash": "0x93abc12808e543da49023f3156745f8600d59c134a3a5ce9bf361b1f1ba207da", "kind": "transparent" }, { - "address": "0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44", - "txHash": "0xc299c166c1fcb70a438e1fbbe1dfeb48415cb1ee3b29f80e293cd25f08c1f065", + "address": "0xAA292E8611aDF267e563f334Ee42320aC96D0463", + "txHash": "0x8cbe83b886780e20ea96e4e8fe307b70e96e1a6dfedc2ccebb67c2c694e9bc51", "kind": "transparent" }, { - "address": "0xc5a5C42992dECbae36851359345FE25997F5C42d", - "txHash": "0x45ced6b3ea87b4084a51f70f388f4e6d4723c8b4edaeee49d1f61f11872ff4af", + "address": "0x720472c8ce72c2A2D711333e064ABD3E6BbEAdd3", + "txHash": "0x18226ad651f8f4de11f0f34b31724c7c13e169d2ed6e071b8064c2cdf89cdd14", "kind": "transparent" }, { - "address": "0x67d269191c92Caf3cD7723F116c85e6E9bf55933", - "txHash": "0xf6b46dac9347e5c06a3fcb4466a780f5e26905e45a17f845d630f7768f135020", + "address": "0x4b6aB5F819A515382B0dEB6935D793817bB4af28", + "txHash": "0x3e38046cfb8821c824b863d68b4780764709eb0b991bf0b2e88ab93d42309cea", "kind": "transparent" }, { - "address": "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9", - "txHash": "0x4823bebf05c5affcd0e943c514cf5636a949dead099343bfe7a92d8dfce57695", + "address": "0xD5ac451B0c50B9476107823Af206eD814a2e2580", + "txHash": "0xe15d6f405bf594fe3b8c9629c1eaee3b4a030657ecbc15cabcfa23cb7854057c", "kind": "transparent" }, { - "address": "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", - "txHash": "0x7b305d3bf9596690a73c84f3859fdc7ada26011c3a44a07b0fe45c01ada0bdba", + "address": "0xc0F115A19107322cFBf1cDBC7ea011C19EbDB4F8", + "txHash": "0x00ff911f9a66b00cd811c98b602ff8aa27ac08cbd10cb893d9b93a66a27038f1", "kind": "transparent" }, { - "address": "0x70e0bA845a1A0F2DA3359C97E0285013525FFC49", - "txHash": "0x6d0be47781d9a2c6eff14924dcc304513072d7d60fdd4383afad4337188812db", + "address": "0x34B40BA116d5Dec75548a9e9A8f15411461E8c70", + "txHash": "0x430a6fe29759f4458596cc6451a5043d5e4c75cfc12acea2857e7e677eed5260", "kind": "transparent" }, { - "address": "0x4826533B4897376654Bb4d4AD88B7faFD0C98528", - "txHash": "0x76b7a24359113d69564afebb2752f1974f37aa12b7443593d4f27260d14989e6", + "address": "0x07882Ae1ecB7429a84f1D53048d35c4bB2056877", + "txHash": "0x27a9e6fa0704cb96045eff1d2801a040efe6f00de548b59c45af1795869a4c4e", "kind": "transparent" }, { - "address": "0x5eb3Bc0a489C5A8288765d2336659EbCA68FCd00", - "txHash": "0x6be270f128fd0ddb57adbecb34f4a62661bde01dc296d6c539eb62c9e09a1105", + "address": "0x276C216D241856199A83bf27b2286659e5b877D3", + "txHash": "0x22cad34ad550a6371690a675929c63b0cb1ff82e01a70267b91cd2804a9cf7c4", "kind": "transparent" }, { - "address": "0x36C02dA8a0983159322a80FFE9F24b1acfF8B570", - "txHash": "0x1ace4eb7326253ab67780a5595aaa08ad479ec45397a57e4bef2e49de8c6336e", + "address": "0x3155755b79aA083bd953911C92705B7aA82a18F9", + "txHash": "0x9f8130480b45de2ea94288087c55722f9cd3d9dd7ff80def68bcbd3d33abc2ff", "kind": "transparent" }, { - "address": "0xb7278A61aa25c888815aFC32Ad3cC52fF24fE575", - "txHash": "0xdd62ab6673f06011debf6c08243bed4cbdac3470aa33de5c6883379029036980", + "address": "0xffa7CA1AEEEbBc30C874d32C7e22F052BbEa0429", + "txHash": "0xe5ea66ba2ea1aa9d904df50cf4266b844251a6acd676913468b5c02e59c06124", "kind": "transparent" }, { - "address": "0xCD8a1C3ba11CF5ECfa6267617243239504a98d90", - "txHash": "0xba14d3f4d3c104c850c9335ddcd425d56112a31f2fe0c8605135edf7f921278f", + "address": "0xab16A69A5a8c12C732e0DEFF4BE56A70bb64c926", + "txHash": "0xec0995bfb1eedd08234b8ecda27f3fc38abf797a3df75d2b5e4b9926c6dc6ced", "kind": "transparent" }, { - "address": "0xc351628EB244ec633d5f21fBD6621e1a683B1181", - "txHash": "0x06cb84786c31bf76b378fd2cfef120b3d4bec565af55753ba7da6c39d3c272af", + "address": "0x1f10F3Ba7ACB61b2F50B9d6DdCf91a6f787C0E82", + "txHash": "0x83176872276ccf4b542b3b914ec5998d7c9dedca681d912edd7dbceabd49b452", "kind": "transparent" }, { - "address": "0xFD471836031dc5108809D173A067e8486B9047A3", - "txHash": "0x43980efd04133c285f8f174caabf253a88e5f1576f4c72c482bdd1babb5baf14", + "address": "0x5fc748f1FEb28d7b76fa1c6B07D8ba2d5535177c", + "txHash": "0x86793300c3df878e2984bd899a5329ade41d44eed92b983c25d698d7d18732ed", "kind": "transparent" }, { - "address": "0x922D6956C99E12DFeB3224DEA977D0939758A1Fe", - "txHash": "0xd855a614c15dfd3eb136e5d4b74b4fc1b6ba25347386be530c8ab5880add1fc5", + "address": "0x2a810409872AfC346F9B5b26571Fd6eC42EA4849", + "txHash": "0xaeb220d28968a7f310f75b8a37209b51f56606aef654c156f7feeb22d4e785b5", "kind": "transparent" }, { - "address": "0x5081a39b8A5f0E35a8D959395a630b68B74Dd30f", - "txHash": "0x32516f05ce1b395c4edf98494409b45170f33caa36bdf4372774d02e58bb7bc6", + "address": "0x8A93d247134d91e0de6f96547cB0204e5BE8e5D8", + "txHash": "0x74a5d5e1914735503efccc4b1891f5a4a3188378c46bb7e1c82bd4a24e309fe9", "kind": "transparent" }, { - "address": "0x21dF544947ba3E8b3c32561399E88B52Dc8b2823", - "txHash": "0xb186688330b3d7f072660432aed2e5f88a272b248ab58461eb388cdd8cef5934", + "address": "0xF32D39ff9f6Aa7a7A64d7a4F00a54826Ef791a55", + "txHash": "0xe952fbbec264f7aece166d6b9acc6f46b800e8bf4818a7b79a0b06a3540c41ea", "kind": "transparent" }, { - "address": "0x2E2Ed0Cfd3AD2f1d34481277b3204d807Ca2F8c2", - "txHash": "0xa56657377b16e6b8a1c0553f431e6c5e6b67377f131bf39a2f6a2f10b33d8137", + "address": "0x99dBE4AEa58E518C50a1c04aE9b48C9F6354612f", + "txHash": "0x006d22787be15fd9206f3385248ca9441dfeafe3ffd28bb2386c505541d96902", "kind": "transparent" }, { - "address": "0x8198f5d8F8CfFE8f9C413d98a0A55aEB8ab9FbB7", - "txHash": "0x220310e9bb34b9b61a151ab10a24f175281c2efbbeacf8f465cd45b26e389909", + "address": "0x5FeaeBfB4439F3516c74939A9D04e95AFE82C4ae", + "txHash": "0x521da67111c2cd0b2b2e83886b606cfefdc8daa3b09e21b84f4b038fc0ef50f4", "kind": "transparent" }, { - "address": "0x0355B7B8cb128fA5692729Ab3AAa199C1753f726", - "txHash": "0x4768a1161cecdbebffb05acfa458fd375995187178ccb94b9b4e66d1e3d98d19", + "address": "0x19cEcCd6942ad38562Ee10bAfd44776ceB67e923", + "txHash": "0x93ba38ebe41d82c369da6a6020c8a447d3c33c0f4612b9d96b964347435d9215", "kind": "transparent" }, { - "address": "0xBEc49fA140aCaA83533fB00A2BB19bDdd0290f25", - "txHash": "0x4348cbac6369965236dd068ad567b3830beef7167a0a8f3731b095e59c461ba9", + "address": "0xfcDB4564c18A9134002b9771816092C9693622e3", + "txHash": "0x36b7332aa9ae8c048424bd8dc39057dc24dbc5ceb2b40a57d000be565014e363", "kind": "transparent" }, { - "address": "0xD84379CEae14AA33C123Af12424A37803F885889", - "txHash": "0x55efee3d90fc5da3c09b3e16faf3d6bcb4adfc469e949e8e9d496d1acef7a1ed", + "address": "0x32EEce76C2C2e8758584A83Ee2F522D4788feA0f", + "txHash": "0x542856dcb8647684c097aa91830406d2cbff1a2d82aec72d86614edd85276970", "kind": "transparent" }, { - "address": "0x1c85638e118b37167e9298c2268758e058DdfDA0", - "txHash": "0x9bf930e349077e3ff7eeffbfbba2363d61052d1bcdb8f9208efeec2ab23a060f", + "address": "0x02b0B4EFd909240FCB2Eb5FAe060dC60D112E3a4", + "txHash": "0xbbff1f8ade5a48c7a78918c184bd71279a51756b89554bc3992432ac3e658f33", "kind": "transparent" }, { - "address": "0x367761085BF3C12e5DA2Df99AC6E1a824612b8fb", - "txHash": "0xa2aca7760d8007a373403092f7f0dc0d00b268e09d55627191d04d3e89fd2829", + "address": "0xa6e99A4ED7498b3cdDCBB61a6A607a4925Faa1B7", + "txHash": "0x85dc96e46584e345801acb71da97453092af251686e5cfd6683b3a4468bf020f", "kind": "transparent" }, { - "address": "0x86A2EE8FAf9A840F7a2c64CA3d51209F9A02081D", - "txHash": "0x4d2d0ef3ccc55897b912aa9196e924b2272abdc9e71cc1951c4b148bdc26f79c", + "address": "0x0ed64d01D0B4B655E410EF1441dD677B695639E7", + "txHash": "0xa56a52718676c36b6ee85be8bb9bb66a1fd7a6cf37c4b766f5a22dabd6906409", "kind": "transparent" }, { - "address": "0xA4899D35897033b927acFCf422bc745916139776", - "txHash": "0xfc7daf35feaf6ea4482f4c97feaf2091be02b5acdff46a464ad0bab6710988f5", + "address": "0x40a42Baf86Fc821f972Ad2aC878729063CeEF403", + "txHash": "0x5333dd006d63a2d57de6d9be7fd426b45b4d57d949dec60a18ddb1307d2b06e2", "kind": "transparent" }, { - "address": "0x18E317A7D70d8fBf8e6E893616b52390EbBdb629", - "txHash": "0x3f4f3399afa90c54c53fb08a722eb3fd61b89bc091f840541505c5fd6e047a30", + "address": "0x986aaa537b8cc170761FDAC6aC4fc7F9d8a20A8C", + "txHash": "0x4f1b382b41786a9bb7b38a80eb031182a681d5e69f02bcb4e4a8d05837890479", "kind": "transparent" }, { - "address": "0xD0141E899a65C95a556fE2B27e5982A6DE7fDD7A", - "txHash": "0x6060bf413116da11e06e3616f05c3a87f98722a46d961ff11319333338027d31", + "address": "0xefc1aB2475ACb7E60499Efb171D173be19928a05", + "txHash": "0x3c988c6c03ba058e890f6a04f38cc1a1b2f3a6b36b78ee0110637ba1920d7bd9", "kind": "transparent" }, { - "address": "0x07882Ae1ecB7429a84f1D53048d35c4bB2056877", - "txHash": "0x6ea7dde8b404ad0c25a45926ffae88d6de706d4e884bc8fa01cae3b3090b9106", + "address": "0xD49a0e9A4CD5979aE36840f542D2d7f02C4817Be", + "txHash": "0x6e7e0cb76e0b95ce5c1b359d673316bd04a821154a5ac0763e2d2271c4725f8c", "kind": "transparent" }, { - "address": "0x5bf5b11053e734690269C6B9D438F8C9d48F528A", - "txHash": "0xa5a467edb2b8e6fc36ccc0a7df5053df14dae295182b9eac2118f7eb20ea0f38", + "address": "0xc582Bc0317dbb0908203541971a358c44b1F3766", + "txHash": "0xbca975c66b5b766527b33078eaa79453b75cced600b6bbd313397b1bdb7153fe", "kind": "transparent" }, { - "address": "0xffa7CA1AEEEbBc30C874d32C7e22F052BbEa0429", - "txHash": "0xcabe4220619db70f1b47bc1e91b41dfdb890b2d5d2ab6f12273979c8e3d2d580", + "address": "0xB377a2EeD7566Ac9fCb0BA673604F9BF875e2Bab", + "txHash": "0x5dcbcbc4fe71c9330298d0524a1bf53feceab218d1fe988cb7c6779ebdeabab7", "kind": "transparent" }, { - "address": "0x1f10F3Ba7ACB61b2F50B9d6DdCf91a6f787C0E82", - "txHash": "0x7c85887c44345b20861098420f24abe9f80d7d44d4c4f0e43f5ae8a6b8d3889d", + "address": "0x8bCe54ff8aB45CB075b044AE117b8fD91F9351aB", + "txHash": "0x4273fe4cb14a4e4e86380e98ba56b84ae8aef8f89dbabb66d9b05c861e877d37", "kind": "transparent" }, { - "address": "0x525C7063E7C20997BaaE9bDa922159152D0e8417", - "txHash": "0x256cdfcae25e2a9c892089ce9bc798c5533164dccf7e97236340bba606ff5039", + "address": "0xefAB0Beb0A557E452b398035eA964948c750b2Fd", + "txHash": "0x2219f2cf869e47271c2e16900453446b3830b937295a114d220b374b35b5f3a9", "kind": "transparent" }, { - "address": "0x38a024C0b412B9d1db8BC398140D00F5Af3093D4", - "txHash": "0xdffaf18c1a2fcbf735d6a24c2a5135dc8d3165db5e2b2bba7c65bb64a408037a", + "address": "0x70bDA08DBe07363968e9EE53d899dFE48560605B", + "txHash": "0xd1b91e017bbb33beaf8ba0d630873bce9958d23d342d4502c23aeb4cb8bbccff", "kind": "transparent" }, { - "address": "0x40918Ba7f132E0aCba2CE4de4c4baF9BD2D7D849", - "txHash": "0x0800b0acd9e098b212854c2b3be2533deca93c7e7ac10cd9bfbf80cd9578c2f7", + "address": "0xA56F946D6398Dd7d9D4D9B337Cf9E0F68982ca5B", + "txHash": "0x39d9a0f01ec268f719dfadf5f384f10575482eafd0770768ada0efce84250edb", "kind": "transparent" }, { - "address": "0x99dBE4AEa58E518C50a1c04aE9b48C9F6354612f", - "txHash": "0x5d15a6295203a9584e41bbf513eba8bd914b0d0def94f90bf8826a04adb049ae", + "address": "0xddE78e6202518FF4936b5302cC2891ec180E8bFf", + "txHash": "0xaaa0b53f50b36b44bca38257e5f37d58afb679c02a835d32426661510631e328", "kind": "transparent" }, { - "address": "0xCA8c8688914e0F7096c920146cd0Ad85cD7Ae8b9", - "txHash": "0x61bf532eee6c793d824b2b4d25c5b579cf0298873bcd426554e9a68a4ca19086", + "address": "0xaB7B4c595d3cE8C85e16DA86630f2fc223B05057", + "txHash": "0x299b7a214c41c6fe330727d4876b1c41f6c3090756d9ce144040d88c0504834a", "kind": "transparent" }, { - "address": "0x19cEcCd6942ad38562Ee10bAfd44776ceB67e923", - "txHash": "0x23bd1ca1b379d600ba66bca89ae724ead602bbe70d2bce4dc12712805e3b13da", + "address": "0x045857BDEAE7C1c7252d611eB24eB55564198b4C", + "txHash": "0xf6cd9ab8fdd91bb495ceed363a499bfef58c70b41b8ae45b14a725b354e49248", "kind": "transparent" }, { - "address": "0x927b167526bAbB9be047421db732C663a0b77B11", - "txHash": "0xfedab89a178a0196780d98c58d80fd68a2b8bc9ba6f17179223bfcb73cd71f3d", + "address": "0x821f3361D454cc98b7555221A06Be563a7E2E0A6", + "txHash": "0x1c2af54f071115598b717c4c57683bed3e76900aeeccec8a78a4d4c314794e94", "kind": "transparent" }, { - "address": "0x638A246F0Ec8883eF68280293FFE8Cfbabe61B44", - "txHash": "0x1030f0e2483e5aa07622a1379b87b462e4f0769f76c8c4b356f10585a38bc404", + "address": "0x5133BBdfCCa3Eb4F739D599ee4eC45cBCD0E16c5", + "txHash": "0x1d89da559b2e12e93c54bdf6eb1081c18263987da0661822a81d454b38f41d0c", "kind": "transparent" }, { - "address": "0xFD6F7A6a5c21A3f503EBaE7a473639974379c351", - "txHash": "0x9dd79df46f4513a6884f59b1578f630cc91a512148fe5b32f0c5a8237ee76c78", + "address": "0x8F4ec854Dd12F1fe79500a1f53D0cbB30f9b6134", + "txHash": "0x3da1d827ccf396ebd001bcb0698cfb085ee4054d2779df4dfd798765fb939b91", "kind": "transparent" }, { - "address": "0x5302E909d1e93e30F05B5D6Eea766363D14F9892", - "txHash": "0xffd1f7a850039148a5a2093b78014057cebe11141db050b153f800c36e60e559", + "address": "0xeF31027350Be2c7439C1b0BE022d49421488b72C", + "txHash": "0x6777aaf4c5add03c1665a06fde83523ed0068c8cf34114061ff93c6d7883dfa3", "kind": "transparent" }, { - "address": "0x4bf010f1b9beDA5450a8dD702ED602A104ff65EE", - "txHash": "0xacd1cd4bce8810cb305d8a8381aed445e9df6b5c0d54ac9c07e520831914ea50", + "address": "0xaC47e91215fb80462139756f43438402998E4A3a", + "txHash": "0x4bec97ddb41938f6037e9cf6ca381cfe8e5b2ed4a322a0a220dc4f24d4b5442a", "kind": "transparent" }, { - "address": "0x96F3Ce39Ad2BfDCf92C0F6E2C2CAbF83874660Fc", - "txHash": "0x2d103f965f9c046818bd827296f85bc5261fe0e8769f86813599ca7ad254c397", + "address": "0x63fea6E447F120B8Faf85B53cdaD8348e645D80E", + "txHash": "0x8acf8fda8a3b0cc1c36bd8879f4e3bede109366d3b29b47ef0cc1aebbfcb3941", "kind": "transparent" }, { - "address": "0xde2Bd2ffEA002b8E84ADeA96e5976aF664115E2c", - "txHash": "0x17aea62be040b7ed6375a3e38f9fd9329cc81ef25d3143c2803b4540c7547e1b", + "address": "0xaC9fCBA56E42d5960f813B9D0387F3D3bC003338", + "txHash": "0x86fe45cd5e84d7c81932bc78086ab2e6b474bae14336622e6047ed64f0e1df1b", "kind": "transparent" }, { - "address": "0x870526b7973b56163a6997bB7C886F5E4EA53638", - "txHash": "0x0404ea5a423b5f41708bc2185bb930932ebee41e85fa3c618f74b9ab2c71a327", + "address": "0x54B8d8E2455946f2A5B8982283f2359812e815ce", + "txHash": "0x97d4ffe30f4b105f45ac929acf75fc6538b5ccf6e25dfee9ad51dbe5321750e2", "kind": "transparent" }, { - "address": "0xe1Fd27F4390DcBE165f4D60DBF821e4B9Bb02dEd", - "txHash": "0xfb340a83e7e06a5d2269b551a741c4fedadb3c40e693ef2afed148d49a3e406c", + "address": "0xd9140951d8aE6E5F625a02F5908535e16e3af964", + "txHash": "0x333948332b5d59ec80b4b3ba748131b74bb30241b180bc0e9cc25e75549d7e44", "kind": "transparent" }, { - "address": "0xB2b580ce436E6F77A5713D80887e14788Ef49c9A", - "txHash": "0xf7ca0b5f24813594d57078d0709bd9fc3950563561f452d856be890ca7aa0fda", + "address": "0xE8addD62feD354203d079926a8e563BC1A7FE81e", + "txHash": "0x671c0d51aca1595e29c813fc2f4be61cc313642c3e790cb20897cd272d18c650", "kind": "transparent" }, { - "address": "0x66F625B8c4c635af8b74ECe2d7eD0D58b4af3C3d", - "txHash": "0x6dfa6a5adf3e6ef965bb86d99bc1e441d33bb972b0db2008ff4af551217c6c3d", + "address": "0x071586BA1b380B00B793Cc336fe01106B0BFbE6D", + "txHash": "0x16c7ec7185e694a1555a4387d06e4bfff0bcbb1ab63520cab987f32f4f4e7280", "kind": "transparent" }, { - "address": "0x74Cf9087AD26D541930BaC724B7ab21bA8F00a27", - "txHash": "0x6ba07ee80482084fe95ba0f46a48b2dd23858c245561a067585e424d71f85a37", + "address": "0x9A676e781A523b5d0C0e43731313A708CB607508", + "txHash": "0x041fc2306775cd59d703efd206650152ddbb7097bc501e78cce272a13fb14ff9", "kind": "transparent" }, { - "address": "0xaca81583840B1bf2dDF6CDe824ada250C1936B4D", - "txHash": "0x17607281a38b7a468ddb59f7247b207a3acd5ad732bce62e698b43021a743ac4", + "address": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", + "txHash": "0xe25649b64fffa4e0488723975ece8086fa3aa1264260fbb7b2b1cb12829efd18", "kind": "transparent" }, { - "address": "0x5D42EBdBBa61412295D7b0302d6F50aC449Ddb4F", - "txHash": "0x04277c8081379b012223c4156af32009c25a38fa5f5479f39f77d591479e084d", + "address": "0x59b670e9fA9D0A427751Af201D676719a970857b", + "txHash": "0xb578e1c9bff7d4a7bcbdc9bdecad9224010ca459c6ce23a3a6083a22b24b2c30", "kind": "transparent" }, { - "address": "0xB06c856C8eaBd1d8321b687E188204C1018BC4E5", - "txHash": "0xaa3e798e26d56391520a45271e41c9b2aae7299258d13b6364257b3d840a4a7b", + "address": "0x4ed7c70F96B99c776995fB64377f0d4aB3B0e1C1", + "txHash": "0xf0fb96c08572c20b82899f3f9b057acce15e7a77cbdd47b6894dfa001fd2963d", "kind": "transparent" }, { - "address": "0xAD523115cd35a8d4E60B3C0953E0E0ac10418309", - "txHash": "0xa6fd55f55f19e817327ca3d8e087a47c4527054bb8510f9475f873edfd511f15", + "address": "0xc5a5C42992dECbae36851359345FE25997F5C42d", + "txHash": "0xc80dd329cf48adadbdf30f7fdd87674229c93ffb779611c72b1bee12584e6ddf", "kind": "transparent" }, { - "address": "0x2b5A4e5493d4a54E717057B127cf0C000C876f9B", - "txHash": "0x6f25783b92ef6015a8b1f60855518a9cc7235961dc45a6b2163125a02d0bcc8b", + "address": "0x67d269191c92Caf3cD7723F116c85e6E9bf55933", + "txHash": "0xb6e0e140b83624c699ed8c02bea69ea723cb0a834e0924f8ce25e9808fb62088", "kind": "transparent" }, { - "address": "0x02df3a3F960393F5B349E40A599FEda91a7cc1A7", - "txHash": "0xcc588c84ac89851e163c1854951039333ef9ec015b5a39ba2d47ab2c1c0d85f7", + "address": "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9", + "txHash": "0xff9c908bbaa91052c54c8e62b2ca4c4e2a42e597c2efb69915cb9e6b388cd3b8", "kind": "transparent" }, { - "address": "0x1780bCf4103D3F501463AD3414c7f4b654bb7aFd", - "txHash": "0x32082a83f4e385721acfa4d572545d296fb87077aaa4ae4bdd0fe8349d5d2c81", + "address": "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", + "txHash": "0x0e90dfc0ceff5067712f643433be528b34c743e57e6b248ac7abccb332f3300c", "kind": "transparent" }, { - "address": "0x71089Ba41e478702e1904692385Be3972B2cBf9e", - "txHash": "0x6bc35f599376cd7a8a5c3c5bfddd558e525aa2f40870140b4bfc65079ea680c3", + "address": "0x70e0bA845a1A0F2DA3359C97E0285013525FFC49", + "txHash": "0x3ff79965e092c6f483eaddf97025d7adb7264be09451d337f07f047798bea976", "kind": "transparent" }, { - "address": "0xC66AB83418C20A65C3f8e83B3d11c8C3a6097b6F", - "txHash": "0x18acccf6b3d6d67e0f1ca027a6665b77515fd432c61f6c856d3f9f733f6ce996", + "address": "0x4826533B4897376654Bb4d4AD88B7faFD0C98528", + "txHash": "0x5ce45603a186af355e76b599ba8da566239df518764523df7bd72950c06151d6", "kind": "transparent" }, { - "address": "0x12Bcb546bC60fF39F1Adfc7cE4605d5Bd6a6A876", - "txHash": "0x1ae72c0fa75b07421baec5176f11449049163d4b302d2e3fbaffc5a85c55fda6", + "address": "0x5eb3Bc0a489C5A8288765d2336659EbCA68FCd00", + "txHash": "0xa1634eab14ec5070460ebad58a73bcd91cd0a559e70a7d73e973131b02eb0b2c", "kind": "transparent" }, { - "address": "0x9BcC604D4381C5b0Ad12Ff3Bf32bEdE063416BC7", - "txHash": "0x2789c817ee012f138247e043298bb3eee8419c889ab017214d7e3c404bac39e0", + "address": "0x36C02dA8a0983159322a80FFE9F24b1acfF8B570", + "txHash": "0x64f54e36db043f5593ad58814faf18461fcd58f76220f3df8a007656e2eefce3", "kind": "transparent" }, { - "address": "0xdFdE6B33f13de2CA1A75A6F7169f50541B14f75b", - "txHash": "0xac6064dc98f20d391ee7ac2731854bab8338363e5483f369be1bfb63237fc06d", + "address": "0xb7278A61aa25c888815aFC32Ad3cC52fF24fE575", + "txHash": "0x2fb9f6a134930ef29b3cb969156b8349c3e5bd4af0c1ee9c139f424fbee07017", "kind": "transparent" }, { - "address": "0x38A70c040CA5F5439ad52d0e821063b0EC0B52b6", - "txHash": "0x0a422be89d4e7af4231c5d13bfb187251caefa43cf5d40065ed7c7cb6a20f291", + "address": "0xCD8a1C3ba11CF5ECfa6267617243239504a98d90", + "txHash": "0x4bef67095f6c8df84ebef990c85dc8b5c0f66afc871a0dbf095c077caf0a3825", "kind": "transparent" }, { - "address": "0xf090f16dEc8b6D24082Edd25B1C8D26f2bC86128", - "txHash": "0x152f117a03df4dfd48f7bec32d89ad962721c36d291a2006834fc3e830a508a2", + "address": "0xc351628EB244ec633d5f21fBD6621e1a683B1181", + "txHash": "0xb1507f5424c549775bf9fd8c84fe4559e4d4ae6ddf0ad0d3fbc5c5609641286a", "kind": "transparent" }, { - "address": "0xe039608E695D21aB11675EBBA00261A0e750526c", - "txHash": "0x6ca6e3bb5d851dd2d2e5b4a6e093247ae96c9f73ba491463ec76075de204e188", + "address": "0xFD471836031dc5108809D173A067e8486B9047A3", + "txHash": "0x2fdab26e0ee2ad0d27836dac22e60e649e79178b609d52ff13f7faafb456e6a9", "kind": "transparent" }, { - "address": "0xe70f935c32dA4dB13e7876795f1e175465e6458e", - "txHash": "0x0c74101887a87cf9763e24adaf03e0109944319853ad45dca023ce4172fe8710", + "address": "0x922D6956C99E12DFeB3224DEA977D0939758A1Fe", + "txHash": "0x59314c038681fd1b19b026f7a23c16705867ce2cd3489d864542f0907874c8b7", "kind": "transparent" }, { - "address": "0xccf1769D8713099172642EB55DDFFC0c5A444FE9", - "txHash": "0xf3867ef4477ba07bebf0963147f049b0d3aaf8efb0df11986d21ce631428ad01", + "address": "0x5081a39b8A5f0E35a8D959395a630b68B74Dd30f", + "txHash": "0x094b2b21842ea9fd2345a8e15afeae81d77c4c37d2931b96847145ebb50fac95", "kind": "transparent" }, { - "address": "0x2Dd78Fd9B8F40659Af32eF98555B8b31bC97A351", - "txHash": "0xa1f4ae443685a02fcb80edb14f3d00230006523196516a9d486c7a6269e6c06c", + "address": "0x21dF544947ba3E8b3c32561399E88B52Dc8b2823", + "txHash": "0x12a871bf85e6e4eec3b171bd52719ae8f229996ceba15f73d640feb25a4c10c9", "kind": "transparent" }, { - "address": "0x2625760C4A8e8101801D3a48eE64B2bEA42f1E96", - "txHash": "0x72b9d08f5b683e10e64aee406373445eb543f8785743ea6088af4e5d637b0028", + "address": "0x2E2Ed0Cfd3AD2f1d34481277b3204d807Ca2F8c2", + "txHash": "0xbe965768124d6def4c78e10824a71693960333d4a02802f28493c2d8cdb42398", "kind": "transparent" }, { - "address": "0xD6b040736e948621c5b6E0a494473c47a6113eA8", - "txHash": "0xafe189b02ee76fcec2fe53bad7127fb911d5fbfec73eaae167e8df3a8990e88c", + "address": "0x8198f5d8F8CfFE8f9C413d98a0A55aEB8ab9FbB7", + "txHash": "0x6b9ab8f7fba1bc7ddb06b063b292a99f74c6d99431eda920c8e547d4dafdf4d7", "kind": "transparent" }, { - "address": "0xAdE429ba898c34722e722415D722A70a297cE3a2", - "txHash": "0x48139fd558cc46bf5f20c1a35f1b042811ad9770511ecbebe19320875fce51c4", + "address": "0x0355B7B8cb128fA5692729Ab3AAa199C1753f726", + "txHash": "0xe6b1ccc433ff0733b463c4573a82a374515b40073d494d4dc2e70dce98f7310b", "kind": "transparent" }, { - "address": "0xcE0066b1008237625dDDBE4a751827de037E53D2", - "txHash": "0x68d6e0a57d82f160717ec48fb5cdb714bc5fc3d5cb69e01480268b1903f83137", + "address": "0xBEc49fA140aCaA83533fB00A2BB19bDdd0290f25", + "txHash": "0x895101f335f137352b6b9e547b5c2e01aec25c969f106994b17229f9de350db8", "kind": "transparent" }, { - "address": "0x87006e75a5B6bE9D1bbF61AC8Cd84f05D9140589", - "txHash": "0xec0605d88a6fddef2c38abc9b9e7c63368299366fec44e0fdd872ec0ca375b38", + "address": "0xD84379CEae14AA33C123Af12424A37803F885889", + "txHash": "0xf6b9ce77bc8dc2302f1d78887f47019aa527f08ddb74cde8018bd259712424b3", "kind": "transparent" }, { - "address": "0x8fC8CFB7f7362E44E472c690A6e025B80E406458", - "txHash": "0xb9b4bce8c70fc10b877f425ddb6dee9806e6aea3389bf7a7c1df077758033a4c", + "address": "0x86A2EE8FAf9A840F7a2c64CA3d51209F9A02081D", + "txHash": "0x224dac447bf57d3d445959041746585b629d1702bf40a6d6c24447cf52b70a42", "kind": "transparent" }, { - "address": "0x359570B3a0437805D0a71457D61AD26a28cAC9A2", - "txHash": "0xfb4f1077ab1b072fe96b3d854af2862e951a2af5b3f67141b266731db1ffae9c", + "address": "0xA4899D35897033b927acFCf422bc745916139776", + "txHash": "0x08e38bdbd08319898a90a0b329eb44e473a1a3b9640aa6d2221691bf3dd76c5d", "kind": "transparent" }, { - "address": "0xDde063eBe8E85D666AD99f731B4Dbf8C98F29708", - "txHash": "0xe9bf021cba2f3fe6234953cafde79a639424657ece28771cc587d7f77a57c4da", + "address": "0xe8D2A1E88c91DCd5433208d4152Cc4F399a7e91d", + "txHash": "0xc6fb2aee53aa62000802524e113a4e1995c27bdadeb3ec3d10a3d2a21101d44b", "kind": "transparent" }, { - "address": "0x70eE76691Bdd9696552AF8d4fd634b3cF79DD529", - "txHash": "0xe76fbd50ae3890e995fa15f909eb8807b4b78534b1b56b6274c9cf3aa168a0ce", + "address": "0x5067457698Fd6Fa1C6964e416b3f42713513B3dD", + "txHash": "0x8734c4365f365f3607fd735f34cb0afe5f93e62f5765678422eaae0484b98c5a", "kind": "transparent" }, { - "address": "0x67aD6EA566BA6B0fC52e97Bc25CE46120fdAc04c", - "txHash": "0xc88e5a4e99f67088f285fee03d5a6799a1cb8fbc0f545ced922630e25b9c4908", + "address": "0x22753E4264FDDc6181dc7cce468904A80a363E44", + "txHash": "0x5d5834c04cba1536624241c819ae411e5ded61025170e1033e45f77befbbf8fb", "kind": "transparent" }, { - "address": "0xcD0048A5628B37B8f743cC2FeA18817A29e97270", - "txHash": "0x0c12ca54980b5c0a39afed2241d3700d6f3b80c67f6c5ccdbc39bd19c5405a3e", + "address": "0xA7c59f010700930003b33aB25a7a0679C860f29c", + "txHash": "0x1b07053803e9c29a71a2f8c0b50bf20cf4b9680692b02620040dd16f2d64ec46", "kind": "transparent" }, { - "address": "0x8bEe2037448F096900Fd9affc427d38aE6CC0350", - "txHash": "0xd139fa6a4e828672ef5e2cb136b7ecee2412747f51f2831b3c76f909e78243d6", + "address": "0x457cCf29090fe5A24c19c1bc95F492168C0EaFdb", + "txHash": "0xd9b5da730acd059ea149aaea981eb7ae20be61cb63bc4a5257c10c6b9af2cc8d", "kind": "transparent" }, { - "address": "0x8D81A3DCd17030cD5F23Ac7370e4Efb10D2b3cA4", - "txHash": "0x386f4d3c4f9d5232dd7581c6223bed96cb36bea5cf786813768f8bcb9a4e5ec2", + "address": "0x525C7063E7C20997BaaE9bDa922159152D0e8417", + "txHash": "0xbd7a7948b34144b3856bbbc4e28f705f55ba8728fd4a526b7064dac2325e161e", "kind": "transparent" }, { - "address": "0xa722bdA6968F50778B973Ae2701e90200C564B49", - "txHash": "0x14451b9af518e5cc69627e2ea96b8fe691227543d1f5a3c7bb702a4e7b02648e", + "address": "0x6F6f570F45833E249e27022648a26F4076F48f78", + "txHash": "0x4eecdee8fc3482764284d8c704a05cc4f75d0082eff8f3a16446d193f950626a", "kind": "transparent" }, { - "address": "0x967AB65ef14c58bD4DcfFeaAA1ADb40a022140E5", - "txHash": "0x5e7bebb42e097a68d60a8c93031bd18d819ba32be239157797acf92271c22f79", + "address": "0xCA8c8688914e0F7096c920146cd0Ad85cD7Ae8b9", + "txHash": "0xb54910ccfa91554d2c373ee6f32b4840824e21211d24b16d7e85242e0b28a053", "kind": "transparent" }, { - "address": "0x0aec7c174554AF8aEc3680BB58431F6618311510", - "txHash": "0xccdda93b1b46617eb3d9ea3f34bf305ef0e96686ffed13ff029118049ba3c801", + "address": "0x638A246F0Ec8883eF68280293FFE8Cfbabe61B44", + "txHash": "0xb72913130ec38dce2de381004421f13d442ab172037c78e3693782468bf2b288", "kind": "transparent" }, { - "address": "0x871ACbEabBaf8Bed65c22ba7132beCFaBf8c27B5", - "txHash": "0xdb5eb2f70aa06917ee4445d749d10f619808e9eaa262b448e38e5b8ff8e331e3", + "address": "0x6C2d83262fF84cBaDb3e416D527403135D757892", + "txHash": "0xb1444a3ff98f2379ab7935f63a3e0fd36bcbcec5cbf070d47ec9890d0ec5e5c0", "kind": "transparent" }, { - "address": "0xC1e0A9DB9eA830c52603798481045688c8AE99C2", - "txHash": "0x478997b2f71a79609ab722ee6a40227463ce710b63055d37c51e6990ebaa1897", + "address": "0x2b5A4e5493d4a54E717057B127cf0C000C876f9B", + "txHash": "0x90f584f9f0c492ea231ea5c8541224d9d7c229ae5ed56022b5b812d67a8a878e", "kind": "transparent" }, { - "address": "0x1c9fD50dF7a4f066884b58A05D91e4b55005876A", - "txHash": "0xb0c01a75f5d06b74d0a69bd6706bdae5800fc3b0088ed0fa5a7bdb2bcb678392", + "address": "0x413b1AfCa96a3df5A686d8BFBF93d30688a7f7D9", + "txHash": "0x5c4f1dacd5add371d2c0a40b2c31a1d8aef85a822d2be9555da7548c4d23d75f", "kind": "transparent" }, { - "address": "0x71a0b8A2245A9770A4D887cE1E4eCc6C1d4FF28c", - "txHash": "0x847dc34dd64de21f428914a22de9aee1fbcb7ade2fbe20f42d4814773a29a06a", + "address": "0x2Dd78Fd9B8F40659Af32eF98555B8b31bC97A351", + "txHash": "0xb7259496335b7fb35af7b5e9a2ebdc8614eb4fdc7fa521343499fa5a8a13753d", "kind": "transparent" }, { - "address": "0xAe120F0df055428E45b264E7794A18c54a2a3fAF", - "txHash": "0x0989e27c7e04a3f37c145381d55a2e79b970665f72cf06c2c95a15ff5692611a", + "address": "0x56fC17a65ccFEC6B7ad0aDe9BD9416CB365B9BE8", + "txHash": "0x5a8335d102824dd9007ee7db80d7cdac075fb7de91afe9621b2a927ff1a32257", "kind": "transparent" }, { - "address": "0x9Fcca440F19c62CDF7f973eB6DDF218B15d4C71D", - "txHash": "0xef03ca6a3850c9b251622273dfec115bba85e64e5eaf2bd2cbf03789b8d3f132", + "address": "0x8D81A3DCd17030cD5F23Ac7370e4Efb10D2b3cA4", + "txHash": "0x87c7c1aa70775aa64fc032cf50528c3fd80670a5da350c3a80c618c95224d802", "kind": "transparent" }, { - "address": "0x22a9B82A6c3D2BFB68F324B2e8367f346Dd6f32a", - "txHash": "0x37f187c2f8bc58ceb77dd8e249af973553d036311c473a719b93660e3eacb348", + "address": "0xcC4c41415fc68B2fBf70102742A83cDe435e0Ca7", + "txHash": "0x5282c57db885d116d18cb3bf6cc7e59223e3ef03d77c6f37fe3a07cb3a933dd4", "kind": "transparent" }, { - "address": "0x7C8BaafA542c57fF9B2B90612bf8aB9E86e22C09", - "txHash": "0xb575ae62efa1837f5c31c779abef6dc3c8b9b83826eeb3bac77d7f67098c5747", + "address": "0x0Dd99d9f56A14E9D53b2DdC62D9f0bAbe806647A", + "txHash": "0x514533368500eee6509c31de203e734bf59c5c27e3ac972a9ef2b0c1b08b5328", "kind": "transparent" }, { - "address": "0x5e6CB7E728E1C320855587E1D9C6F7972ebdD6D5", - "txHash": "0xfd3ffe24e7fe01c6b8ea37c0b7d1c6499e892354a71af55fb35ea713325fc9a7", + "address": "0xeAd789bd8Ce8b9E94F5D0FCa99F8787c7e758817", + "txHash": "0x63bb666e4e5a9770382f7ff4121bbb5ef65893a322208a63095ab41dea27c4ef", "kind": "transparent" }, { - "address": "0x0Dd99d9f56A14E9D53b2DdC62D9f0bAbe806647A", - "txHash": "0x141325377637b5f5659929489d9563fc2896f04fe282af0dfccc7c81fde5e780", + "address": "0x1D8D70AD07C8E7E442AD78E4AC0A16f958Eba7F0", + "txHash": "0x3e7112ad4f255e4b75db4493a3da0c23e092936da3b65ff03949302452ae2c65", "kind": "transparent" }, { - "address": "0x95775fD3Afb1F4072794CA4ddA27F2444BCf8Ac3", - "txHash": "0x9ac0d8bec6bbc57798045fc72390dbd0a5688939909668919396af33be257765", + "address": "0xA9e6Bfa2BF53dE88FEb19761D9b2eE2e821bF1Bf", + "txHash": "0x48731f5d878fca847be622c5ac23975d444c5a56f53b5591f9f8c970209fa8a0", "kind": "transparent" }, { - "address": "0xd3FFD73C53F139cEBB80b6A524bE280955b3f4db", - "txHash": "0xc6fc726e4032525f7d70dd58dc916d78f4c7740e4d7cb19beed045b50327af69", + "address": "0xC32609C91d6B6b51D48f2611308FEf121B02041f", + "txHash": "0x70a0be82a35248f34d4c13f70b9363c0c6e464372fcfddfb039bf67dffcb9b90", "kind": "transparent" }, { - "address": "0x9fD16eA9E31233279975D99D5e8Fc91dd214c7Da", - "txHash": "0x7839c98420a48f4de43fdc6e918ce23eba94cb3f75e57d46e5ee0e66d19b181d", + "address": "0x262e2b50219620226C5fB5956432A88fffd94Ba7", + "txHash": "0xc41e41f1828cc238b7eeb7030162548b1a3096b3e640dacf962688fa8ec6ce71", "kind": "transparent" }, { - "address": "0x987e855776C03A4682639eEb14e65b3089EE6310", - "txHash": "0xe35ba4df7d77917cdbea12d00daaebf30ae71f7a04a0b5eca1a8acac96331d33", + "address": "0x90c84237fDdf091b1E63f369AF122EB46000bc70", + "txHash": "0xa33df5bea63f000521da7f70b2b0c162af4523e9e6211d4c3b800271f1efca26", "kind": "transparent" }, { - "address": "0xE8F7d98bE6722d42F29b50500B0E318EF2be4fc8", - "txHash": "0x85db7c964485b62786ab2fdfeeb121faf2f81aeda226ec9f8986e6653b52a847", + "address": "0x3D63c50AD04DD5aE394CAB562b7691DD5de7CF6f", + "txHash": "0x8bc71b6aa97ba1cd877466742a504c49e417fe662669b4a2b081d0276bb43ea7", "kind": "transparent" }, { - "address": "0x2c8ED11fd7A058096F2e5828799c68BE88744E2F", - "txHash": "0x941114205ffe600bf090358d1005ea173964618bed9243cdb969da7feb51c1a8", + "address": "0x124dDf9BdD2DdaD012ef1D5bBd77c00F05C610DA", + "txHash": "0x8929fbedf33ce78fef48e3e3f0b8804428cefd6353607c2b1558b0a7de379b22", "kind": "transparent" }, { - "address": "0x75c68e69775fA3E9DD38eA32E554f6BF259C1135", - "txHash": "0xe1f8794a28c285b7e7271eaca153b15fd65b1681b49d31c132779d4799e4372b", + "address": "0xe044814c9eD1e6442Af956a817c161192cBaE98F", + "txHash": "0x70988d9f2d2d26af925c3ca36f7197984bbbd88f0cd12d8eb152edd9650f1289", "kind": "transparent" }, { - "address": "0x975Ab64F4901Af5f0C96636deA0b9de3419D0c2F", - "txHash": "0x6a53ae4ff1a560bee86ce5f5c50c4ceeb07cff127bba709f5ba7baa354ef1428", + "address": "0xe14058B1c3def306e2cb37535647A04De03Db092", + "txHash": "0xb0d3084fd2e7f02d0e0e65b435b76cfe658be19e4a2851e1a075a8e45fab01f1", "kind": "transparent" }, { - "address": "0xCd7c00Ac6dc51e8dCc773971Ac9221cC582F3b1b", - "txHash": "0x76e0ddbfa83261b6824a4ccc92f7a6f652d9202e944f6bd96b5ac9ca11816649", + "address": "0x74ef2B06A1D2035C33244A4a263FF00B84504865", + "txHash": "0x070d9a910601f2a152b8ddc431485d82c605ffa67247ab4099bce33bae995849", "kind": "transparent" }, { - "address": "0xdF46e54aAadC1d55198A4a8b4674D7a4c927097A", - "txHash": "0x8bb6551888a457699fa92ba5a7168b325269b39f17e5e17a2c79e79565a007b1", + "address": "0x6f2E42BB4176e9A7352a8bF8886255Be9F3D2d13", + "txHash": "0xcfa2a39f24fffade54a8bde60574921a0fcc0333a6686a2e7a749a7fd8ff6493", "kind": "transparent" }, { - "address": "0xFD2Cf3b56a73c75A7535fFe44EBABe7723c64719", - "txHash": "0xf25fe32af8db5801973534b21dbfdf4a485ed894386dacb32846dc468eabf726", + "address": "0xA3f7BF5b0fa93176c260BBa57ceE85525De2BaF4", + "txHash": "0x28edb49ea4da17eb7224a989214caa015e633e376a836f715eb44aff79f39be8", "kind": "transparent" }, { - "address": "0x666D0c3da3dBc946D5128D06115bb4eed4595580", - "txHash": "0x990986f98ee30a342eca2b5250cec0c855a81f3bbfcb0ba3e60d7fe34c12680d", + "address": "0xa195ACcEB1945163160CD5703Ed43E4f78176a54", + "txHash": "0xdb30c45dd74aaa6c74e8d73368a1b84f6b686e9cf711f34c160d1a9c7c44f854", "kind": "transparent" }, { - "address": "0x1D8D70AD07C8E7E442AD78E4AC0A16f958Eba7F0", - "txHash": "0xf8015ca34415459227f867981ed4239de71a692c9e9f830cd075af10136038e3", + "address": "0x6212cb549De37c25071cF506aB7E115D140D9e42", + "txHash": "0xb13bd3fbeda1eb370b19a3b200d9c30f0f235bf64bd7c371b44f6cfa4009c358", "kind": "transparent" }, { - "address": "0x1E3b98102e19D3a164d239BdD190913C2F02E756", - "txHash": "0x218cb627e617e13d7c651d4754307bfee4bc77cd055f4e1a721115b1e96a9c8c", + "address": "0x46d4674578a2daBbD0CEAB0500c6c7867999db34", + "txHash": "0xea55e2fa28bda07583ae50e6197d36e152ebea98cbc717779a2dba1a4afa7ef6", "kind": "transparent" }, { - "address": "0x286B8DecD5ED79c962b2d8F4346CD97FF0E2C352", - "txHash": "0x769b0da0d6384519ddd2bc2b757e9ba458dd8f24b96bdec6fd5a5683ed24a892", + "address": "0x9155497EAE31D432C0b13dBCc0615a37f55a2c87", + "txHash": "0xcb0e5e66e3e36b6637638d9912f7dc9e6077d25434f57a5ef66777fdf11d353e", "kind": "transparent" }, { - "address": "0x70E5370b8981Abc6e14C91F4AcE823954EFC8eA3", - "txHash": "0x2722d3f8bc7cdf5d333ae69f9e5d39e664ac0c54ce2557be4557842fcb50ee85", + "address": "0x04d7478fDF318C3C22cECE62Da9D78ff94807D77", + "txHash": "0xca805f12eba1cdb3b0688da98fbd3d7c13cf2b1825565d08c4fda1353fe47941", "kind": "transparent" }, { - "address": "0x9338CA7d556248055f5751d85cDA7aD6eF254433", - "txHash": "0x847aea5e4fa487a54f832e29eeaed9425f0880451c1fdc0bbaacb62c3e6f84ac", + "address": "0xd9abC93F81394Bd161a1b24B03518e0a570bDEAd", + "txHash": "0xcdea17f15635d806d21c1123d599aa78918f980c5d7b060fa15ad2c4d7a5ca1c", "kind": "transparent" }, { - "address": "0x7Cf4be31f546c04787886358b9486ca3d62B9acf", - "txHash": "0x463c66d90784b195990ea7782050234b28a29767cf23acb77f8f3fb1cdf61ea8", + "address": "0x89ec9355b1Bcc964e576211c8B011BD709083f8d", + "txHash": "0x52f2351c0a8004440ac354585694262a29ff53bbf2f563baccd95b545c5b38fa", "kind": "transparent" }, { - "address": "0x0c626FC4A447b01554518550e30600136864640B", - "txHash": "0x134a79d4bad66a96f13a8febc5c4bd2c6baa72fb676ff5ef0e8fb968c7d3831a", + "address": "0x72662E4da74278430123cE51405c1e7A1B87C294", + "txHash": "0xc2f3537b1faf08ecda000126ff0b59c254c3e383ec9613e52d792f798b8ce12f", "kind": "transparent" }, { - "address": "0x2A590C461Db46bca129E8dBe5C3998A8fF402e76", - "txHash": "0x44fadbcb000c9a951e204ab01019e52b9f93f4d68a4d811c8323d4fb92fef9f3", + "address": "0x0B1a87021ec75fBaE919b1e86b2B1335FFC8F4d3", + "txHash": "0x7bc79f045871388eba66e28e5848278a8ed92c649c88090e2753314d7ca0d9c7", "kind": "transparent" }, { - "address": "0x2F54D1563963fC04770E85AF819c89Dc807f6a06", - "txHash": "0x25ccc006b8c84360f40cf9c6d586b455ace41b9866d8c4e6355a854c4cdc4a5c", + "address": "0x18eb8AF587dcd7E4F575040F6D800a6B5Cef6CAf", + "txHash": "0x8f91b9df55a5a391175d39d6af14e171e355e4f77410e71058707bd06f3d92c4", "kind": "transparent" }, { - "address": "0x9849832a1d8274aaeDb1112ad9686413461e7101", - "txHash": "0x1336cc9c961af9a0d20467a32c163c1cdba6048122c30063d894bc23c5af214c", + "address": "0xa4d0806d597146df93796A38435ABB2a3cb96677", + "txHash": "0x6150a435ab9ab235b3b484b4eaa69e9ecc683a243fe494b941b5ba45db6297cd", "kind": "transparent" }, { - "address": "0x4eaB29997D332A666c3C366217Ab177cF9A7C436", - "txHash": "0x1b6cda7c67148e59253b44611a0159788cbfbb5a8c34c75e141f0d5fc02bc5c2", + "address": "0xAE246E208ea35B3F23dE72b697D47044FC594D5F", + "txHash": "0x5add0c5c94a3ca5295eaebabc5a06c0922345c6393f7034a29f927dd723884ed", "kind": "transparent" }, { - "address": "0x627b9A657eac8c3463AD17009a424dFE3FDbd0b1", - "txHash": "0x9d1710379596039ab6933a88bae81be6280fecef635c5d3a75c87a4232aeaacc", + "address": "0xD56e6F296352B03C3c3386543185E9B8c2e5Fd0b", + "txHash": "0xdafa411813f74a4b113df8db6b112d08a04ab7d417a6bcaae7411825897d0b83", "kind": "transparent" }, { - "address": "0x8E45C0936fa1a65bDaD3222bEFeC6a03C83372cE", - "txHash": "0x491d96afc24bce38448191268f69e7a2b155a0e9afe5f717d0d1924d6852d797", + "address": "0xEC7cb8C3EBE77BA6d284F13296bb1372A8522c5F", + "txHash": "0xdd6913bbb6f7a24ebc732df0f0d86b482da1dac9df3318d53c603330579ffd2d", "kind": "transparent" }, { - "address": "0xf4B146FbA71F41E0592668ffbF264F1D186b2Ca8", - "txHash": "0x986cb41433ad27db133f2aa6538a08e09dac63ee758d0c8480b6b8edff03ac59", + "address": "0xCC5Bc84C3FDbcF262AaDD9F76652D6784293dD9e", + "txHash": "0x2f3cd5c20991536f62114a4d219f928bfbc6541093660f5dae88bcace0723c6a", "kind": "transparent" }, { - "address": "0x172076E0166D1F9Cc711C77Adf8488051744980C", - "txHash": "0x64b492e1258ec68345ca901a22d89524a7bbdc5f1ac883f9bbd06ff455a23502", + "address": "0x04F75a27cE2FDC591C71a88f1EcaC7e5Ce44f5Fc", + "txHash": "0xd147bef5d7caafc18b52c1c9a9dddf92ed1c66f2741b564b5c087cd81284e4a1", "kind": "transparent" }, { - "address": "0x720472c8ce72c2A2D711333e064ABD3E6BbEAdd3", - "txHash": "0x76a4a8f820066b57dcefc049aa1dbb8792ebc4683cd533acd1a2838c1540740b", + "address": "0x820638ecd57B55e51CE6EaD7D137962E7A201dD9", + "txHash": "0x20b851121bae9e302b821241c0b9c58f8d6e65357f7eb15eb837aeb11f1c6f64", "kind": "transparent" }, { - "address": "0xe8D2A1E88c91DCd5433208d4152Cc4F399a7e91d", - "txHash": "0x7552da2bc0284892697a52b8c90cf008119b46da16ec13e7e0f1a17bb808b5c3", + "address": "0x987Aa6E80e995d6A76C4d061eE324fc760Ea9F61", + "txHash": "0x047c5a10f7e30bcfc2b0e37428ffe48d082fdc24ef98da3a9a7d6bb67564cff7", "kind": "transparent" }, { - "address": "0xc0F115A19107322cFBf1cDBC7ea011C19EbDB4F8", - "txHash": "0x6dfed7e5ea7375cf29ba8478f5c09249ec06f18d72c76fc5c5d8f99ee5901092", + "address": "0x6B9C4119796C80Ced5a3884027985Fd31830555b", + "txHash": "0x7b26d1e0d28f3e2acd5c558a4dcaaa34a91c3b4b67e04bdb4ba503f9f7ffa530", "kind": "transparent" }, { - "address": "0xc96304e3c037f81dA488ed9dEa1D8F2a48278a75", - "txHash": "0xbd77b847b02a9cf9f9cd94020d7187470013980768dba6c3698f5ffa1cfcdbf2", + "address": "0xA8d14b3d9e2589CEA8644BB0f67EB90d21079f8B", + "txHash": "0x92c7b4342dfcf6597b7cac2482f80a078ea6e4c35bfc970737598d07f2b3fdfe", "kind": "transparent" }, { - "address": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "txHash": "0xd737a778d62a7b6d5d916196842651534a6ebbbd7265d205a4f2a9737bd8484a", + "address": "0x716473Fb4E7cD49c7d1eC7ec6d7490A03d9dA332", + "txHash": "0xec68f1272865dae247bf984d3a4f3911bbfd8ac52e910846a3c74c4238f3ce08", "kind": "transparent" }, { - "address": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", - "txHash": "0x362e37fc25a891bea8ec6be478c0274411589986fa5032b27c5f095ce43fe47e", + "address": "0x67Fc5Aa53440518DdbAd4B381fD4b86fFD77B776", + "txHash": "0xbc409c69b624d5e31c90f1c2cc06bbf1496451d2d69ba0bb40558141c0b76bdf", "kind": "transparent" }, { - "address": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "txHash": "0xd3916dc15abd61fa8445657420c6bc00b96652bc31a6a6bb2dc167d222cdda5c", + "address": "0xf4e55515952BdAb2aeB4010f777E802D61eB384f", + "txHash": "0xcc824cedc9c2d1facfadac4953680de01820899687e7f1a916797910f647d8a1", "kind": "transparent" }, { - "address": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", - "txHash": "0xff41c51821a448d0b0fc7f74302d567a4bdc9cf14798d804bf6093729ea12d97", + "address": "0xcE7e5946C14Cdd1f8de4473dB9c20fd65EBd47d0", + "txHash": "0xe7f86a6f53575353097d896f51476ee50a7f962d8b5054b35385868d86e9c31c", "kind": "transparent" }, { - "address": "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c", - "txHash": "0xa2ce52961234efb53f0f9e87c0fe151682e6d3f48660660735bbee54eb88690a", + "address": "0x4E76FbE44fa5Dae076a7f4f676250e7941421fbA", + "txHash": "0xa694075135c85059552d6d41cf1e0603006dfddad93e9d31940209e5a037e582", "kind": "transparent" }, { - "address": "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d", - "txHash": "0xa1cf1eead46119f56d8fe9d68772769f5dbfb78d3634e72e64f93cc3c9397c79", + "address": "0x49AeF2C4005Bf572665b09014A563B5b9E46Df21", + "txHash": "0xb5703d5b195a9de45ada2362b8de665b31de3a2a45a0bee421b455ef4735994a", "kind": "transparent" }, { - "address": "0x4A679253410272dd5232B3Ff7cF5dbB88f295319", - "txHash": "0x2080073aa33ace0acb53131d009c0a267390a40a86bb78778e616bf878285103", + "address": "0x72F853E9E202600c5017B5A060168603c3ed7368", + "txHash": "0xa1d321550ab3736a78ab228c2782d4459da284d18eab33c32996da30c393bc4f", "kind": "transparent" }, { - "address": "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F", - "txHash": "0x25d83dcd89de18e9d04a469fe987a7994ff10708913ac5b51c78f5649469ebc8", + "address": "0x26Df0Ea798971A97Ae121514B32999DfDb220e1f", + "txHash": "0xd0eda354fc5fd272e500781ee6691c27c7e0e0d3483775467aa2356eb335a286", "kind": "transparent" }, { - "address": "0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690", - "txHash": "0xe0a43ff87b1943efe30581e001aa422fca3f34ba3562fa2788e3b8f15e37deff", + "address": "0xa138575a030a2F4977D19Cc900781E7BE3fD2bc0", + "txHash": "0x9fdee9dd06fdc759fc91f471d1b3684b19d1d8270be49e97fb8d39f9d3f93955", "kind": "transparent" }, { - "address": "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB", - "txHash": "0x786d75624c914e2bd4fa6476594bb9a8d4242a0a50cf0bd30cdcc096784ae94c", + "address": "0xf524930660f75CF602e909C15528d58459AB2A56", + "txHash": "0xfab41dd05bc5da1b889f23d82f24025e14de5ad22dc91ca2f16b445bb1fbe2e3", "kind": "transparent" }, { - "address": "0xf5059a5D33d5853360D16C683c16e67980206f36", - "txHash": "0xd2efc98fb17eb8201df92136d0622f793804d763a8b931997f53cd77fa643da2", + "address": "0xAAF0F531b7947e8492f21862471d61d5305f7538", + "txHash": "0x7722858688206c872d784220a722921ea7369e521143aae389e5777d73ba06ab", "kind": "transparent" }, { - "address": "0x95401dc811bb5740090279Ba06cfA8fcF6113778", - "txHash": "0x54c0290e27f3ed4099f86a34c00c99291550a8e25cc991e05288fa39e751dfa3", + "address": "0x81f4f47aa3bBd154171C877b4d70F6C9EeCAb216", + "txHash": "0x1ab41f19451d90156ca7762cc60adc82fb6e79c7c145313095dbac5c8dc3d13b", "kind": "transparent" }, { - "address": "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF", - "txHash": "0x9209b8bfce59e71c46273c2a12ad1cb85689708d30710ef87520677f53470314", + "address": "0xE5b6F5e695BA6E4aeD92B68c4CC8Df1160D69A81", + "txHash": "0x59667bbc3b42fbaa3610a41927d78ff5babfa6ad716b138346269f571a107798", "kind": "transparent" }, { - "address": "0x8f86403A4DE0BB5791fa46B8e795C547942fE4Cf", - "txHash": "0x6a0ed12fc930254da04ff3bca52be0ab4c0d877a2f5ae8ebfe0ba919014045e5", + "address": "0x01c93598EeC9131C05a2450Cd033cbd8F82da31e", + "txHash": "0xbfee457090296d4f457c01143b26674dfd284653ff19b12a86af12ac78702e24", "kind": "transparent" }, { - "address": "0x4c5859f0F772848b2D91F1D83E2Fe57935348029", - "txHash": "0x646833670ffc4436024d9e81635afb275ede2b1db7df4fa3c3aac3f2470bd655", + "address": "0x33f4f8bf90d8AA3d19fF812B50e79c15Df0d0b03", + "txHash": "0xb79751c0d739d4015945684c70bbb88a88a1cbf11bbdbfc838b0a4a4953e0e09", "kind": "transparent" }, { - "address": "0x1291Be112d480055DaFd8a610b7d1e203891C274", - "txHash": "0x922d13462af2801b880ec1433394365795d8c0c53b534c4a68c3b96cb303213a", + "address": "0xE57A305f34fD0B6A55A66e8ec9559e6573100cBe", + "txHash": "0x8f9ca6b1d40672c1f6d8c6b40f9d7005a5816e211b507c6a317bcc1238477e2a", "kind": "transparent" }, { - "address": "0x2bdCC0de6bE1f7D2ee689a0342D76F52E8EFABa3", - "txHash": "0x6e78504964e9595a72ef5e45d94467a812870ec72633644d67e5a514b3f445a5", + "address": "0xB354ECF032e9e14442bE590D9Eaee37d2924B67A", + "txHash": "0x02d5b9851d21dc0906a8fa4a11ee0a46c257702e35d1424f62d8c1e6e8cc40f7", "kind": "transparent" }, { - "address": "0x7969c5eD335650692Bc04293B07F5BF2e7A673C0", - "txHash": "0x79498917eec9f2e01cf6892f2cff7190dee566a4d85eb11fa4e363b61f69c58c", + "address": "0x00436c9F57dfFd96cECd129c04D9E488c57266cF", + "txHash": "0x8ee64dc49999cd5a570d1d2bf0935c90bc44cb3302ae9fdb07026fb5636215f5", "kind": "transparent" }, { - "address": "0x1429859428C0aBc9C2C47C8Ee9FBaf82cFA0F20f", - "txHash": "0x0f1f16799829f1444c8fa8eb9d44c7627548b71c679f4c31aa4c27c4b2658a4e", + "address": "0xD962a5F050A5F0a2f8dF82aFc04CF1afFE585082", + "txHash": "0xd3cfa390401b3689f650f5a84a471fb1dac3144f814ba5c68a0ca96dbe1ea194", "kind": "transparent" }, { - "address": "0xB0D4afd8879eD9F52b28595d31B441D079B2Ca07", - "txHash": "0x08eea8b0d9672112b62eeadcdef55bb5428991d4f972c9a8986a209c7d44f7cb", + "address": "0x0BbfcD7a557FFB8A70CB0948FF680F0E573bbFf2", + "txHash": "0x0d596ceb8cf21d4405c76cb68485e6ebe70ff2213a0a10a03e3baedfb87e27fc", "kind": "transparent" }, { - "address": "0xdbC43Ba45381e02825b14322cDdd15eC4B3164E6", - "txHash": "0x869c9685251412cf2a94907927e28e7f335c71c3890810d5913e3c603fa01555", + "address": "0xdABF214E5a833269c192D9d70efDdE174680628D", + "txHash": "0x470e5e8b323b743fc39c839e15ffa873fcd4db079c430ff8184dbf4b37b50cc7", "kind": "transparent" }, { - "address": "0x04C89607413713Ec9775E14b954286519d836FEf", - "txHash": "0x09ec33b783e2f41c1f12bc1a7bd4c9bfde51e98fb090a7d137164120ee0ee531", + "address": "0x81F82957608f74441E085851cA5Cc091b23d17A2", + "txHash": "0x4190146c896598c68c29d0377f24ef245c16ec09a90ece513d33d0eeada2ad1f", "kind": "transparent" }, { - "address": "0xDC11f7E700A4c898AE5CAddB1082cFfa76512aDD", - "txHash": "0xfbc8bd875a8a8cd8f564b68bdebe6d9c1854e63c41217c0763d612023c24f3cb", + "address": "0x9a8164cA007ff0899140719E9aEC9a9C889CbF1E", + "txHash": "0x857a5aaacf569766236e5aebc09a04b349a45c69e271650b6a97f80f0b7d4ac3", "kind": "transparent" }, { - "address": "0x51A1ceB83B83F1985a81C295d1fF28Afef186E02", - "txHash": "0xf3d90af478c01e0dd7837cc1c803bcc9a3537279495ece64d47293539882cf6d", + "address": "0x69F94e46cbC82Ab02781ac4FaFc3580d21f1a888", + "txHash": "0xb4f5e349c9872dc25e0f63cafbb1c4880d4290914029334e8d19e78783bfbb4b", "kind": "transparent" }, { - "address": "0xfbC22278A96299D91d41C453234d97b4F5Eb9B2d", - "txHash": "0x82dd34891964349eb5a3a2f4d60de3d73ab8c24e133c89bc9e783ac61b486d1b", + "address": "0x5BFaaA02cAb795d576276a19CB1c2D2D2d652717", + "txHash": "0xfe7ea834e5ab2705869ed8875fbfba0931c19ab8ad3e1f9df2d0e97d3d678aed", "kind": "transparent" }, { - "address": "0x46b142DD1E924FAb83eCc3c08e4D46E82f005e0E", - "txHash": "0xbbaef08a9e4e6eb54e33c516335a05a8d65eba6561012b6a92bf1bbfe246c7f6", + "address": "0x0462Bc7390a33C8BB748d5c2ad76E93690A365c5", + "txHash": "0x37f058d7bc14303a55d8f1dc079e5c99cd48581b213fe98a49d8a214640925ca", "kind": "transparent" }, { - "address": "0x7A9Ec1d04904907De0ED7b6839CcdD59c3716AC9", - "txHash": "0xa44221030a6ddacb6322adf3563ab2340e8342cfa2ed206f890e6f024956946c", + "address": "0x1c32f8818e38a50d37d1E98c72B9516a50985227", + "txHash": "0x53615903713668531b92a8d168c9802444e3510634f846636bed3f19c3a62cb6", "kind": "transparent" }, { - "address": "0x49fd2BE640DB2910c2fAb69bB8531Ab6E76127ff", - "txHash": "0xf4372e7967f2de46a4f1b99152e749a9e45ba244ea7572208f7145fb98a2bf7c", + "address": "0x0BFC626B583e93A5F793Bc2cAa195BDBB2ED9F20", + "txHash": "0x68f9e119ad36bd813c75f168bcc18f2d6ebe9311ccf6c0f197973ea1391338bf", "kind": "transparent" }, { - "address": "0x4b6aB5F819A515382B0dEB6935D793817bB4af28", - "txHash": "0x6be1a2def46d03c18a6620cd31613b4a14b5d8779cf165f436b3fcd2f008674c", + "address": "0x76d05F58D14c0838EC630C8140eDC5aB7CD159Dc", + "txHash": "0x8a61e302d71aaa9b13882efd7c6c46b94268d0dd587ba5889e53e4a28c3f8c0b", "kind": "transparent" }, { - "address": "0xCace1b78160AE76398F486c8a18044da0d66d86D", - "txHash": "0x59d07830296af664a104c3be448fe953811cedaccb09153f221ed83482fe547a", + "address": "0xd2983525E903Ef198d5dD0777712EB66680463bc", + "txHash": "0x5fca9229b20da44f3144666bb04fcc9cbf3275b53a3b01aab4102eff23e05010", "kind": "transparent" }, { - "address": "0x276C216D241856199A83bf27b2286659e5b877D3", - "txHash": "0xa684885ec198ae04985f9b271f21eda0668e3063eb34b0f9a948a64e7e22f897", + "address": "0x862E3acDE54f01a4540C4505a4E199214Ff6cD49", + "txHash": "0xa8936ec9b5451e5e77ec4e47dcf9d562e3e30d094f9d5c84675c5b9d772df54a", "kind": "transparent" }, { - "address": "0x3347B4d90ebe72BeFb30444C9966B2B990aE9FcB", - "txHash": "0xfffa8ad1ecdd3252e0329a0f749797401f5dd07e84195b01cb663e3605d83bae", + "address": "0x37453c92a0E3C63949ba340ee213c6C97931F96D", + "txHash": "0xbf85ab6da2b534336e81a4d7331cc65dad37d052986942e7c3007b6bc2af08bc", "kind": "transparent" }, { - "address": "0x5fc748f1FEb28d7b76fa1c6B07D8ba2d5535177c", - "txHash": "0x12943c2bfb680868a63cce39ae895ff91cde04c856f55c52a792ff9475998329", + "address": "0xAAd4F7BB5FB661181D500829e60010043833a85B", + "txHash": "0xe1b60763743ba6c1a194aea827521bb61cc90634d5e3ab227e4f89cd3d80fa0d", "kind": "transparent" }, { - "address": "0xB82008565FdC7e44609fA118A4a681E92581e680", - "txHash": "0xa47686b1f474ae2ec468eb702e1cbee2f4141101734b1e7a9a5b8167a7d0e74e", + "address": "0x2B64822cf4bbDd77d386F51AA2B40c5cdbeb80b5", + "txHash": "0x77e1ead4aa50f7b80821e8d2e6e034d74cbc96744bb87f970c25389eddbd312b", "kind": "transparent" }, { - "address": "0x5FeaeBfB4439F3516c74939A9D04e95AFE82C4ae", - "txHash": "0x13961c446a2b82e6678fec6c600b33c4e9459a64b222e6431e610c960924c916", + "address": "0xCd9BC6cE45194398d12e27e1333D5e1d783104dD", + "txHash": "0xb531c3c5ac8c8360e4338e2f8697cb2555bb9d6fcaf7c6639f017873c13e3a34", "kind": "transparent" }, { - "address": "0x976fcd02f7C4773dd89C309fBF55D5923B4c98a1", - "txHash": "0x706a9714453b986e428be4af3c66867ba05429d80552a7a039ed504dbc140bf8", + "address": "0xd8E4Af8145A8288537B85878bb2371fa070Aa5eF", + "txHash": "0x650df3dbd878f14853e549e9a828a27a0d9b001a84ac53969875d2e5060a8a71", "kind": "transparent" }, { - "address": "0x70bDA08DBe07363968e9EE53d899dFE48560605B", - "txHash": "0xd67bbc025439d2a53f72a582b370249308756fb98f21d561bbff9e522dddcd12", + "address": "0x86c64cB21f88fA9E2c46b61c35889E75f08FDce1", + "txHash": "0xaa232771cb0aab5d40e983cee938c6c589702bc70ea2818dadb0a776f72d9bcd", "kind": "transparent" }, { - "address": "0x26B862f640357268Bd2d9E95bc81553a2Aa81D7E", - "txHash": "0x2f1558d3e8407915c820cb4eeef905eeb14d454aa886a906b6a7080c001c6962", + "address": "0xA901DA770A472Caf6E6698261BB02ea58C5d3235", + "txHash": "0x3580fa8e1c8bd78af16f2e81a57fe13a2606ff19120c53e589b276ea03b3de47", "kind": "transparent" }, { - "address": "0xd9140951d8aE6E5F625a02F5908535e16e3af964", - "txHash": "0x5f8c05d7d9c3b585b47e9f026a9a6519a2a34f9141de77b73c39821e8d87eb78", + "address": "0x5f58879Fe3a4330B6D85c1015971Ea6e5175AeDD", + "txHash": "0xd4e299027e3d8ccfdaad0081a0f32e7351edfbe7b49618abf9c5f45fe2ad0bb3", "kind": "transparent" }, { - "address": "0x56D13Eb21a625EdA8438F55DF2C31dC3632034f5", - "txHash": "0x423941cc1b87926138b8275d7c89a64fbafda5e59f059951a089e5d21e676081", + "address": "0x63ecE4C05B8fB272D16844E96702Ea2f26370982", + "txHash": "0x8bfdaaa815196dee2069ea6bd1f388b71eadbd2c96d55299be359d2af0d050b1", "kind": "transparent" }, { - "address": "0x8B190573374637f144AC8D37375d97fd84cBD3a0", - "txHash": "0x689201b4ba60668036a424b7f571aff66c166cdf58c08dd04bbdc2bdbae68f59", + "address": "0x8dF2a20225a5577fB173271c3777CF45305e816d", + "txHash": "0x9b7b3096794a63b4d51450921955e955d354bc25923cfbf3e31c9a343e5ca062", "kind": "transparent" }, { - "address": "0x9385556B571ab92bf6dC9a0DbD75429Dd4d56F91", - "txHash": "0x07090c916e76bcf7b4d764fac8735f54e00383dbefc1954edad72c1a6a6ee517", + "address": "0x645B0f55268eF561176f3247D06d0b7742f79819", + "txHash": "0xd49f19eb244b8dc40c25549188fb81cf117b7f6b601272a263368be772753c87", "kind": "transparent" }, { - "address": "0x01E21d7B8c39dc4C764c19b308Bd8b14B1ba139E", - "txHash": "0xdde786a98aee7fbfad14feee9b2e752bb68ac964f397027d941006958c4569e3", + "address": "0x8AFB0C54bAE39A5e56b984DF1C4b5702b2abf205", + "txHash": "0x1ae3d3f8208219f0eaa0ba6a8f7324ecac2ac3161b924bc0109e8b111d593b24", "kind": "transparent" }, { - "address": "0x3C1Cb427D20F15563aDa8C249E71db76d7183B6c", - "txHash": "0xdaa1e08b0d7bdeb9e1cb180ff4dab45ae99d000d8d9ca9046c3b457e9210eb14", + "address": "0x6B763F54D260aFF608CbbAeD8721c96992eC24Db", + "txHash": "0xfec94df2cdf86ef503b2038fac1771197448f427c03125a3f02018b554be3eaa", "kind": "transparent" }, { - "address": "0x8ac87219a0F5639BC01b470F87BA2b26356CB2B9", - "txHash": "0x23902369dae651ad305096afc784ac18b2ce11fd2081d79b565f5b9c3db88e92", + "address": "0x226A19c076a3047a53e5430B14bcDB42dbccA159", + "txHash": "0x521a9f7b8f4ec1ce512f91f2f55becb4db7210ff3b26c5981588578708db5215", "kind": "transparent" }, { - "address": "0x94fFA1C7330845646CE9128450F8e6c3B5e44F86", - "txHash": "0xe0a1c37bdec1121186af1f1acda016ae7b8a6edef744c92b239b4885d8c052fe", + "address": "0x093D305366218D6d09bA10448922F10814b031dd", + "txHash": "0xfa216cf7cdd8ec029f6b24e2e93d67ad2a347a0142111d4f3a6867fd513a2e5e", "kind": "transparent" }, { - "address": "0xa4E00CB342B36eC9fDc4B50b3d527c3643D4C49e", - "txHash": "0x94e6ffa10036b636d7aedd48d8a180aba3b5bea6fe8dc81150b1aba955217b02", + "address": "0x9581c795DBcaf408E477F6f1908a41BE43093122", + "txHash": "0xc6c8387f568c70e4d4b9d454342d31e35875c9891e1056a7f61c1714925cc1fb", "kind": "transparent" }, { - "address": "0x8ac5eE52F70AE01dB914bE459D8B3d50126fd6aE", - "txHash": "0xb9f8449d88fc777438feaadfe5b2c2315170d0777b43ccd7703b0f555361f343", + "address": "0x8a6E9a8E0bB561f8cdAb1619ECc4585aaF126D73", + "txHash": "0xa9ddbbc21bf7ee3e394de35131710093b2483877461ca60e17d051aee7278fec", "kind": "transparent" }, { - "address": "0x24d41dbc3d60d0784f8a937c59FBDe51440D5140", - "txHash": "0x598c837fc270e9d07fd948235a72a73cd016a3d1feca3406b4beb3035120976b", + "address": "0x492844c46CEf2d751433739fc3409B7A4a5ba9A7", + "txHash": "0x186ef67eb8696eaa83947f13acff4b8b94d48ff2e35a9a7a7959754d75c35072", "kind": "transparent" }, { - "address": "0xC976c932092ECcD8f328FfD85066C0c05ED54044", - "txHash": "0x3aba7253b48f035302ee6d53e57b0c658e7677cc62a43c8930c4a75db0379986", + "address": "0xC1dC7a8379885676a6Ea08E67b7Defd9a235De71", + "txHash": "0x652e1e23a142b0b237eaac3fdcd20503b88139c8898ddee803dc056f6d1f97f9", "kind": "transparent" }, { - "address": "0x3a622DB2db50f463dF562Dc5F341545A64C580fc", - "txHash": "0xa7c7e1f11b18d65aae6dc90831759ba07bf522d7c900346ccd917e1dbd5f53f8", + "address": "0xCC9676b9bf25cE45a3a5F88205239aFdDeCF1BC7", + "txHash": "0xa7f7e2fe37992e5a91f9c97e65fe685f27d5e40a5350132a3978a8dce563ad22", "kind": "transparent" }, { - "address": "0x6A47346e722937B60Df7a1149168c0E76DD6520f", - "txHash": "0x49f9109030545eb90ec46bce08e6b11a3dbce580b636d5f1fa8e41affae2ff76", + "address": "0xDC0a0B1Cd093d321bD1044B5e0Acb71b525ABb6b", + "txHash": "0x68bbe7e22f1d23d4ab2042d00fe1411037fa13047c9237241d9231d633eadfd2", "kind": "transparent" }, { - "address": "0x15Ff10fCc8A1a50bFbE07847A22664801eA79E0f", - "txHash": "0x29943c6bd0dbaa02132245beb8bb0b9c5deee553aa53623c71ac65707473084c", + "address": "0x1D87585dF4D48E52436e26521a3C5856E4553e3F", + "txHash": "0x35a809f62b98d43e497cd90531ab39b73c44fba8c0af9e3af53d51f72727501c", "kind": "transparent" }, { - "address": "0xAe9Ed85dE2670e3112590a2BB17b7283ddF44d9c", - "txHash": "0x3a682ec1e171d428ecb8272b08194892aaf0b9e958b457b11714164fcf7c2598", + "address": "0x2B8F5e69C35c1Aff4CCc71458CA26c2F313c3ed3", + "txHash": "0x9d3e02afc58219194c46d7a83fc71e4e34c0dc1ef13766fe33d1bce6489683bc", "kind": "transparent" }, { - "address": "0xd977422c9eE9B646f64A4C4389a6C98ad356d8C4", - "txHash": "0x086d1c32b98f3fd83a08dd24037275dbd37bd0afd347dcdb382897059477040e", + "address": "0xA899118f4BCCb62F8c6A37887a4F450D8a4E92E0", + "txHash": "0x47bda590191ddffd55a1885a85d0983ce4acb92275cc4f9a3fb61acd3e008fd4", "kind": "transparent" }, { - "address": "0x1eB5C49630E08e95Ba7f139BcF4B9BA171C9a8C7", - "txHash": "0x3445c4b902bf599f0568066d7951d06b42bb03f021f5d17f1261ab1f752dd40e", + "address": "0xD185B4846E5fd5419fD4D077dc636084BEfC51C0", + "txHash": "0x1b07ab0bc559e44322a87b7fefe57fd39637fe6b897c58dee261ea9121a493f8", "kind": "transparent" }, { - "address": "0xB1c05b498Cb58568B2470369FEB98B00702063dA", - "txHash": "0x4b7097468f2a9a35b7ada76b49b606b5feb40909e9daa065c0528f803bbe7ff5", + "address": "0xBCF063A9eB18bc3C6eB005791C61801B7cB16fe4", + "txHash": "0xb01249b359a7a83e23bdd6d016c064d5566d7cb218dffa83ea7084a9e32c818b", "kind": "transparent" }, { - "address": "0x92A00fc48Ad3dD4A8b5266a8F467a52Ac784fC83", - "txHash": "0xac36b4d1390fee33e88f0fc6a4dfa402fae500a64c2429c01bd0df32624e711a", + "address": "0x364C7188028348566E38D762f6095741c49f492B", + "txHash": "0xcd76725337e2d8a57f52764c8cf2cb46a9bd820ce4fd17666ae591cd5b286b7b", "kind": "transparent" }, { - "address": "0x021DBfF4A864Aa25c51F0ad2Cd73266Fde66199d", - "txHash": "0x610686d85b1b1ad15de8e8f9c1809cbed7a98724b647bad90ae3bceb6969530f", + "address": "0xF2cb3cfA36Bfb95E0FD855C1b41Ab19c517FcDB9", + "txHash": "0x9035914873124ff056a33a021a44a219aabf39a5275e76dba3ebfba68f24a46b", "kind": "transparent" }, { - "address": "0x4CF4dd3f71B67a7622ac250f8b10d266Dc5aEbcE", - "txHash": "0xefd534e821a6ebc1908018cf5eaa2f1d346325106439b7fa4605555949b084eb", + "address": "0xAB8Eb9F37bD460dF99b11767aa843a8F27FB7A6e", + "txHash": "0xa11e81566363f7f230efe90341e55ea0fd15afb9d3271debf333c10dc1ed7f96", "kind": "transparent" }, { - "address": "0x26291175Fa0Ea3C8583fEdEB56805eA68289b105", - "txHash": "0xb6a2f7f5e52810184b12b65d131e06843cadfd96897566a57cafbcf81c531e5a", + "address": "0xbB57FE325e769DEDB1236525a91cDEd842143fA7", + "txHash": "0x9ac319a1245d959286ae05898c7fb2700bb904ccb709c5b8cdf814109f2218d5", "kind": "transparent" }, { - "address": "0x840748F7Fd3EA956E5f4c88001da5CC1ABCBc038", - "txHash": "0x9caaae2c9ddd30e9c1937947196592dd8b4b6659c16aa4b4efba4324905aae21", + "address": "0x6712008CCD96751d586FdBa0DEf5495E0E22D904", + "txHash": "0x50270bae5b4851ae7b3fa95817c6b047b0514032a075eaff11546113075c2489", "kind": "transparent" }, { - "address": "0xa8d297D643a11cE83b432e87eEBce6bee0fd2bAb", - "txHash": "0x8e711d450c36c3ab11f9916cf2234ced3d91ef23d9ab3a8927f18ccc23449408", + "address": "0x1f9c84B161b2c7FFB540BC5354543108cCE37df1", + "txHash": "0xb030a77c749fa2b3a70ae7d43dfdf070bf5b7cf8ac2d2485573724d26390d498", "kind": "transparent" }, { - "address": "0x6Da3D07a6BF01F02fB41c02984a49B5d9Aa6ea92", - "txHash": "0xa4b3cdb40330944c4a13251227b73fac4e225e12ea6c0ce4967a501b4a4e505d", + "address": "0x87E8f332f34984728Da4c0A008a495A5Ec4E09a2", + "txHash": "0xb1ce0e3a6e4df055df0a2c8973acc3360f9dbe7b990d7ddebea8c8a820926e89", "kind": "transparent" }, { - "address": "0x3AeEBbEe7CE00B11cB202d6D0F38D696A3f4Ff8e", - "txHash": "0xea0f80acac00fcc17d12bf43effeae740f63e13f8cceb599efcb6083e8bfc7d4", + "address": "0x1E2e9190Cea3A97b5Aa85d9757117F499D31C47d", + "txHash": "0x6464500c3858597839c521bb841a23db0033086787eaa169d397cedf650dca54", "kind": "transparent" }, { - "address": "0xB2ff9d5e60d68A52cea3cd041b32f1390A880365", - "txHash": "0x8a4c0fe07fd764a3d14be2be3862d46ce7cc146a3231c766a1433da9ccad8c1c", + "address": "0x53DaB165b879542E9aDFC41c6474A9d797B9b042", + "txHash": "0x2f77810312700b228cf19587fe7081c447ce3e86640df5e84af29e464e2d8bc0", "kind": "transparent" }, { - "address": "0x889D9A5AF83525a2275e41464FAECcCb3337fF60", - "txHash": "0x5833ce18b2c83e750fc8a1d5f0c1e4efdda10c6ad43b24276845514368a6c4ff", + "address": "0x4BEA9aAe24187d6128403DC556510A18d727871a", + "txHash": "0xbe4dd20817c400315d8a3fe60a0c148fc3b6f7ca89bb6156bf712299a67c23d2", "kind": "transparent" }, { - "address": "0xf274De14171Ab928A5Ec19928cE35FaD91a42B64", - "txHash": "0xa134758e3746def8ae94cad0db95774d92232c9dbf4c13fa72f3ded0d23601e3", + "address": "0x64386BC53c213F23C6960d3e080139A0f9Ef1733", + "txHash": "0x80ad44dc7957e9e2c6916a6f530de95d9148bd9400747a18c5059a697376a5ed", "kind": "transparent" }, { - "address": "0x519b05b3655F4b89731B677d64CEcf761f4076f6", - "txHash": "0xeacf574610b07d6bca2ae2af7aa412ce6dd4c2ad3ddedfd2d8e60fe717a9f84f", + "address": "0x295129609d6876f5ECC62052Ba6bc082139A982c", + "txHash": "0x0fa37f342776f1f07e8aba35d5469d36de660c754044650fd124b676fef786ba", "kind": "transparent" }, { - "address": "0x057cD3082EfED32d5C907801BF3628B27D88fD80", - "txHash": "0x5fce92538b763f713c2436b720f80ba2384e0e26f60db4f68e6382e7e0e5bdad", + "address": "0x737b8F095E3c575a6Ae5FE1711AdB8F271E20269", + "txHash": "0x2435764c5ab4c316e60be1ac39887f57ee3554e1586db2572e0464040753d81f", "kind": "transparent" }, { - "address": "0xCA87833e830652C2ab07E1e03eBa4F2c246D3b58", - "txHash": "0xea282d0df28916b15589687ca56c1ed0aa18f888b85fdf115247ab58820b4ad9", + "address": "0x0Ac85d55ebFc7f7b0cF4c13bb3BD6Eaf3909d62d", + "txHash": "0x359a5272e53fb90671ada54f9c99b7acaa94ce392ab8c75fba9bc291c90233ce", "kind": "transparent" }, { - "address": "0x9Bb65b12162a51413272d10399282E730822Df44", - "txHash": "0x1e36a60e959745079294d75e4f8e7cbf3702b891160f900ca780016eeb3b77f7", + "address": "0x8C08821f5f94b519c853486eB131667AA528A460", + "txHash": "0xcd4c8f8be2ed5ae1c1f4c0c0c0d833241e57baf00fc7a2dca9790e82efe66928", "kind": "transparent" }, { - "address": "0xeA8AE08513f8230cAA8d031D28cB4Ac8CE720c68", - "txHash": "0x895196478e2a23cf9b9da10b3261e7d3695cec700eb31b421fe97b8722b38bd7", + "address": "0xcf23CE2ffa1DDd9Cc2b445aE6778c4DBD605a1A0", + "txHash": "0xbb260c19ff1d825440d04e37af93b6de3525284e6cbfbefe95c92f91e744de0a", "kind": "transparent" }, { - "address": "0x6431AF84d34F0522cAA58b221d94A150B5AdAC69", - "txHash": "0x941e7ec40c8e79640cbc951d860906ea1e23848b51c63aee30fc90d6cfd3c67f", + "address": "0x2963ff0196a901ec3F56d7531e7C4Ce8F226462B", + "txHash": "0x78f8228bc2842b6fd2e5c7f08ef5020a398b6f6af9d5af85d86486bd06a10159", "kind": "transparent" - } - ], - "impls": { - "c40768fafbe3ea42ffef060d46464e8d32ba4cdfefdd67342750efc3f767b218": { - "address": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "txHash": "0x79c526339e01b0e2cfa1a997afbf7d5ffc8045875d62164d5defddd9660cde11", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, - { - "label": "_status", - "offset": 0, - "slot": "101", - "type": "t_uint256", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" - }, - { - "label": "__gap", - "offset": 0, - "slot": "102", - "type": "t_array(t_uint256)49_storage", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:74" - }, - { - "label": "treasury", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:27" - }, - { - "label": "projectData", - "offset": 0, - "slot": "152", - "type": "t_mapping(t_bytes32,t_struct(Project)9543_storage)", - "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:30" - }, - { - "label": "packageData", - "offset": 0, - "slot": "153", - "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_struct(Package)9578_storage))", - "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:33" - }, - { - "label": "approvedUser", - "offset": 0, - "slot": "154", - "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_bool)))", - "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:36" - }, - { - "label": "collaboratorData", - "offset": 0, - "slot": "155", - "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9593_storage)))", - "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:39" - }, - { - "label": "observerData", - "offset": 0, - "slot": "156", - "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9600_storage)))", - "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:42" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(Collaborator)9593_storage)": { - "label": "mapping(address => struct Collaborator)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(Observer)9600_storage)": { - "label": "mapping(address => struct Observer)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_address,t_bool))": { - "label": "mapping(bytes32 => mapping(address => bool))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9593_storage))": { - "label": "mapping(bytes32 => mapping(address => struct Collaborator))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9600_storage))": { - "label": "mapping(bytes32 => mapping(address => struct Observer))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_bool)))": { - "label": "mapping(bytes32 => mapping(bytes32 => mapping(address => bool)))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9593_storage)))": { - "label": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator)))", - "numberOfBytes": "32" + }, + { + "address": "0xA13d4a67745D4Ed129AF590c495897eE2C7F8Cfc", + "txHash": "0x46fee71ae0dcfbc7761a465ae53ef33bc05de56999bc267f24c7489ffb8ec918", + "kind": "transparent" + }, + { + "address": "0x23228469b3439d81DC64e3523068976201bA08C3", + "txHash": "0xd2ded286070daefaf34265219f2f04ffc0f5a03f2a8f98c0373c71476fa3efa4", + "kind": "transparent" + }, + { + "address": "0x01D4648B896F53183d652C02619c226727477C82", + "txHash": "0x6ba81b50e1b69c22d6b9873e1e94a80d680ec324ec5bdbe47aa26755f475efa4", + "kind": "transparent" + }, + { + "address": "0xf4fa0d1C10c47cDe9F65D56c3eC977CbEb13449A", + "txHash": "0xc1068751eed6b651c3a4901b9a78c51d0d125128a4e983131dc0373080548b22", + "kind": "transparent" + }, + { + "address": "0x88B9Ad010A699Cc0c8C5C5EA8bAF90A0C375df1a", + "txHash": "0x9098bd1c0412da5e80af77823dd41e42d40edb2a94d1c2041fc0ef0d6720a289", + "kind": "transparent" + }, + { + "address": "0xAaC7D4A36DAb95955ef3c641c23F1fA46416CF71", + "txHash": "0x908413ce836f33c60462af42d47cc45f695a655e1ea04f6248771da5669205f1", + "kind": "transparent" + }, + { + "address": "0x594f79e85F6f041eb56cF6822FF4125ee316409E", + "txHash": "0x53d71a71480320331a5455aa9c96e64af1dad1e836fad17281985da7bae8eebf", + "kind": "transparent" + }, + { + "address": "0x2fe19128A8257182fdD77f90eA96D27cA342897A", + "txHash": "0x6c46eac956f7743ee76c0faf244a0b22def34d4014567e8543f0cb419383e82c", + "kind": "transparent" + }, + { + "address": "0xb9b0c96e4E7181926D2A7ed331C9C346dfa59b4D", + "txHash": "0x898024368e85909e5e61b5fe327fdd5b536e7ae784c69a7f557f708579eea48e", + "kind": "transparent" + }, + { + "address": "0xe3EF345391654121f385679613Cea79A692C2Dd8", + "txHash": "0x18ea4b71df31f6eaaa561685e568ca054475c37bb098166574ae7bb9a5543005", + "kind": "transparent" + }, + { + "address": "0x6D39d71fF4ab56a4873febd34e1a3BDefc01b41e", + "txHash": "0xc7b0fe6ab471c16c7770544583c12a6b87c80db50b395cae768775fad1703546", + "kind": "transparent" + }, + { + "address": "0xeF66010868Ff77119171628B7eFa0F6179779375", + "txHash": "0x235ce5c90453e10ed2457eddbdbd91fab3ccc302af81633256eef9988b807bd9", + "kind": "transparent" + }, + { + "address": "0x103416cfCD0D0a32b904Ab4fb69dF6E5B5aaDf2b", + "txHash": "0x7fc754bc79957d0d299ca0082867850868126189a583d4732d2114d263d393e9", + "kind": "transparent" + }, + { + "address": "0xACB5b53F9F193b99bcd8EF8544ddF4c398DE24a3", + "txHash": "0xb54eec53a2129d2b3850f4714757e0302bafd1177799c40f19893269b95792c1", + "kind": "transparent" + }, + { + "address": "0x6C3F7ed79b9D75486D0250946f7a20BDA74844Ba", + "txHash": "0x909be7e134f9ea23cbc29a136745c01eb8347a9942fdf8f4e0920807b0e7dcf8", + "kind": "transparent" + }, + { + "address": "0x43c5DF0c482c88Cef8005389F64c362eE720A5bC", + "txHash": "0xd2693bd5a0c259e1ec4814227b52040e00e5247b22ba509e6ce4216c4ddecaf0", + "kind": "transparent" + }, + { + "address": "0xF01f4567586c3A707EBEC87651320b2dd9F4A287", + "txHash": "0x4424569baadb3a3417af1525f70feed18f96f802c9a6548e355991a7a322cbb1", + "kind": "transparent" + }, + { + "address": "0xCaC60200c1Cb424f2C1e438c7Ee1B98d487f0254", + "txHash": "0x4ef8f40f4ffb1b17ba189cb49b7fa1199991280309ef7b88d1aaeb4ee445dff6", + "kind": "transparent" + }, + { + "address": "0xFf8FA9381caf61cB3368a6ec0b3F5C788028D0Cd", + "txHash": "0x0ddde961746e0980703c1c15b1fd911b46f770ecd376fb54727fbb7efb5e05a4", + "kind": "transparent" + }, + { + "address": "0x69eB226983E10D7318816134cd44BE3023dC74cd", + "txHash": "0x14a53f3e966dc1d12c898803c1525c5feb0e589af30d3f2d6786707faf9bd76a", + "kind": "transparent" + }, + { + "address": "0xD8fE7c45330c8b12cA0D4728D75557b9e7BeB24F", + "txHash": "0xe251d8618c06cc376953a5a09435acd776dca105910fcd654079b8b48b310716", + "kind": "transparent" + }, + { + "address": "0x3Aa338c8d5E6cefE95831cD0322b558677abA0f1", + "txHash": "0xfd183e40482bbc74e17650c22609f079af001225e76e82e8b74063f1e52885da", + "kind": "transparent" + }, + { + "address": "0x267fB71b280FB34B278CedE84180a9A9037C941b", + "txHash": "0x501ae8bf30ea1dbd2551f986ba1737efdf0f9d6ea5d63e996d0307284edc6ed7", + "kind": "transparent" + }, + { + "address": "0x9015957A2210BB8B10e27d8BBEEF8d9498f123eF", + "txHash": "0xf4a10b2329504d575d1e1548a5681ee17f8c37b30ffdf5eb1a6475d14ee4c2a1", + "kind": "transparent" + }, + { + "address": "0x9C6c49E1a5108eC5A2111c0b9B62624100d11e3a", + "txHash": "0xb118fa3de76c12a964e17c5e38dc0fcfc1942cc78e0ed7aa627f484c993d89b3", + "kind": "transparent" + }, + { + "address": "0x95D7fF1684a8F2e202097F28Dc2e56F773A55D02", + "txHash": "0x87ccb08dd43f3def1c9f385f7b64a36ca83bcb4969c201c9550a44b6cbeceb8d", + "kind": "transparent" + }, + { + "address": "0x633a7eB9b8912b22f3616013F3153de687F96074", + "txHash": "0xbb92e43912bd42b9616925357dd46e32cc0715d92aeb41ef9dbd5c4b0d4404e0", + "kind": "transparent" + }, + { + "address": "0x1E53bea57Dd5dDa7bFf1a1180a2f64a5c9e222f5", + "txHash": "0x0bf88e78fa04862975f297c2edd065678b54ae776b83057577ea16f7feb11fd7", + "kind": "transparent" + }, + { + "address": "0x17f4B55A352Be71CC03856765Ad04147119Aa09B", + "txHash": "0x91635e68bc304d8dfb994d4511f202b4fd9399d9a58e789baf1a8ca0be8dc2c1", + "kind": "transparent" + }, + { + "address": "0x08677Af0A7F54fE2a190bb1F75DE682fe596317e", + "txHash": "0xcc540ff89746020600d32eff1da6a61f63fc0fc64967820a2c3a2ad1b9a2d573", + "kind": "transparent" + }, + { + "address": "0x87a2688d6E41b23d802F74c6B1F06a8e8d118929", + "txHash": "0xde6e7a071b053e31c6a1e3c778cd23113aee167280edee97bc65f51ffb5b9765", + "kind": "transparent" + }, + { + "address": "0x8797847c9d63D8Ed9C30B058F408d4257A33B76C", + "txHash": "0xaad0a04762380782e7d2435cb6465d12e915e61ccb92715934e9035848a6944e", + "kind": "transparent" + }, + { + "address": "0xF816b7FfDa4a8aB6B68540D1993fCa98E462b3bc", + "txHash": "0xa501fe5542d39dfd5f590f042b914a014988158ea391b66aa2068ef27ff32f19", + "kind": "transparent" + }, + { + "address": "0xDB259fa7d7f9F68aE3ffC3c748516ba9567a7576", + "txHash": "0xc05d786a57888039ce4a8b6ae7dd2c11cc7bcbc37fab2348ab592ccfdced35a9", + "kind": "transparent" + }, + { + "address": "0x71d75C9A9e1a4fFa5a16556b51D6e630A4FA902A", + "txHash": "0xb1a4553030465f11524886ab3d87d64c444ad569d61cf5ad6bdb54bfdc5d3207", + "kind": "transparent" + }, + { + "address": "0x701dC26AcaD119E892695bb6A06956e2165C2052", + "txHash": "0x5bc2dd3d1f7e85e268aa5b979b30cb4a31252bb085eed282b04ab28f01d29f9a", + "kind": "transparent" + }, + { + "address": "0xbaee9B65349929Bd78f9878555bF78027Df7f101", + "txHash": "0x7f5f41aef1f79aecfb8a1bf9dbbb898398610154745a15f93ba6b5bff2168e39", + "kind": "transparent" + }, + { + "address": "0x886a2A3ABF5B79AA5dFF1C73016BD07CFc817e04", + "txHash": "0xe10b4371962b280d9d8ae1ad9b1c460ace1305967b4d0eaf8b7003016e8bb9db", + "kind": "transparent" + }, + { + "address": "0x449C286Ab90639fd9F6604F4f15Ec86bce2b8A61", + "txHash": "0xc359e21505ceeef6d8d34524fbc441b76753f555ad688b94a89aa299db0a602e", + "kind": "transparent" + }, + { + "address": "0x5aA185fbEFc205072FaecC6B9D564383e761f8C2", + "txHash": "0xdfdf10a3a3e25f1edbc76017fe814c59243e0a725aad5d213c7c1a729faf5c27", + "kind": "transparent" + }, + { + "address": "0x63275D081C4A77AE69f76c4952F9747a5559a519", + "txHash": "0x90b6cdd247a950e8b9b55d667854240a2be53974054a906355991cbdb184ccc3", + "kind": "transparent" + }, + { + "address": "0x67832b9Fc47eb3CdBF7275b95a29740EC58193D2", + "txHash": "0x760c7911c1e2371d5e508867013a677e7dc87af56094f73697fe4441e52afa31", + "kind": "transparent" + }, + { + "address": "0x832092FDF1D32A3A1b196270590fB0E25DF129FF", + "txHash": "0x9c06703c107505a17cc4dab86db19d8ad1409224fc7a77e1ea63be946c48e66a", + "kind": "transparent" + }, + { + "address": "0x8729c0238b265BaCF6fE397E8309897BB5c40473", + "txHash": "0xca18daf3344bd254c03018c4c88c68510d4df626bc767ab766105ec90adf1fdf", + "kind": "transparent" + }, + { + "address": "0xDf795df2e0ad240a82d773DA01a812B96345F9C5", + "txHash": "0x43aca645e2389aeca7291fdcf1e920d6ce7023a0634a39cadf1c8879f93e7959", + "kind": "transparent" + }, + { + "address": "0xDb731EaaFA0FFA7854A24C2379585a85D768Ed5C", + "txHash": "0xbf8f6e87264d16af441499df65dd3ac6626f3b33c71f5efe3854475232dfdd1f", + "kind": "transparent" + }, + { + "address": "0x335796f7A0F72368D1588839e38f163d90C92C80", + "txHash": "0x695de7eca08cd0ec9367f0d228296e7d14bb9fafd2b1e95c9165dc079e7feb76", + "kind": "transparent" + }, + { + "address": "0xC63db9682Ff11707CADbD72bf1A0354a7feF143B", + "txHash": "0x88eedea406ef4a987ce3a0230633620c7b9e4cb35807369dfe07acb8bc9202f6", + "kind": "transparent" + }, + { + "address": "0xF8b1d4d0A2Dd9Dd53200A4C6783a69c15E3a25F4", + "txHash": "0xcb16d63658b653c346934a4583ef6ef09a013683e77f958edefb25a3ac92be99", + "kind": "transparent" + } + ], + "impls": { + "b757b4f477459223715fef241dd92473e52a1efef72fe4ebb4feb829cf9bfb88": { + "address": "0x8A93d247134d91e0de6f96547cB0204e5BE8e5D8", + "txHash": "0x9cd5d3908b72209fde9edc1412bb177af39b6190281b183d802929c7a4dc039c", + "layout": { + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "_status", + "offset": 0, + "slot": "101", + "type": "t_uint256", + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" + }, + { + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:74" + }, + { + "label": "treasury", + "offset": 0, + "slot": "151", + "type": "t_address", + "contract": "ReBakedDAO", + "src": "contracts/ReBakedDAO.sol:27" + }, + { + "label": "projectData", + "offset": 0, + "slot": "152", + "type": "t_mapping(t_bytes32,t_struct(Project)9642_storage)", + "contract": "ReBakedDAO", + "src": "contracts/ReBakedDAO.sol:30" + }, + { + "label": "packageData", + "offset": 0, + "slot": "153", + "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_struct(Package)9675_storage))", + "contract": "ReBakedDAO", + "src": "contracts/ReBakedDAO.sol:33" + }, + { + "label": "approvedUser", + "offset": 0, + "slot": "154", + "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_bool)))", + "contract": "ReBakedDAO", + "src": "contracts/ReBakedDAO.sol:36" + }, + { + "label": "collaboratorData", + "offset": 0, + "slot": "155", + "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9690_storage)))", + "contract": "ReBakedDAO", + "src": "contracts/ReBakedDAO.sol:39" + }, + { + "label": "observerData", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9697_storage)))", + "contract": "ReBakedDAO", + "src": "contracts/ReBakedDAO.sol:42" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(Collaborator)9690_storage)": { + "label": "mapping(address => struct Collaborator)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(Observer)9697_storage)": { + "label": "mapping(address => struct Observer)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_mapping(t_address,t_bool))": { + "label": "mapping(bytes32 => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9690_storage))": { + "label": "mapping(bytes32 => mapping(address => struct Collaborator))", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9697_storage))": { + "label": "mapping(bytes32 => mapping(address => struct Observer))", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_bool)))": { + "label": "mapping(bytes32 => mapping(bytes32 => mapping(address => bool)))", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9690_storage)))": { + "label": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator)))", + "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9600_storage)))": { + "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9697_storage)))": { "label": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer)))", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_mapping(t_bytes32,t_struct(Package)9578_storage))": { + "t_mapping(t_bytes32,t_mapping(t_bytes32,t_struct(Package)9675_storage))": { "label": "mapping(bytes32 => mapping(bytes32 => struct Package))", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_struct(Package)9578_storage)": { + "t_mapping(t_bytes32,t_struct(Package)9675_storage)": { "label": "mapping(bytes32 => struct Package)", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_struct(Project)9543_storage)": { + "t_mapping(t_bytes32,t_struct(Project)9642_storage)": { "label": "mapping(bytes32 => struct Project)", "numberOfBytes": "32" }, - "t_struct(Collaborator)9593_storage": { + "t_struct(Collaborator)9690_storage": { "label": "struct Collaborator", "members": [ { @@ -3830,7 +3940,7 @@ ], "numberOfBytes": "224" }, - "t_struct(Observer)9600_storage": { + "t_struct(Observer)9697_storage": { "label": "struct Observer", "members": [ { @@ -3854,7 +3964,7 @@ ], "numberOfBytes": "96" }, - "t_struct(Package)9578_storage": { + "t_struct(Package)9675_storage": { "label": "struct Package", "members": [ { @@ -3905,64 +4015,58 @@ "offset": 0, "slot": "7" }, - { - "label": "collaboratorsGetBonus", - "type": "t_uint256", - "offset": 0, - "slot": "8" - }, { "label": "timeCreated", "type": "t_uint256", "offset": 0, - "slot": "9" + "slot": "8" }, { "label": "timeFinished", "type": "t_uint256", "offset": 0, - "slot": "10" + "slot": "9" }, { "label": "totalObservers", "type": "t_uint256", "offset": 0, - "slot": "11" + "slot": "10" }, { "label": "totalCollaborators", "type": "t_uint256", "offset": 0, - "slot": "12" + "slot": "11" }, { "label": "collaboratorsLimit", "type": "t_uint256", "offset": 0, - "slot": "13" + "slot": "12" }, { "label": "approvedCollaborators", "type": "t_uint256", "offset": 0, - "slot": "14" + "slot": "13" }, { "label": "timeCanceled", "type": "t_uint256", "offset": 0, - "slot": "15" + "slot": "14" }, { "label": "isActive", "type": "t_bool", "offset": 0, - "slot": "16" + "slot": "15" } ], - "numberOfBytes": "544" + "numberOfBytes": "512" }, - "t_struct(Project)9543_storage": { + "t_struct(Project)9642_storage": { "label": "struct Project", "members": [ { @@ -3993,225 +4097,34 @@ "label": "budgetPaid", "type": "t_uint256", "offset": 0, - "slot": "4" - }, - { - "label": "timeCreated", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "timeFinished", - "type": "t_uint256", - "offset": 0, - "slot": "6" - }, - { - "label": "totalPackages", - "type": "t_uint256", - "offset": 0, - "slot": "7" - }, - { - "label": "totalFinishedPackages", - "type": "t_uint256", - "offset": 0, - "slot": "8" - } - ], - "numberOfBytes": "288" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "label": "uint8", - "numberOfBytes": "1" - } - } - } - }, - "12ebbaa45d78637d59ee2caefa0726423bd7f0f62280acd55c4eea365e160ab1": { - "address": "0x457cCf29090fe5A24c19c1bc95F492168C0EaFdb", - "txHash": "0x841c4b448fa298fb75b276d2bcae2412b332216e51bd3a3030cfedb978ca0143", - "layout": { - "storage": [ - { - "label": "_initialized", - "offset": 0, - "slot": "0", - "type": "t_uint8", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", - "retypedFrom": "bool" - }, - { - "label": "_initializing", - "offset": 1, - "slot": "0", - "type": "t_bool", - "contract": "Initializable", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" - }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "__gap", - "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "ERC165Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:41" - }, - { - "label": "_name", - "offset": 0, - "slot": "101", - "type": "t_string_storage", - "contract": "ERC721Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:25" - }, - { - "label": "_symbol", - "offset": 0, - "slot": "102", - "type": "t_string_storage", - "contract": "ERC721Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:28" - }, - { - "label": "_owners", - "offset": 0, - "slot": "103", - "type": "t_mapping(t_uint256,t_address)", - "contract": "ERC721Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:31" - }, - { - "label": "_balances", - "offset": 0, - "slot": "104", - "type": "t_mapping(t_address,t_uint256)", - "contract": "ERC721Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34" - }, - { - "label": "_tokenApprovals", - "offset": 0, - "slot": "105", - "type": "t_mapping(t_uint256,t_address)", - "contract": "ERC721Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:37" - }, - { - "label": "_operatorApprovals", - "offset": 0, - "slot": "106", - "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", - "contract": "ERC721Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:40" - }, - { - "label": "__gap", - "offset": 0, - "slot": "107", - "type": "t_array(t_uint256)44_storage", - "contract": "ERC721Upgradeable", - "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:465" - }, - { - "label": "_tokenURIs", - "offset": 0, - "slot": "151", - "type": "t_mapping(t_uint256,t_string_storage)", - "contract": "ERC721URIStorageUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:21" - }, - { - "label": "__gap", - "offset": 0, - "slot": "152", - "type": "t_array(t_uint256)49_storage", - "contract": "ERC721URIStorageUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:74" - }, - { - "label": "learnToEarn", - "offset": 0, - "slot": "201", - "type": "t_address", - "contract": "NFTReward", - "src": "contracts/NFTReward.sol:15" - }, - { - "label": "tokenIds", - "offset": 0, - "slot": "202", - "type": "t_uint256", - "contract": "NFTReward", - "src": "contracts/NFTReward.sol:20" - }, - { - "label": "uri", - "offset": 0, - "slot": "203", - "type": "t_string_storage", - "contract": "NFTReward", - "src": "contracts/NFTReward.sol:25" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_array(t_uint256)44_storage": { - "label": "uint256[44]", - "numberOfBytes": "1408" - }, - "t_array(t_uint256)49_storage": { - "label": "uint256[49]", - "numberOfBytes": "1568" - }, - "t_array(t_uint256)50_storage": { - "label": "uint256[50]", - "numberOfBytes": "1600" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_mapping(t_address,t_bool))": { - "label": "mapping(address => mapping(address => bool))", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_uint256)": { - "label": "mapping(address => uint256)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_address)": { - "label": "mapping(uint256 => address)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_string_storage)": { - "label": "mapping(uint256 => string)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" + "slot": "4" + }, + { + "label": "timeCreated", + "type": "t_uint256", + "offset": 0, + "slot": "5" + }, + { + "label": "timeFinished", + "type": "t_uint256", + "offset": 0, + "slot": "6" + }, + { + "label": "totalPackages", + "type": "t_uint256", + "offset": 0, + "slot": "7" + }, + { + "label": "totalFinishedPackages", + "type": "t_uint256", + "offset": 0, + "slot": "8" + } + ], + "numberOfBytes": "288" }, "t_uint256": { "label": "uint256", @@ -4224,9 +4137,9 @@ } } }, - "b757b4f477459223715fef241dd92473e52a1efef72fe4ebb4feb829cf9bfb88": { - "address": "0x8A93d247134d91e0de6f96547cB0204e5BE8e5D8", - "txHash": "0x9cd5d3908b72209fde9edc1412bb177af39b6190281b183d802929c7a4dc039c", + "f648d9427fcfba5ce7710b2878a6e445643458be060687a185c4b23860772f2e": { + "address": "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "txHash": "0x5e3910138c59bca96e912a295c34860b9878bf3fdcff7b6049ac40f810a1da1d", "layout": { "storage": [ { @@ -4246,34 +4159,10 @@ "contract": "Initializable", "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" }, - { - "label": "__gap", - "offset": 0, - "slot": "1", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" - }, - { - "label": "_owner", - "offset": 0, - "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" - }, - { - "label": "__gap", - "offset": 0, - "slot": "52", - "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" - }, { "label": "_status", "offset": 0, - "slot": "101", + "slot": "1", "type": "t_uint256", "contract": "ReentrancyGuardUpgradeable", "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" @@ -4281,58 +4170,50 @@ { "label": "__gap", "offset": 0, - "slot": "102", + "slot": "2", "type": "t_array(t_uint256)49_storage", "contract": "ReentrancyGuardUpgradeable", "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:74" }, { - "label": "treasury", - "offset": 0, - "slot": "151", - "type": "t_address", - "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:27" - }, - { - "label": "projectData", + "label": "__gap", "offset": 0, - "slot": "152", - "type": "t_mapping(t_bytes32,t_struct(Project)9642_storage)", - "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:30" + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" }, { - "label": "packageData", + "label": "_owner", "offset": 0, - "slot": "153", - "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_struct(Package)9675_storage))", - "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:33" + "slot": "101", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" }, { - "label": "approvedUser", + "label": "__gap", "offset": 0, - "slot": "154", - "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_bool)))", - "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:36" + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" }, { - "label": "collaboratorData", + "label": "courseData", "offset": 0, - "slot": "155", - "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9690_storage)))", - "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:39" + "slot": "151", + "type": "t_mapping(t_bytes32,t_struct(Course)3437_storage)", + "contract": "LearnToEarn", + "src": "contracts/LearnToEarn.sol:17" }, { - "label": "observerData", + "label": "learnerData", "offset": 0, - "slot": "156", - "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9697_storage)))", - "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:42" + "slot": "152", + "type": "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Learner)3447_storage))", + "contract": "LearnToEarn", + "src": "contracts/LearnToEarn.sol:20" } ], "types": { @@ -4348,6 +4229,10 @@ "label": "uint256[50]", "numberOfBytes": "1600" }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, "t_bool": { "label": "bool", "numberOfBytes": "1" @@ -4356,239 +4241,359 @@ "label": "bytes32", "numberOfBytes": "32" }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(Collaborator)9690_storage)": { - "label": "mapping(address => struct Collaborator)", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_struct(Observer)9697_storage)": { - "label": "mapping(address => struct Observer)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_address,t_bool))": { - "label": "mapping(bytes32 => mapping(address => bool))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9690_storage))": { - "label": "mapping(bytes32 => mapping(address => struct Collaborator))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9697_storage))": { - "label": "mapping(bytes32 => mapping(address => struct Observer))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_bool)))": { - "label": "mapping(bytes32 => mapping(bytes32 => mapping(address => bool)))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9690_storage)))": { - "label": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator)))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9697_storage)))": { - "label": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer)))", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_mapping(t_bytes32,t_struct(Package)9675_storage))": { - "label": "mapping(bytes32 => mapping(bytes32 => struct Package))", + "t_mapping(t_address,t_struct(Learner)3447_storage)": { + "label": "mapping(address => struct Learner)", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_struct(Package)9675_storage)": { - "label": "mapping(bytes32 => struct Package)", + "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Learner)3447_storage))": { + "label": "mapping(bytes32 => mapping(address => struct Learner))", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_struct(Project)9642_storage)": { - "label": "mapping(bytes32 => struct Project)", + "t_mapping(t_bytes32,t_struct(Course)3437_storage)": { + "label": "mapping(bytes32 => struct Course)", "numberOfBytes": "32" }, - "t_struct(Collaborator)9690_storage": { - "label": "struct Collaborator", - "members": [ - { - "label": "mgp", - "type": "t_uint256", - "offset": 0, - "slot": "0" - }, - { - "label": "bonus", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "timeCreated", - "type": "t_uint256", - "offset": 0, - "slot": "2" - }, - { - "label": "timeMgpApproved", - "type": "t_uint256", - "offset": 0, - "slot": "3" - }, - { - "label": "timeMgpPaid", - "type": "t_uint256", - "offset": 0, - "slot": "4" - }, - { - "label": "timeBonusPaid", - "type": "t_uint256", - "offset": 0, - "slot": "5" - }, - { - "label": "isRemoved", - "type": "t_bool", - "offset": 0, - "slot": "6" - } - ], - "numberOfBytes": "224" - }, - "t_struct(Observer)9697_storage": { - "label": "struct Observer", + "t_struct(Course)3437_storage": { + "label": "struct Course", "members": [ { - "label": "timeCreated", - "type": "t_uint256", + "label": "creator", + "type": "t_address", "offset": 0, "slot": "0" }, { - "label": "timePaid", - "type": "t_uint256", + "label": "rewardAddress", + "type": "t_address", "offset": 0, "slot": "1" }, - { - "label": "isRemoved", - "type": "t_bool", - "offset": 0, - "slot": "2" - } - ], - "numberOfBytes": "96" - }, - "t_struct(Package)9675_storage": { - "label": "struct Package", - "members": [ { "label": "budget", "type": "t_uint256", "offset": 0, - "slot": "0" - }, - { - "label": "budgetAllocated", - "type": "t_uint256", - "offset": 0, - "slot": "1" - }, - { - "label": "budgetPaid", - "type": "t_uint256", - "offset": 0, "slot": "2" }, { - "label": "budgetObservers", + "label": "budgetAvailable", "type": "t_uint256", "offset": 0, "slot": "3" }, { - "label": "budgetObserversPaid", + "label": "bonus", "type": "t_uint256", "offset": 0, "slot": "4" }, { - "label": "bonus", + "label": "totalLearnersClaimedBonus", "type": "t_uint256", "offset": 0, "slot": "5" }, { - "label": "bonusPaid", + "label": "timeCreated", "type": "t_uint256", "offset": 0, "slot": "6" }, { - "label": "collaboratorsPaidBonus", + "label": "timeEndBonus", "type": "t_uint256", "offset": 0, "slot": "7" }, { - "label": "timeCreated", + "label": "timeRemoved", "type": "t_uint256", "offset": 0, "slot": "8" }, { - "label": "timeFinished", - "type": "t_uint256", + "label": "isBonusToken", + "type": "t_bool", "offset": 0, "slot": "9" }, { - "label": "totalObservers", - "type": "t_uint256", - "offset": 0, - "slot": "10" + "label": "canMintNFT", + "type": "t_bool", + "offset": 1, + "slot": "9" }, { - "label": "totalCollaborators", - "type": "t_uint256", - "offset": 0, - "slot": "11" - }, + "label": "isUsingDuration", + "type": "t_bool", + "offset": 2, + "slot": "9" + } + ], + "numberOfBytes": "320" + }, + "t_struct(Learner)3447_storage": { + "label": "struct Learner", + "members": [ { - "label": "collaboratorsLimit", + "label": "timeStarted", "type": "t_uint256", "offset": 0, - "slot": "12" + "slot": "0" }, { - "label": "approvedCollaborators", + "label": "timeCompleted", "type": "t_uint256", "offset": 0, - "slot": "13" + "slot": "1" }, { - "label": "timeCanceled", + "label": "timeRewarded", "type": "t_uint256", "offset": 0, - "slot": "14" + "slot": "2" }, { - "label": "isActive", - "type": "t_bool", + "label": "nftIds", + "type": "t_array(t_uint256)dyn_storage", "offset": 0, - "slot": "15" + "slot": "3" } ], - "numberOfBytes": "512" + "numberOfBytes": "128" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "2b862cc284752b12e95bc814afc1bfaaf793da4dc895ef72c1fcb2fe7ae0cb6d": { + "address": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", + "txHash": "0x8ea042d4adb2fdf95ba20252926c9974c51982bc45e641c2c86602c7b22cfde3", + "layout": { + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "learnToEarn", + "offset": 0, + "slot": "101", + "type": "t_address", + "contract": "TokenFactory", + "src": "contracts/TokenFactory.sol:18" + }, + { + "label": "templateNFTReward", + "offset": 0, + "slot": "102", + "type": "t_contract(INFTReward)3146", + "contract": "TokenFactory", + "src": "contracts/TokenFactory.sol:24" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(INFTReward)3146": { + "label": "contract INFTReward", + "numberOfBytes": "20" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "1e0d4c62d8abb1db80927b96b5ecf32801a2ed6394d75617fb7bd37277e68ec2": { + "address": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", + "txHash": "0x8d773c6a4c042e344b8407d2ac1b39a7c3242df7eaa8f0e969ce4676421e360f", + "layout": { + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "_status", + "offset": 0, + "slot": "1", + "type": "t_uint256", + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" + }, + { + "label": "__gap", + "offset": 0, + "slot": "2", + "type": "t_array(t_uint256)49_storage", + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:74" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "101", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "courseData", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_bytes32,t_struct(Course)8206_storage)", + "contract": "LearnToEarn", + "src": "contracts/LearnToEarn.sol:17" + }, + { + "label": "learnerData", + "offset": 0, + "slot": "152", + "type": "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Learner)8216_storage))", + "contract": "LearnToEarn", + "src": "contracts/LearnToEarn.sol:20" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" }, - "t_struct(Project)9642_storage": { - "label": "struct Project", + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(Learner)8216_storage)": { + "label": "mapping(address => struct Learner)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Learner)8216_storage))": { + "label": "mapping(bytes32 => mapping(address => struct Learner))", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(Course)8206_storage)": { + "label": "mapping(bytes32 => struct Course)", + "numberOfBytes": "32" + }, + "t_struct(Course)8206_storage": { + "label": "struct Course", "members": [ { - "label": "initiator", + "label": "creator", "type": "t_address", "offset": 0, "slot": "0" }, { - "label": "token", + "label": "rewardAddress", "type": "t_address", "offset": 0, "slot": "1" @@ -4600,43 +4605,91 @@ "slot": "2" }, { - "label": "budgetAllocated", + "label": "budgetAvailable", "type": "t_uint256", "offset": 0, "slot": "3" }, { - "label": "budgetPaid", + "label": "bonus", "type": "t_uint256", "offset": 0, "slot": "4" }, { - "label": "timeCreated", + "label": "totalLearnersClaimedBonus", "type": "t_uint256", "offset": 0, "slot": "5" }, { - "label": "timeFinished", + "label": "timeCreated", "type": "t_uint256", "offset": 0, "slot": "6" }, { - "label": "totalPackages", + "label": "timeEndBonus", "type": "t_uint256", "offset": 0, "slot": "7" }, { - "label": "totalFinishedPackages", + "label": "timeRemoved", "type": "t_uint256", "offset": 0, "slot": "8" + }, + { + "label": "isBonusToken", + "type": "t_bool", + "offset": 0, + "slot": "9" + }, + { + "label": "canMintNFT", + "type": "t_bool", + "offset": 1, + "slot": "9" + }, + { + "label": "isUsingDuration", + "type": "t_bool", + "offset": 2, + "slot": "9" } ], - "numberOfBytes": "288" + "numberOfBytes": "320" + }, + "t_struct(Learner)8216_storage": { + "label": "struct Learner", + "members": [ + { + "label": "timeStarted", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "timeCompleted", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "timeRewarded", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "nftIds", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" }, "t_uint256": { "label": "uint256", @@ -4649,9 +4702,9 @@ } } }, - "2b862cc284752b12e95bc814afc1bfaaf793da4dc895ef72c1fcb2fe7ae0cb6d": { - "address": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", - "txHash": "0x5e60568157903577cbe11f4c5fa7b8cfbe314538689cb823e44956f0e3a07a07", + "12ebbaa45d78637d59ee2caefa0726423bd7f0f62280acd55c4eea365e160ab1": { + "address": "0x725314746e727f586E9FCA65AeD5dBe45aA71B99", + "txHash": "0xc172768cb250e8b85e5cee06eb17a62eaf0224d54e0df08c0cefd3d8ca0b7de2", "layout": { "storage": [ { @@ -4680,36 +4733,108 @@ "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" }, { - "label": "_owner", + "label": "__gap", "offset": 0, "slot": "51", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + "type": "t_array(t_uint256)50_storage", + "contract": "ERC165Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:41" + }, + { + "label": "_name", + "offset": 0, + "slot": "101", + "type": "t_string_storage", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:25" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "102", + "type": "t_string_storage", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:28" + }, + { + "label": "_owners", + "offset": 0, + "slot": "103", + "type": "t_mapping(t_uint256,t_address)", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:31" + }, + { + "label": "_balances", + "offset": 0, + "slot": "104", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:34" + }, + { + "label": "_tokenApprovals", + "offset": 0, + "slot": "105", + "type": "t_mapping(t_uint256,t_address)", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:37" + }, + { + "label": "_operatorApprovals", + "offset": 0, + "slot": "106", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:40" }, { "label": "__gap", "offset": 0, - "slot": "52", + "slot": "107", + "type": "t_array(t_uint256)44_storage", + "contract": "ERC721Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:465" + }, + { + "label": "_tokenURIs", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "ERC721URIStorageUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "152", "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + "contract": "ERC721URIStorageUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:74" }, { "label": "learnToEarn", "offset": 0, - "slot": "101", + "slot": "201", "type": "t_address", - "contract": "TokenFactory", - "src": "contracts/TokenFactory.sol:18" + "contract": "NFTReward", + "src": "contracts/NFTReward.sol:15" }, { - "label": "templateNFTReward", + "label": "tokenIds", "offset": 0, - "slot": "102", - "type": "t_contract(INFTReward)8377", - "contract": "TokenFactory", - "src": "contracts/TokenFactory.sol:24" + "slot": "202", + "type": "t_uint256", + "contract": "NFTReward", + "src": "contracts/NFTReward.sol:20" + }, + { + "label": "uri", + "offset": 0, + "slot": "203", + "type": "t_string_storage", + "contract": "NFTReward", + "src": "contracts/NFTReward.sol:25" } ], "types": { @@ -4717,6 +4842,10 @@ "label": "address", "numberOfBytes": "20" }, + "t_array(t_uint256)44_storage": { + "label": "uint256[44]", + "numberOfBytes": "1408" + }, "t_array(t_uint256)49_storage": { "label": "uint256[49]", "numberOfBytes": "1568" @@ -4729,9 +4858,29 @@ "label": "bool", "numberOfBytes": "1" }, - "t_contract(INFTReward)8377": { - "label": "contract INFTReward", - "numberOfBytes": "20" + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" }, "t_uint256": { "label": "uint256", @@ -4744,9 +4893,9 @@ } } }, - "f648d9427fcfba5ce7710b2878a6e445643458be060687a185c4b23860772f2e": { - "address": "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "txHash": "0x5e3910138c59bca96e912a295c34860b9878bf3fdcff7b6049ac40f810a1da1d", + "46a230b691bdb0eb3203b9d47bcd885a0a52010f4b36d2d46e80e004bb7eb200": { + "address": "0xe24e7570Fe7207AdAaAa8c6c89a59850391B5276", + "txHash": "0x440b067b94ad6168cd3f93f026dbbf2728099ad34994b74960c6bb0e95eb6d18", "layout": { "storage": [ { @@ -4767,60 +4916,84 @@ "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" }, { - "label": "_status", + "label": "__gap", "offset": 0, "slot": "1", - "type": "t_uint256", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" }, { - "label": "__gap", + "label": "_owner", "offset": 0, - "slot": "2", - "type": "t_array(t_uint256)49_storage", - "contract": "ReentrancyGuardUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:74" + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" }, { "label": "__gap", "offset": 0, - "slot": "51", - "type": "t_array(t_uint256)50_storage", - "contract": "ContextUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" }, { - "label": "_owner", + "label": "_status", "offset": 0, "slot": "101", - "type": "t_address", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + "type": "t_uint256", + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" }, { "label": "__gap", "offset": 0, "slot": "102", "type": "t_array(t_uint256)49_storage", - "contract": "OwnableUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + "contract": "ReentrancyGuardUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:74" }, { - "label": "courseData", + "label": "treasury", "offset": 0, "slot": "151", - "type": "t_mapping(t_bytes32,t_struct(Course)3437_storage)", - "contract": "LearnToEarn", - "src": "contracts/LearnToEarn.sol:17" + "type": "t_address", + "contract": "ReBakedDAO", + "src": "contracts/ReBakedDAO.sol:30" }, { - "label": "learnerData", + "label": "projectData", "offset": 0, "slot": "152", - "type": "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Learner)3447_storage))", - "contract": "LearnToEarn", - "src": "contracts/LearnToEarn.sol:20" + "type": "t_mapping(t_bytes32,t_struct(Project)9615_storage)", + "contract": "ReBakedDAO", + "src": "contracts/ReBakedDAO.sol:33" + }, + { + "label": "packageData", + "offset": 0, + "slot": "153", + "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_struct(Package)9648_storage))", + "contract": "ReBakedDAO", + "src": "contracts/ReBakedDAO.sol:36" + }, + { + "label": "collaboratorData", + "offset": 0, + "slot": "154", + "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9663_storage)))", + "contract": "ReBakedDAO", + "src": "contracts/ReBakedDAO.sol:42" + }, + { + "label": "observerData", + "offset": 0, + "slot": "155", + "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9670_storage)))", + "contract": "ReBakedDAO", + "src": "contracts/ReBakedDAO.sol:45" } ], "types": { @@ -4836,10 +5009,6 @@ "label": "uint256[50]", "numberOfBytes": "1600" }, - "t_array(t_uint256)dyn_storage": { - "label": "uint256[]", - "numberOfBytes": "32" - }, "t_bool": { "label": "bool", "numberOfBytes": "1" @@ -4848,125 +5017,275 @@ "label": "bytes32", "numberOfBytes": "32" }, - "t_mapping(t_address,t_struct(Learner)3447_storage)": { - "label": "mapping(address => struct Learner)", + "t_mapping(t_address,t_struct(Collaborator)9663_storage)": { + "label": "mapping(address => struct Collaborator)", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Learner)3447_storage))": { - "label": "mapping(bytes32 => mapping(address => struct Learner))", + "t_mapping(t_address,t_struct(Observer)9670_storage)": { + "label": "mapping(address => struct Observer)", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_struct(Course)3437_storage)": { - "label": "mapping(bytes32 => struct Course)", + "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9663_storage))": { + "label": "mapping(bytes32 => mapping(address => struct Collaborator))", "numberOfBytes": "32" }, - "t_struct(Course)3437_storage": { - "label": "struct Course", + "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9670_storage))": { + "label": "mapping(bytes32 => mapping(address => struct Observer))", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9663_storage)))": { + "label": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator)))", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9670_storage)))": { + "label": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer)))", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_mapping(t_bytes32,t_struct(Package)9648_storage))": { + "label": "mapping(bytes32 => mapping(bytes32 => struct Package))", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(Package)9648_storage)": { + "label": "mapping(bytes32 => struct Package)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(Project)9615_storage)": { + "label": "mapping(bytes32 => struct Project)", + "numberOfBytes": "32" + }, + "t_struct(Collaborator)9663_storage": { + "label": "struct Collaborator", "members": [ { - "label": "creator", - "type": "t_address", + "label": "mgp", + "type": "t_uint256", "offset": 0, "slot": "0" }, { - "label": "rewardAddress", - "type": "t_address", + "label": "bonus", + "type": "t_uint256", "offset": 0, "slot": "1" }, { - "label": "budget", + "label": "timeCreated", "type": "t_uint256", "offset": 0, "slot": "2" }, { - "label": "budgetAvailable", + "label": "timeMgpApproved", "type": "t_uint256", "offset": 0, "slot": "3" }, { - "label": "bonus", + "label": "timeMgpPaid", "type": "t_uint256", "offset": 0, "slot": "4" }, { - "label": "totalLearnersClaimedBonus", + "label": "timeBonusPaid", "type": "t_uint256", "offset": 0, "slot": "5" }, + { + "label": "isRemoved", + "type": "t_bool", + "offset": 0, + "slot": "6" + } + ], + "numberOfBytes": "224" + }, + "t_struct(Observer)9670_storage": { + "label": "struct Observer", + "members": [ { "label": "timeCreated", "type": "t_uint256", "offset": 0, + "slot": "0" + }, + { + "label": "timePaid", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "isRemoved", + "type": "t_bool", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Package)9648_storage": { + "label": "struct Package", + "members": [ + { + "label": "budget", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "budgetAllocated", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "budgetPaid", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "budgetObservers", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "budgetObserversPaid", + "type": "t_uint256", + "offset": 0, + "slot": "4" + }, + { + "label": "bonus", + "type": "t_uint256", + "offset": 0, + "slot": "5" + }, + { + "label": "bonusPaid", + "type": "t_uint256", + "offset": 0, "slot": "6" }, { - "label": "timeEndBonus", + "label": "collaboratorsPaidBonus", "type": "t_uint256", "offset": 0, "slot": "7" }, { - "label": "timeRemoved", + "label": "timeCreated", "type": "t_uint256", "offset": 0, "slot": "8" }, { - "label": "isBonusToken", - "type": "t_bool", + "label": "timeFinished", + "type": "t_uint256", "offset": 0, "slot": "9" }, { - "label": "canMintNFT", - "type": "t_bool", - "offset": 1, - "slot": "9" + "label": "totalObservers", + "type": "t_uint256", + "offset": 0, + "slot": "10" }, { - "label": "isUsingDuration", + "label": "totalCollaborators", + "type": "t_uint256", + "offset": 0, + "slot": "11" + }, + { + "label": "collaboratorsLimit", + "type": "t_uint256", + "offset": 0, + "slot": "12" + }, + { + "label": "approvedCollaborators", + "type": "t_uint256", + "offset": 0, + "slot": "13" + }, + { + "label": "timeCanceled", + "type": "t_uint256", + "offset": 0, + "slot": "14" + }, + { + "label": "isActive", "type": "t_bool", - "offset": 2, - "slot": "9" + "offset": 0, + "slot": "15" } ], - "numberOfBytes": "320" + "numberOfBytes": "512" }, - "t_struct(Learner)3447_storage": { - "label": "struct Learner", + "t_struct(Project)9615_storage": { + "label": "struct Project", "members": [ { - "label": "timeStarted", - "type": "t_uint256", + "label": "initiator", + "type": "t_address", "offset": 0, "slot": "0" }, { - "label": "timeCompleted", - "type": "t_uint256", + "label": "token", + "type": "t_address", "offset": 0, "slot": "1" }, { - "label": "timeRewarded", + "label": "budget", "type": "t_uint256", "offset": 0, "slot": "2" }, { - "label": "nftIds", - "type": "t_array(t_uint256)dyn_storage", + "label": "budgetAllocated", + "type": "t_uint256", "offset": 0, "slot": "3" + }, + { + "label": "budgetPaid", + "type": "t_uint256", + "offset": 0, + "slot": "4" + }, + { + "label": "timeCreated", + "type": "t_uint256", + "offset": 0, + "slot": "5" + }, + { + "label": "timeFinished", + "type": "t_uint256", + "offset": 0, + "slot": "6" + }, + { + "label": "totalPackages", + "type": "t_uint256", + "offset": 0, + "slot": "7" + }, + { + "label": "totalFinishedPackages", + "type": "t_uint256", + "offset": 0, + "slot": "8" } ], - "numberOfBytes": "128" + "numberOfBytes": "288" }, "t_uint256": { "label": "uint256", diff --git a/contracts/LearnToEarn.sol b/contracts/LearnToEarn.sol index 1b6ed7f..0c710fb 100644 --- a/contracts/LearnToEarn.sol +++ b/contracts/LearnToEarn.sol @@ -161,7 +161,7 @@ contract LearnToEarn is ReentrancyGuardUpgradeable, OwnableUpgradeable, ILearnTo uint256 _timeStarted, uint256 _timeCompleted, uint256[] memory _nftIds - ) external onlyCreator(_courseId) activeCourse(_courseId) { + ) external onlyCreator(_courseId) activeCourse(_courseId) nonReentrant { Course storage course = courseData[_courseId]; require(course.timeCreated <= _timeStarted && _timeStarted < block.timestamp, "Invalid time start"); require(_timeCompleted > _timeStarted, "Invalid time complete"); @@ -208,7 +208,7 @@ contract LearnToEarn is ReentrancyGuardUpgradeable, OwnableUpgradeable, ILearnTo * * emit {WithdrawnBudget} events */ - function withdrawBudget(bytes32 _courseId) external onlyCreator(_courseId) activeCourse(_courseId) { + function withdrawBudget(bytes32 _courseId) external onlyCreator(_courseId) activeCourse(_courseId) nonReentrant { Course storage course = courseData[_courseId]; require(course.isBonusToken, "Invalid action"); require(course.budgetAvailable > 0, "Out of budget"); @@ -229,7 +229,7 @@ contract LearnToEarn is ReentrancyGuardUpgradeable, OwnableUpgradeable, ILearnTo * * emit {RemovedCourse} events */ - function removeCourse(bytes32 _courseId) external onlyCreator(_courseId) activeCourse(_courseId) { + function removeCourse(bytes32 _courseId) external onlyCreator(_courseId) activeCourse(_courseId) nonReentrant { Course storage course = courseData[_courseId]; course.timeRemoved = block.timestamp; diff --git a/contracts/LearnToEarnTest.sol b/contracts/LearnToEarnTest.sol deleted file mode 100644 index d2d4e8e..0000000 --- a/contracts/LearnToEarnTest.sol +++ /dev/null @@ -1,56 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.16; -import { LearnToEarn, Course } from "./LearnToEarn.sol"; -import { ERC721Test } from "./ERC721Test.sol"; - -contract LearnToEarnTest { - LearnToEarn learnToEarn; - ERC721Test erc721Test; - - constructor() { - learnToEarn = new LearnToEarn(); - learnToEarn.initialize(); - - erc721Test = new ERC721Test("Certificate", "PIONCE"); - } - - function _generateId(uint256 _nonce) private view returns (bytes32) { - return keccak256(abi.encodePacked(msg.sender, blockhash(block.number - 1), _nonce)); - } - - function test_createCourse() public { - address rewardAddress = address(0x1); - uint256 budget = 100; - uint256 bonus = 10; - uint256 timeStart = block.timestamp; - uint256 timeEndBonus = timeStart + 1 days; - bool isUsingDuration = true; - bool isBonusToken = true; - - learnToEarn.createCourse( - rewardAddress, - budget, - bonus, - timeStart, - timeEndBonus, - isUsingDuration, - isBonusToken - ); - - bytes32 courseId = _generateId(0); - - // Assert that the course data was stored correctly - Course memory course = learnToEarn.getCourseData(courseId); - assert(course.creator == address(this)); - assert(course.rewardAddress == rewardAddress); - assert(course.budget == budget); - assert(course.budgetAvailable == budget); - assert(course.bonus == bonus); - assert(course.timeCreated == timeStart); - assert(course.timeEndBonus == timeEndBonus); - assert(course.timeRemoved == 0); - assert(course.isUsingDuration == isUsingDuration); - assert(course.isBonusToken == isBonusToken); - assert(course.canMintNFT == false); - } -} \ No newline at end of file diff --git a/contracts/MyContract.sol b/contracts/MyContract.sol deleted file mode 100644 index d5cd9c8..0000000 --- a/contracts/MyContract.sol +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -contract MyContract { - uint256 public x; - - function setX(uint256 _x) public { - x = _x; - } -} - -import "github.com/crytic/echidna/blob/master/contracts/echidna.sol"; - -contract TestMyContract { - using Echidna for Echidna.Test; - - MyContract public myContract; - - function setUp() public { - myContract = new MyContract(); - } - - function test_setX() public { - Echidna.Test memory test = myContract.echidna_test(); - - // Ensure x is correctly set - test.call(myContract.setX(1)); - Echidna.assert(test, myContract.x() == 1); - - // Ensure x is correctly updated - test.call(myContract.setX(2)); - Echidna.assert(test, myContract.x() == 2); - } -} \ No newline at end of file diff --git a/contracts/ReBakedDAO.sol b/contracts/ReBakedDAO.sol index 08347b6..f8b2216 100644 --- a/contracts/ReBakedDAO.sol +++ b/contracts/ReBakedDAO.sol @@ -20,6 +20,9 @@ contract ReBakedDAO is IReBakedDAO, OwnableUpgradeable, ReentrancyGuardUpgradeab using CollaboratorLibrary for Collaborator; using ObserverLibrary for Observer; + // percent of royalty fee / 1e6 + uint256 public constant ROYALTY_FEE = 50000; + // Percent Precision PPM (parts per million) uint256 public constant PCT_PRECISION = 1e6; @@ -33,7 +36,7 @@ contract ReBakedDAO is IReBakedDAO, OwnableUpgradeable, ReentrancyGuardUpgradeab mapping(bytes32 => mapping(bytes32 => Package)) private packageData; // projectId => packageId => address collaborator - mapping(bytes32 => mapping(bytes32 => mapping(address => bool))) private approvedUser; + // mapping(bytes32 => mapping(bytes32 => mapping(address => bool))) private approvedUser; // projectId => packageId => address collaborator mapping(bytes32 => mapping(bytes32 => mapping(address => Collaborator))) private collaboratorData; @@ -133,7 +136,7 @@ contract ReBakedDAO is IReBakedDAO, OwnableUpgradeable, ReentrancyGuardUpgradeab bytes32 _packageId = _generatePackageId(_projectId, 0); Package storage package = packageData[_projectId][_packageId]; package._createPackage(_budget, _observerBudget, _bonus, _collaboratorsLimit); - IERC20Upgradeable(project.token).safeTransferFrom(_msgSender(), treasury, (total * 5) / 100); + IERC20Upgradeable(project.token).safeTransferFrom(_msgSender(), treasury, (total * ROYALTY_FEE) / PCT_PRECISION); if (_observers.length > 0) { require(_observerBudget > 0, "invalid observers budget"); @@ -159,7 +162,7 @@ contract ReBakedDAO is IReBakedDAO, OwnableUpgradeable, ReentrancyGuardUpgradeab address[] memory _collaborators, address[] memory _observers, uint256[] memory _scores - ) external onlyInitiator(_projectId) { + ) external onlyInitiator(_projectId) nonReentrant { Package storage package = packageData[_projectId][_packageId]; require(_collaborators.length == package.totalCollaborators, "invalid collaborators list"); require(_collaborators.length == _scores.length, "arrays' length mismatch"); @@ -202,7 +205,7 @@ contract ReBakedDAO is IReBakedDAO, OwnableUpgradeable, ReentrancyGuardUpgradeab address[] memory _collaborators, address[] memory _observers, bool _workStarted - ) external onlyInitiator(_projectId) { + ) external onlyInitiator(_projectId) nonReentrant { Package storage package = packageData[_projectId][_packageId]; require(_collaborators.length == package.totalCollaborators, "invalid collaborators length"); require(_observers.length == package.totalObservers, "invalid observers length"); @@ -214,8 +217,7 @@ contract ReBakedDAO is IReBakedDAO, OwnableUpgradeable, ReentrancyGuardUpgradeab for (uint256 i = 0; i < _observers.length; i++) _payObserverFee(_projectId, _packageId, _observers[i]); } - uint256 budgetToBeReverted_ = (package.budget - package.budgetPaid) + package.bonus; - budgetToBeReverted_ += (package.budgetObservers - package.budgetObserversPaid); + uint256 budgetToBeReverted_ = (package.budget - package.budgetPaid) + package.bonus + (package.budgetObservers - package.budgetObserversPaid); projectData[_projectId]._revertPackageBudget(budgetToBeReverted_); emit CanceledPackage(_projectId, _packageId, budgetToBeReverted_); @@ -255,8 +257,6 @@ contract ReBakedDAO is IReBakedDAO, OwnableUpgradeable, ReentrancyGuardUpgradeab bytes32 _packageId, address _collaborator ) external onlyInitiator(_projectId) { - approvedUser[_projectId][_packageId][_collaborator] = true; - collaboratorData[_projectId][_packageId][_collaborator]._approveCollaborator(); packageData[_projectId][_packageId]._approveCollaborator(); @@ -276,10 +276,10 @@ contract ReBakedDAO is IReBakedDAO, OwnableUpgradeable, ReentrancyGuardUpgradeab bytes32 _packageId, address _collaborator, bool _shouldPayMgp - ) external onlyInitiator(_projectId) { - require(!approvedUser[_projectId][_packageId][_collaborator], "collaborator approved already!"); - + ) external onlyInitiator(_projectId) nonReentrant { Collaborator storage collaborator = collaboratorData[_projectId][_packageId][_collaborator]; + require(collaborator.timeMgpApproved == 0, "collaborator approved already!"); + if (_shouldPayMgp) { _payCollaboratorRewards(_projectId, _packageId, _collaborator, 0); } @@ -297,9 +297,9 @@ contract ReBakedDAO is IReBakedDAO, OwnableUpgradeable, ReentrancyGuardUpgradeab * Emit {RemovedCollaborator} */ function selfRemove(bytes32 _projectId, bytes32 _packageId) external { - require(!approvedUser[_projectId][_packageId][_msgSender()], "collaborator approved already!"); - Collaborator storage collaborator = collaboratorData[_projectId][_packageId][_msgSender()]; + require(collaborator.timeMgpApproved == 0, "collaborator approved already!"); + collaborator._removeCollaborator(); packageData[_projectId][_packageId]._removeCollaborator(false, collaborator.mgp); diff --git a/contracts/test.py b/contracts/test.py deleted file mode 100644 index b598c58..0000000 --- a/contracts/test.py +++ /dev/null @@ -1,31 +0,0 @@ -import echidna -from echidna import test, property - -echidna.config.ENVIRONMENT = "debug" - -contract_source = "" - -def test_set_value(): - # Create a new instance of the contract - my_contract = MyContract() - - # Set the value to 42 - my_contract.setValue(42) - - # Assert that the value was set correctly - assert my_contract.value == 42 - -# Define the Echidna property function -@property -def value_is_greater_than_100(): - # Create a new instance of the contract - my_contract = MyContract() - - # Set the value to 42 - my_contract.setValue(42) - - # Assert that the value is greater than 100 - assert my_contract.value > 100 - -# Compile and run the tests -echidna.testing.TestBuilder().build_and_run(contract_source) \ No newline at end of file diff --git a/crytic-export/3ef46554809429534217e8863dee321b.json b/crytic-export/3ef46554809429534217e8863dee321b.json new file mode 100644 index 0000000..83441d7 --- /dev/null +++ b/crytic-export/3ef46554809429534217e8863dee321b.json @@ -0,0 +1 @@ +{"sources": {"/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "ContextUpgradeable": [2219], "Initializable": [282], "OwnableUpgradeable": [131]}, "id": 132, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "102:23:0"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "file": "../utils/ContextUpgradeable.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 132, "sourceUnit": 2220, "src": "127:41:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../proxy/utils/Initializable.sol", "id": 3, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 132, "sourceUnit": 283, "src": "169:42:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 5, "name": "Initializable", "nameLocations": ["748:13:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 282, "src": "748:13:0"}, "id": 6, "nodeType": "InheritanceSpecifier", "src": "748:13:0"}, {"baseName": {"id": 7, "name": "ContextUpgradeable", "nameLocations": ["763:18:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2219, "src": "763:18:0"}, "id": 8, "nodeType": "InheritanceSpecifier", "src": "763:18:0"}], "canonicalName": "OwnableUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 4, "nodeType": "StructuredDocumentation", "src": "213:494:0", "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."}, "fullyImplemented": true, "id": 131, "linearizedBaseContracts": [131, 2219, 282], "name": "OwnableUpgradeable", "nameLocation": "726:18:0", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 10, "mutability": "mutable", "name": "_owner", "nameLocation": "804:6:0", "nodeType": "VariableDeclaration", "scope": 131, "src": "788:22:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9, "name": "address", "nodeType": "ElementaryTypeName", "src": "788:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "private"}, {"anonymous": false, "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "id": 16, "name": "OwnershipTransferred", "nameLocation": "823:20:0", "nodeType": "EventDefinition", "parameters": {"id": 15, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12, "indexed": true, "mutability": "mutable", "name": "previousOwner", "nameLocation": "860:13:0", "nodeType": "VariableDeclaration", "scope": 16, "src": "844:29:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11, "name": "address", "nodeType": "ElementaryTypeName", "src": "844:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 14, "indexed": true, "mutability": "mutable", "name": "newOwner", "nameLocation": "891:8:0", "nodeType": "VariableDeclaration", "scope": 16, "src": "875:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 13, "name": "address", "nodeType": "ElementaryTypeName", "src": "875:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "843:57:0"}, "src": "817:84:0"}, {"body": {"id": 25, "nodeType": "Block", "src": "1055:43:0", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 22, "name": "__Ownable_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "1065:24:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 23, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1065:26:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 24, "nodeType": "ExpressionStatement", "src": "1065:26:0"}]}, "documentation": {"id": 17, "nodeType": "StructuredDocumentation", "src": "907:91:0", "text": " @dev Initializes the contract setting the deployer as the initial owner."}, "id": 26, "implemented": true, "kind": "function", "modifiers": [{"id": 20, "kind": "modifierInvocation", "modifierName": {"id": 19, "name": "onlyInitializing", "nameLocations": ["1038:16:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "1038:16:0"}, "nodeType": "ModifierInvocation", "src": "1038:16:0"}], "name": "__Ownable_init", "nameLocation": "1012:14:0", "nodeType": "FunctionDefinition", "parameters": {"id": 18, "nodeType": "ParameterList", "parameters": [], "src": "1026:2:0"}, "returnParameters": {"id": 21, "nodeType": "ParameterList", "parameters": [], "src": "1055:0:0"}, "scope": 131, "src": "1003:95:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 36, "nodeType": "Block", "src": "1166:49:0", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 32, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "1195:10:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 33, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1195:12:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 31, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, "src": "1176:18:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 34, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1176:32:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 35, "nodeType": "ExpressionStatement", "src": "1176:32:0"}]}, "id": 37, "implemented": true, "kind": "function", "modifiers": [{"id": 29, "kind": "modifierInvocation", "modifierName": {"id": 28, "name": "onlyInitializing", "nameLocations": ["1149:16:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "1149:16:0"}, "nodeType": "ModifierInvocation", "src": "1149:16:0"}], "name": "__Ownable_init_unchained", "nameLocation": "1113:24:0", "nodeType": "FunctionDefinition", "parameters": {"id": 27, "nodeType": "ParameterList", "parameters": [], "src": "1137:2:0"}, "returnParameters": {"id": 30, "nodeType": "ParameterList", "parameters": [], "src": "1166:0:0"}, "scope": 131, "src": "1104:111:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 44, "nodeType": "Block", "src": "1324:41:0", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 40, "name": "_checkOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, "src": "1334:11:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$__$", "typeString": "function () view"}}, "id": 41, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1334:13:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 42, "nodeType": "ExpressionStatement", "src": "1334:13:0"}, {"id": 43, "nodeType": "PlaceholderStatement", "src": "1357:1:0"}]}, "documentation": {"id": 38, "nodeType": "StructuredDocumentation", "src": "1221:77:0", "text": " @dev Throws if called by any account other than the owner."}, "id": 45, "name": "onlyOwner", "nameLocation": "1312:9:0", "nodeType": "ModifierDefinition", "parameters": {"id": 39, "nodeType": "ParameterList", "parameters": [], "src": "1321:2:0"}, "src": "1303:62:0", "virtual": false, "visibility": "internal"}, {"body": {"id": 53, "nodeType": "Block", "src": "1496:30:0", "statements": [{"expression": {"id": 51, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10, "src": "1513:6:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 50, "id": 52, "nodeType": "Return", "src": "1506:13:0"}]}, "documentation": {"id": 46, "nodeType": "StructuredDocumentation", "src": "1371:65:0", "text": " @dev Returns the address of the current owner."}, "functionSelector": "8da5cb5b", "id": 54, "implemented": true, "kind": "function", "modifiers": [], "name": "owner", "nameLocation": "1450:5:0", "nodeType": "FunctionDefinition", "parameters": {"id": 47, "nodeType": "ParameterList", "parameters": [], "src": "1455:2:0"}, "returnParameters": {"id": 50, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 49, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 54, "src": "1487:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 48, "name": "address", "nodeType": "ElementaryTypeName", "src": "1487:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1486:9:0"}, "scope": 131, "src": "1441:85:0", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 67, "nodeType": "Block", "src": "1644:85:0", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 63, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 59, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 54, "src": "1662:5:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 60, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1662:7:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 61, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "1673:10:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 62, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1673:12:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1662:23:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", "id": 64, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1687:34:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", "typeString": "literal_string \"Ownable: caller is not the owner\""}, "value": "Ownable: caller is not the owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", "typeString": "literal_string \"Ownable: caller is not the owner\""}], "id": 58, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1654:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 65, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1654:68:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 66, "nodeType": "ExpressionStatement", "src": "1654:68:0"}]}, "documentation": {"id": 55, "nodeType": "StructuredDocumentation", "src": "1532:62:0", "text": " @dev Throws if the sender is not the owner."}, "id": 68, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOwner", "nameLocation": "1608:11:0", "nodeType": "FunctionDefinition", "parameters": {"id": 56, "nodeType": "ParameterList", "parameters": [], "src": "1619:2:0"}, "returnParameters": {"id": 57, "nodeType": "ParameterList", "parameters": [], "src": "1644:0:0"}, "scope": 131, "src": "1599:130:0", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 81, "nodeType": "Block", "src": "2125:47:0", "statements": [{"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 77, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2162:1:0", "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": 76, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2154:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 75, "name": "address", "nodeType": "ElementaryTypeName", "src": "2154:7:0", "typeDescriptions": {}}}, "id": 78, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2154:10:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 74, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, "src": "2135:18:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 79, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2135:30:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 80, "nodeType": "ExpressionStatement", "src": "2135:30:0"}]}, "documentation": {"id": 69, "nodeType": "StructuredDocumentation", "src": "1735:331:0", "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."}, "functionSelector": "715018a6", "id": 82, "implemented": true, "kind": "function", "modifiers": [{"id": 72, "kind": "modifierInvocation", "modifierName": {"id": 71, "name": "onlyOwner", "nameLocations": ["2115:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 45, "src": "2115:9:0"}, "nodeType": "ModifierInvocation", "src": "2115:9:0"}], "name": "renounceOwnership", "nameLocation": "2080:17:0", "nodeType": "FunctionDefinition", "parameters": {"id": 70, "nodeType": "ParameterList", "parameters": [], "src": "2097:2:0"}, "returnParameters": {"id": 73, "nodeType": "ParameterList", "parameters": [], "src": "2125:0:0"}, "scope": 131, "src": "2071:101:0", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 104, "nodeType": "Block", "src": "2391:128:0", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 96, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 91, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85, "src": "2409:8:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 94, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2429:1:0", "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": 93, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2421:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 92, "name": "address", "nodeType": "ElementaryTypeName", "src": "2421:7:0", "typeDescriptions": {}}}, "id": 95, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2421:10:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2409:22:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", "id": 97, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2433:40:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", "typeString": "literal_string \"Ownable: new owner is the zero address\""}, "value": "Ownable: new owner is the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", "typeString": "literal_string \"Ownable: new owner is the zero address\""}], "id": 90, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2401:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 98, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2401:73:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 99, "nodeType": "ExpressionStatement", "src": "2401:73:0"}, {"expression": {"arguments": [{"id": 101, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85, "src": "2503:8:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 100, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, "src": "2484:18:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 102, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2484:28:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 103, "nodeType": "ExpressionStatement", "src": "2484:28:0"}]}, "documentation": {"id": 83, "nodeType": "StructuredDocumentation", "src": "2178:138:0", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."}, "functionSelector": "f2fde38b", "id": 105, "implemented": true, "kind": "function", "modifiers": [{"id": 88, "kind": "modifierInvocation", "modifierName": {"id": 87, "name": "onlyOwner", "nameLocations": ["2381:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 45, "src": "2381:9:0"}, "nodeType": "ModifierInvocation", "src": "2381:9:0"}], "name": "transferOwnership", "nameLocation": "2330:17:0", "nodeType": "FunctionDefinition", "parameters": {"id": 86, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 85, "mutability": "mutable", "name": "newOwner", "nameLocation": "2356:8:0", "nodeType": "VariableDeclaration", "scope": 105, "src": "2348:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 84, "name": "address", "nodeType": "ElementaryTypeName", "src": "2348:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2347:18:0"}, "returnParameters": {"id": 89, "nodeType": "ParameterList", "parameters": [], "src": "2391:0:0"}, "scope": 131, "src": "2321:198:0", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 124, "nodeType": "Block", "src": "2736:124:0", "statements": [{"assignments": [112], "declarations": [{"constant": false, "id": 112, "mutability": "mutable", "name": "oldOwner", "nameLocation": "2754:8:0", "nodeType": "VariableDeclaration", "scope": 124, "src": "2746:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 111, "name": "address", "nodeType": "ElementaryTypeName", "src": "2746:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 114, "initialValue": {"id": 113, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10, "src": "2765:6:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2746:25:0"}, {"expression": {"id": 117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 115, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10, "src": "2781:6:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 116, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "2790:8:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2781:17:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 118, "nodeType": "ExpressionStatement", "src": "2781:17:0"}, {"eventCall": {"arguments": [{"id": 120, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 112, "src": "2834:8:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 121, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "2844:8:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 119, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "2813:20:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 122, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2813:40:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 123, "nodeType": "EmitStatement", "src": "2808:45:0"}]}, "documentation": {"id": 106, "nodeType": "StructuredDocumentation", "src": "2525:143:0", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."}, "id": 125, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOwnership", "nameLocation": "2682:18:0", "nodeType": "FunctionDefinition", "parameters": {"id": 109, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 108, "mutability": "mutable", "name": "newOwner", "nameLocation": "2709:8:0", "nodeType": "VariableDeclaration", "scope": 125, "src": "2701:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 107, "name": "address", "nodeType": "ElementaryTypeName", "src": "2701:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2700:18:0"}, "returnParameters": {"id": 110, "nodeType": "ParameterList", "parameters": [], "src": "2736:0:0"}, "scope": 131, "src": "2673:187:0", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 126, "nodeType": "StructuredDocumentation", "src": "2866:254:0", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 130, "mutability": "mutable", "name": "__gap", "nameLocation": "3145:5:0", "nodeType": "VariableDeclaration", "scope": 131, "src": "3125:25:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage", "typeString": "uint256[49]"}, "typeName": {"baseType": {"id": 127, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3125:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 129, "length": {"hexValue": "3439", "id": 128, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3133:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_49_by_1", "typeString": "int_const 49"}, "value": "49"}, "nodeType": "ArrayTypeName", "src": "3125:11:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage_ptr", "typeString": "uint256[49]"}}, "visibility": "private"}], "scope": 132, "src": "708:2445:0", "usedErrors": []}], "src": "102:3052:0"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "Initializable": [282]}, "id": 283, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 133, "literals": ["solidity", "^", "0.8", ".2"], "nodeType": "PragmaDirective", "src": "113:23:1"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "file": "../../utils/AddressUpgradeable.sol", "id": 134, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 283, "sourceUnit": 2178, "src": "138:44:1", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [], "canonicalName": "Initializable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 135, "nodeType": "StructuredDocumentation", "src": "184:2198:1", "text": " @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="}, "fullyImplemented": true, "id": 282, "linearizedBaseContracts": [282], "name": "Initializable", "nameLocation": "2401:13:1", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "documentation": {"id": 136, "nodeType": "StructuredDocumentation", "src": "2421:109:1", "text": " @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"}, "id": 138, "mutability": "mutable", "name": "_initialized", "nameLocation": "2549:12:1", "nodeType": "VariableDeclaration", "scope": 282, "src": "2535:26:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 137, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2535:5:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "private"}, {"constant": false, "documentation": {"id": 139, "nodeType": "StructuredDocumentation", "src": "2568:91:1", "text": " @dev Indicates that the contract is in the process of being initialized."}, "id": 141, "mutability": "mutable", "name": "_initializing", "nameLocation": "2677:13:1", "nodeType": "VariableDeclaration", "scope": 282, "src": "2664:26:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 140, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2664:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "private"}, {"anonymous": false, "documentation": {"id": 142, "nodeType": "StructuredDocumentation", "src": "2697:90:1", "text": " @dev Triggered when the contract has been initialized or reinitialized."}, "eventSelector": "7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498", "id": 146, "name": "Initialized", "nameLocation": "2798:11:1", "nodeType": "EventDefinition", "parameters": {"id": 145, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 144, "indexed": false, "mutability": "mutable", "name": "version", "nameLocation": "2816:7:1", "nodeType": "VariableDeclaration", "scope": 146, "src": "2810:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 143, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2810:5:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "2809:15:1"}, "src": "2792:33:1"}, {"body": {"id": 201, "nodeType": "Block", "src": "3101:483:1", "statements": [{"assignments": [150], "declarations": [{"constant": false, "id": 150, "mutability": "mutable", "name": "isTopLevelCall", "nameLocation": "3116:14:1", "nodeType": "VariableDeclaration", "scope": 201, "src": "3111:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 149, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3111:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 153, "initialValue": {"id": 152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3133:14:1", "subExpression": {"id": 151, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "3134:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "3111:36:1"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 155, "name": "isTopLevelCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "3179:14:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 156, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "3197:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"hexValue": "31", "id": 157, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3212:1:1", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3197:16:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3179:34:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 160, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3178:36:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 168, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3219:45:1", "subExpression": {"arguments": [{"arguments": [{"id": 165, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3258:4:1", "typeDescriptions": {"typeIdentifier": "t_contract$_Initializable_$282", "typeString": "contract Initializable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_Initializable_$282", "typeString": "contract Initializable"}], "id": 164, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3250:7:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 163, "name": "address", "nodeType": "ElementaryTypeName", "src": "3250:7:1", "typeDescriptions": {}}}, "id": 166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3250:13:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 161, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2177, "src": "3220:18:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$2177_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3239:10:1", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 1952, "src": "3220:29:1", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 167, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3220:44:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 171, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 169, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "3268:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "31", "id": 170, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3284:1:1", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3268:17:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3219:66:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 173, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3218:68:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3178:108:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564", "id": 175, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3300:48:1", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}, "value": "Initializable: contract is already initialized"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}], "id": 154, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3157:7:1", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 176, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3157:201:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 177, "nodeType": "ExpressionStatement", "src": "3157:201:1"}, {"expression": {"id": 180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 178, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "3368:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "31", "id": 179, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3383:1:1", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3368:16:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "id": 181, "nodeType": "ExpressionStatement", "src": "3368:16:1"}, {"condition": {"id": 182, "name": "isTopLevelCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "3398:14:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 188, "nodeType": "IfStatement", "src": "3394:65:1", "trueBody": {"id": 187, "nodeType": "Block", "src": "3414:45:1", "statements": [{"expression": {"id": 185, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 183, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "3428:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 184, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3444:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "3428:20:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 186, "nodeType": "ExpressionStatement", "src": "3428:20:1"}]}}, {"id": 189, "nodeType": "PlaceholderStatement", "src": "3468:1:1"}, {"condition": {"id": 190, "name": "isTopLevelCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "3483:14:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 200, "nodeType": "IfStatement", "src": "3479:99:1", "trueBody": {"id": 199, "nodeType": "Block", "src": "3499:79:1", "statements": [{"expression": {"id": 193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 191, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "3513:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 192, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3529:5:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "3513:21:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 194, "nodeType": "ExpressionStatement", "src": "3513:21:1"}, {"eventCall": {"arguments": [{"hexValue": "31", "id": 196, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3565:1:1", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 195, "name": "Initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 146, "src": "3553:11:1", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)"}}, "id": 197, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3553:14:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 198, "nodeType": "EmitStatement", "src": "3548:19:1"}]}}]}, "documentation": {"id": 147, "nodeType": "StructuredDocumentation", "src": "2831:242:1", "text": " @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`."}, "id": 202, "name": "initializer", "nameLocation": "3087:11:1", "nodeType": "ModifierDefinition", "parameters": {"id": 148, "nodeType": "ParameterList", "parameters": [], "src": "3098:2:1"}, "src": "3078:506:1", "virtual": false, "visibility": "internal"}, {"body": {"id": 234, "nodeType": "Block", "src": "4399:255:1", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "4417:14:1", "subExpression": {"id": 208, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "4418:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 210, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "4435:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 211, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 205, "src": "4450:7:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "4435:22:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4417:40:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564", "id": 214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4459:48:1", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}, "value": "Initializable: contract is already initialized"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}], "id": 207, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4409:7:1", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 215, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4409:99:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 216, "nodeType": "ExpressionStatement", "src": "4409:99:1"}, {"expression": {"id": 219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 217, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "4518:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 218, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 205, "src": "4533:7:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "4518:22:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "id": 220, "nodeType": "ExpressionStatement", "src": "4518:22:1"}, {"expression": {"id": 223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 221, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "4550:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 222, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4566:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "4550:20:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 224, "nodeType": "ExpressionStatement", "src": "4550:20:1"}, {"id": 225, "nodeType": "PlaceholderStatement", "src": "4580:1:1"}, {"expression": {"id": 228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 226, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "4591:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 227, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4607:5:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "4591:21:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 229, "nodeType": "ExpressionStatement", "src": "4591:21:1"}, {"eventCall": {"arguments": [{"id": 231, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 205, "src": "4639:7:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 230, "name": "Initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 146, "src": "4627:11:1", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)"}}, "id": 232, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4627:20:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 233, "nodeType": "EmitStatement", "src": "4622:25:1"}]}, "documentation": {"id": 203, "nodeType": "StructuredDocumentation", "src": "3590:766:1", "text": " @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\n initialization step. This is essential to configure modules that are added through upgrades and that require\n initialization.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator."}, "id": 235, "name": "reinitializer", "nameLocation": "4370:13:1", "nodeType": "ModifierDefinition", "parameters": {"id": 206, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 205, "mutability": "mutable", "name": "version", "nameLocation": "4390:7:1", "nodeType": "VariableDeclaration", "scope": 235, "src": "4384:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 204, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4384:5:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "4383:15:1"}, "src": "4361:293:1", "virtual": false, "visibility": "internal"}, {"body": {"id": 244, "nodeType": "Block", "src": "4892:97:1", "statements": [{"expression": {"arguments": [{"id": 239, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "4910:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67", "id": 240, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4925:45:1", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b", "typeString": "literal_string \"Initializable: contract is not initializing\""}, "value": "Initializable: contract is not initializing"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b", "typeString": "literal_string \"Initializable: contract is not initializing\""}], "id": 238, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4902:7:1", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 241, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4902:69:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 242, "nodeType": "ExpressionStatement", "src": "4902:69:1"}, {"id": 243, "nodeType": "PlaceholderStatement", "src": "4981:1:1"}]}, "documentation": {"id": 236, "nodeType": "StructuredDocumentation", "src": "4660:199:1", "text": " @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."}, "id": 245, "name": "onlyInitializing", "nameLocation": "4873:16:1", "nodeType": "ModifierDefinition", "parameters": {"id": 237, "nodeType": "ParameterList", "parameters": [], "src": "4889:2:1"}, "src": "4864:125:1", "virtual": false, "visibility": "internal"}, {"body": {"id": 280, "nodeType": "Block", "src": "5437:230:1", "statements": [{"expression": {"arguments": [{"id": 251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "5455:14:1", "subExpression": {"id": 250, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "5456:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67", "id": 252, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5471:41:1", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a", "typeString": "literal_string \"Initializable: contract is initializing\""}, "value": "Initializable: contract is initializing"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a", "typeString": "literal_string \"Initializable: contract is initializing\""}], "id": 249, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5447:7:1", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 253, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5447:66:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 254, "nodeType": "ExpressionStatement", "src": "5447:66:1"}, {"condition": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 255, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "5527:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"arguments": [{"id": 258, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5547:5:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 257, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5547:5:1", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}], "id": 256, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "5542:4:1", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5542:11:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint8", "typeString": "type(uint8)"}}, "id": 260, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5554:3:1", "memberName": "max", "nodeType": "MemberAccess", "src": "5542:15:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "5527:30:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 279, "nodeType": "IfStatement", "src": "5523:138:1", "trueBody": {"id": 278, "nodeType": "Block", "src": "5559:102:1", "statements": [{"expression": {"id": 268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 262, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "5573:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"arguments": [{"id": 265, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5593:5:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 264, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5593:5:1", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}], "id": 263, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "5588:4:1", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 266, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5588:11:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint8", "typeString": "type(uint8)"}}, "id": 267, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5600:3:1", "memberName": "max", "nodeType": "MemberAccess", "src": "5588:15:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "5573:30:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "id": 269, "nodeType": "ExpressionStatement", "src": "5573:30:1"}, {"eventCall": {"arguments": [{"expression": {"arguments": [{"id": 273, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5639:5:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 272, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5639:5:1", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}], "id": 271, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "5634:4:1", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 274, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5634:11:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint8", "typeString": "type(uint8)"}}, "id": 275, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5646:3:1", "memberName": "max", "nodeType": "MemberAccess", "src": "5634:15:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 270, "name": "Initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 146, "src": "5622:11:1", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)"}}, "id": 276, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5622:28:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 277, "nodeType": "EmitStatement", "src": "5617:33:1"}]}}]}, "documentation": {"id": 246, "nodeType": "StructuredDocumentation", "src": "4995:388:1", "text": " @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies."}, "id": 281, "implemented": true, "kind": "function", "modifiers": [], "name": "_disableInitializers", "nameLocation": "5397:20:1", "nodeType": "FunctionDefinition", "parameters": {"id": 247, "nodeType": "ParameterList", "parameters": [], "src": "5417:2:1"}, "returnParameters": {"id": 248, "nodeType": "ParameterList", "parameters": [], "src": "5437:0:1"}, "scope": 282, "src": "5388:279:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}], "scope": 283, "src": "2383:3286:1", "usedErrors": []}], "src": "113:5557:1"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "Initializable": [282], "ReentrancyGuardUpgradeable": [341]}, "id": 342, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 284, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "97:23:2"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../proxy/utils/Initializable.sol", "id": 285, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 342, "sourceUnit": 283, "src": "121:42:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 287, "name": "Initializable", "nameLocations": ["964:13:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 282, "src": "964:13:2"}, "id": 288, "nodeType": "InheritanceSpecifier", "src": "964:13:2"}], "canonicalName": "ReentrancyGuardUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 286, "nodeType": "StructuredDocumentation", "src": "165:750:2", "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 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": 341, "linearizedBaseContracts": [341, 282], "name": "ReentrancyGuardUpgradeable", "nameLocation": "934:26:2", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 291, "mutability": "constant", "name": "_NOT_ENTERED", "nameLocation": "1757:12:2", "nodeType": "VariableDeclaration", "scope": 341, "src": "1732:41:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 289, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1732:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31", "id": 290, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1772:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "visibility": "private"}, {"constant": true, "id": 294, "mutability": "constant", "name": "_ENTERED", "nameLocation": "1804:8:2", "nodeType": "VariableDeclaration", "scope": 341, "src": "1779:37:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 292, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1779:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "32", "id": 293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1815:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "visibility": "private"}, {"constant": false, "id": 296, "mutability": "mutable", "name": "_status", "nameLocation": "1839:7:2", "nodeType": "VariableDeclaration", "scope": 341, "src": "1823:23:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 295, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1823:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 304, "nodeType": "Block", "src": "1913:51:2", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 301, "name": "__ReentrancyGuard_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 315, "src": "1923:32:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 302, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1923:34:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 303, "nodeType": "ExpressionStatement", "src": "1923:34:2"}]}, "id": 305, "implemented": true, "kind": "function", "modifiers": [{"id": 299, "kind": "modifierInvocation", "modifierName": {"id": 298, "name": "onlyInitializing", "nameLocations": ["1896:16:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "1896:16:2"}, "nodeType": "ModifierInvocation", "src": "1896:16:2"}], "name": "__ReentrancyGuard_init", "nameLocation": "1862:22:2", "nodeType": "FunctionDefinition", "parameters": {"id": 297, "nodeType": "ParameterList", "parameters": [], "src": "1884:2:2"}, "returnParameters": {"id": 300, "nodeType": "ParameterList", "parameters": [], "src": "1913:0:2"}, "scope": 341, "src": "1853:111:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 314, "nodeType": "Block", "src": "2040:39:2", "statements": [{"expression": {"id": 312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 310, "name": "_status", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 296, "src": "2050:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 311, "name": "_NOT_ENTERED", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 291, "src": "2060:12:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2050:22:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 313, "nodeType": "ExpressionStatement", "src": "2050:22:2"}]}, "id": 315, "implemented": true, "kind": "function", "modifiers": [{"id": 308, "kind": "modifierInvocation", "modifierName": {"id": 307, "name": "onlyInitializing", "nameLocations": ["2023:16:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "2023:16:2"}, "nodeType": "ModifierInvocation", "src": "2023:16:2"}], "name": "__ReentrancyGuard_init_unchained", "nameLocation": "1979:32:2", "nodeType": "FunctionDefinition", "parameters": {"id": 306, "nodeType": "ParameterList", "parameters": [], "src": "2011:2:2"}, "returnParameters": {"id": 309, "nodeType": "ParameterList", "parameters": [], "src": "2040:0:2"}, "scope": 341, "src": "1970:109:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 334, "nodeType": "Block", "src": "2480:421:2", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 319, "name": "_status", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 296, "src": "2569:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 320, "name": "_ENTERED", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 294, "src": "2580:8:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2569:19:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c", "id": 322, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2590:33:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619", "typeString": "literal_string \"ReentrancyGuard: reentrant call\""}, "value": "ReentrancyGuard: reentrant call"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619", "typeString": "literal_string \"ReentrancyGuard: reentrant call\""}], "id": 318, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2561:7:2", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 323, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2561:63:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 324, "nodeType": "ExpressionStatement", "src": "2561:63:2"}, {"expression": {"id": 327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 325, "name": "_status", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 296, "src": "2699:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 326, "name": "_ENTERED", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 294, "src": "2709:8:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2699:18:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 328, "nodeType": "ExpressionStatement", "src": "2699:18:2"}, {"id": 329, "nodeType": "PlaceholderStatement", "src": "2728:1:2"}, {"expression": {"id": 332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 330, "name": "_status", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 296, "src": "2872:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 331, "name": "_NOT_ENTERED", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 291, "src": "2882:12:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2872:22:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 333, "nodeType": "ExpressionStatement", "src": "2872:22:2"}]}, "documentation": {"id": 316, "nodeType": "StructuredDocumentation", "src": "2085:366:2", "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": 335, "name": "nonReentrant", "nameLocation": "2465:12:2", "nodeType": "ModifierDefinition", "parameters": {"id": 317, "nodeType": "ParameterList", "parameters": [], "src": "2477:2:2"}, "src": "2456:445:2", "virtual": false, "visibility": "internal"}, {"constant": false, "documentation": {"id": 336, "nodeType": "StructuredDocumentation", "src": "2907:254:2", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 340, "mutability": "mutable", "name": "__gap", "nameLocation": "3186:5:2", "nodeType": "VariableDeclaration", "scope": 341, "src": "3166:25:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage", "typeString": "uint256[49]"}, "typeName": {"baseType": {"id": 337, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3166:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 339, "length": {"hexValue": "3439", "id": 338, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3174:2:2", "typeDescriptions": {"typeIdentifier": "t_rational_49_by_1", "typeString": "int_const 49"}, "value": "49"}, "nodeType": "ArrayTypeName", "src": "3166:11:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage_ptr", "typeString": "uint256[49]"}}, "visibility": "private"}], "scope": 342, "src": "916:2278:2", "usedErrors": []}], "src": "97:3098:2"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", "exportedSymbols": {"IERC20Upgradeable": [419]}, "id": 420, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 343, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:3"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20Upgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 344, "nodeType": "StructuredDocumentation", "src": "131:70:3", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 419, "linearizedBaseContracts": [419], "name": "IERC20Upgradeable", "nameLocation": "212:17:3", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 345, "nodeType": "StructuredDocumentation", "src": "236: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."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 353, "name": "Transfer", "nameLocation": "405:8:3", "nodeType": "EventDefinition", "parameters": {"id": 352, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 347, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "430:4:3", "nodeType": "VariableDeclaration", "scope": 353, "src": "414:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 346, "name": "address", "nodeType": "ElementaryTypeName", "src": "414:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 349, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "452:2:3", "nodeType": "VariableDeclaration", "scope": 353, "src": "436:18:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 348, "name": "address", "nodeType": "ElementaryTypeName", "src": "436:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 351, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "464:5:3", "nodeType": "VariableDeclaration", "scope": 353, "src": "456:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 350, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "456:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "413:57:3"}, "src": "399:72:3"}, {"anonymous": false, "documentation": {"id": 354, "nodeType": "StructuredDocumentation", "src": "477: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": 362, "name": "Approval", "nameLocation": "636:8:3", "nodeType": "EventDefinition", "parameters": {"id": 361, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 356, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "661:5:3", "nodeType": "VariableDeclaration", "scope": 362, "src": "645:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 355, "name": "address", "nodeType": "ElementaryTypeName", "src": "645:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 358, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "684:7:3", "nodeType": "VariableDeclaration", "scope": 362, "src": "668:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 357, "name": "address", "nodeType": "ElementaryTypeName", "src": "668:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 360, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "701:5:3", "nodeType": "VariableDeclaration", "scope": 362, "src": "693:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 359, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "693:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "644:63:3"}, "src": "630:78:3"}, {"documentation": {"id": 363, "nodeType": "StructuredDocumentation", "src": "714:66:3", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 368, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "794:11:3", "nodeType": "FunctionDefinition", "parameters": {"id": 364, "nodeType": "ParameterList", "parameters": [], "src": "805:2:3"}, "returnParameters": {"id": 367, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 366, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 368, "src": "831:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 365, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "831:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "830:9:3"}, "scope": 419, "src": "785:55:3", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 369, "nodeType": "StructuredDocumentation", "src": "846:72:3", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 376, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "932:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 372, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 371, "mutability": "mutable", "name": "account", "nameLocation": "950:7:3", "nodeType": "VariableDeclaration", "scope": 376, "src": "942:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 370, "name": "address", "nodeType": "ElementaryTypeName", "src": "942:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "941:17:3"}, "returnParameters": {"id": 375, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 374, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 376, "src": "982:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 373, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "982:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "981:9:3"}, "scope": 419, "src": "923:68:3", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 377, "nodeType": "StructuredDocumentation", "src": "997:202:3", "text": " @dev Moves `amount` 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": 386, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1213:8:3", "nodeType": "FunctionDefinition", "parameters": {"id": 382, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 379, "mutability": "mutable", "name": "to", "nameLocation": "1230:2:3", "nodeType": "VariableDeclaration", "scope": 386, "src": "1222:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 378, "name": "address", "nodeType": "ElementaryTypeName", "src": "1222:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 381, "mutability": "mutable", "name": "amount", "nameLocation": "1242:6:3", "nodeType": "VariableDeclaration", "scope": 386, "src": "1234:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 380, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1234:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1221:28:3"}, "returnParameters": {"id": 385, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 384, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 386, "src": "1268:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 383, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1268:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1267:6:3"}, "scope": 419, "src": "1204:70:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 387, "nodeType": "StructuredDocumentation", "src": "1280: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": 396, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1558:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 392, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 389, "mutability": "mutable", "name": "owner", "nameLocation": "1576:5:3", "nodeType": "VariableDeclaration", "scope": 396, "src": "1568:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 388, "name": "address", "nodeType": "ElementaryTypeName", "src": "1568:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 391, "mutability": "mutable", "name": "spender", "nameLocation": "1591:7:3", "nodeType": "VariableDeclaration", "scope": 396, "src": "1583:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 390, "name": "address", "nodeType": "ElementaryTypeName", "src": "1583:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1567:32:3"}, "returnParameters": {"id": 395, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 394, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 396, "src": "1623:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 393, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1623:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1622:9:3"}, "scope": 419, "src": "1549:83:3", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 397, "nodeType": "StructuredDocumentation", "src": "1638:642:3", "text": " @dev Sets `amount` as the allowance of `spender` over the 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": 406, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2294:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 402, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 399, "mutability": "mutable", "name": "spender", "nameLocation": "2310:7:3", "nodeType": "VariableDeclaration", "scope": 406, "src": "2302:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 398, "name": "address", "nodeType": "ElementaryTypeName", "src": "2302:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 401, "mutability": "mutable", "name": "amount", "nameLocation": "2327:6:3", "nodeType": "VariableDeclaration", "scope": 406, "src": "2319:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 400, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2319:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2301:33:3"}, "returnParameters": {"id": 405, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 404, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 406, "src": "2353:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 403, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2353:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2352:6:3"}, "scope": 419, "src": "2285:74:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 407, "nodeType": "StructuredDocumentation", "src": "2365:287:3", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` 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": 418, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2666:12:3", "nodeType": "FunctionDefinition", "parameters": {"id": 414, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 409, "mutability": "mutable", "name": "from", "nameLocation": "2696:4:3", "nodeType": "VariableDeclaration", "scope": 418, "src": "2688:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 408, "name": "address", "nodeType": "ElementaryTypeName", "src": "2688:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 411, "mutability": "mutable", "name": "to", "nameLocation": "2718:2:3", "nodeType": "VariableDeclaration", "scope": 418, "src": "2710:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 410, "name": "address", "nodeType": "ElementaryTypeName", "src": "2710:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 413, "mutability": "mutable", "name": "amount", "nameLocation": "2738:6:3", "nodeType": "VariableDeclaration", "scope": 418, "src": "2730:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 412, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2730:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2678:72:3"}, "returnParameters": {"id": 417, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 416, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 418, "src": "2769:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 415, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2769:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2768:6:3"}, "scope": 419, "src": "2657:118:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 420, "src": "202:2575:3", "usedErrors": []}], "src": "106:2672:3"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", "exportedSymbols": {"IERC20PermitUpgradeable": [455]}, "id": 456, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 421, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "114:23:4"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20PermitUpgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 422, "nodeType": "StructuredDocumentation", "src": "139:480:4", "text": " @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."}, "fullyImplemented": false, "id": 455, "linearizedBaseContracts": [455], "name": "IERC20PermitUpgradeable", "nameLocation": "630:23:4", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 423, "nodeType": "StructuredDocumentation", "src": "660:792:4", "text": " @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."}, "functionSelector": "d505accf", "id": 440, "implemented": false, "kind": "function", "modifiers": [], "name": "permit", "nameLocation": "1466:6:4", "nodeType": "FunctionDefinition", "parameters": {"id": 438, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 425, "mutability": "mutable", "name": "owner", "nameLocation": "1490:5:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1482:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 424, "name": "address", "nodeType": "ElementaryTypeName", "src": "1482:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 427, "mutability": "mutable", "name": "spender", "nameLocation": "1513:7:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1505:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 426, "name": "address", "nodeType": "ElementaryTypeName", "src": "1505:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 429, "mutability": "mutable", "name": "value", "nameLocation": "1538:5:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1530:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 428, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1530:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 431, "mutability": "mutable", "name": "deadline", "nameLocation": "1561:8:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1553:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 430, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1553:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 433, "mutability": "mutable", "name": "v", "nameLocation": "1585:1:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1579:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 432, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1579:5:4", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}, {"constant": false, "id": 435, "mutability": "mutable", "name": "r", "nameLocation": "1604:1:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1596:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 434, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1596:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 437, "mutability": "mutable", "name": "s", "nameLocation": "1623:1:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1615:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 436, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1615:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "1472:158:4"}, "returnParameters": {"id": 439, "nodeType": "ParameterList", "parameters": [], "src": "1639:0:4"}, "scope": 455, "src": "1457:183:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 441, "nodeType": "StructuredDocumentation", "src": "1646:294:4", "text": " @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."}, "functionSelector": "7ecebe00", "id": 448, "implemented": false, "kind": "function", "modifiers": [], "name": "nonces", "nameLocation": "1954:6:4", "nodeType": "FunctionDefinition", "parameters": {"id": 444, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 443, "mutability": "mutable", "name": "owner", "nameLocation": "1969:5:4", "nodeType": "VariableDeclaration", "scope": 448, "src": "1961:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 442, "name": "address", "nodeType": "ElementaryTypeName", "src": "1961:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1960:15:4"}, "returnParameters": {"id": 447, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 446, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 448, "src": "1999:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 445, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1999:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1998:9:4"}, "scope": 455, "src": "1945:63:4", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 449, "nodeType": "StructuredDocumentation", "src": "2014:128:4", "text": " @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."}, "functionSelector": "3644e515", "id": 454, "implemented": false, "kind": "function", "modifiers": [], "name": "DOMAIN_SEPARATOR", "nameLocation": "2209:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 450, "nodeType": "ParameterList", "parameters": [], "src": "2225:2:4"}, "returnParameters": {"id": 453, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 452, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 454, "src": "2251:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 451, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2251:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2250:9:4"}, "scope": 455, "src": "2200:60:4", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 456, "src": "620:1642:4", "usedErrors": []}], "src": "114:2149:4"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "IERC20PermitUpgradeable": [455], "IERC20Upgradeable": [419], "SafeERC20Upgradeable": [736]}, "id": 737, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 457, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "115:23:5"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", "file": "../IERC20Upgradeable.sol", "id": 458, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 737, "sourceUnit": 420, "src": "140:34:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", "file": "../extensions/draft-IERC20PermitUpgradeable.sol", "id": 459, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 737, "sourceUnit": 456, "src": "175:57:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "file": "../../../utils/AddressUpgradeable.sol", "id": 460, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 737, "sourceUnit": 2178, "src": "233:47:5", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "SafeERC20Upgradeable", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 461, "nodeType": "StructuredDocumentation", "src": "282:457:5", "text": " @title SafeERC20\n @dev Wrappers around ERC20 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": 736, "linearizedBaseContracts": [736], "name": "SafeERC20Upgradeable", "nameLocation": "748:20:5", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 464, "libraryName": {"id": 462, "name": "AddressUpgradeable", "nameLocations": ["781:18:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2177, "src": "781:18:5"}, "nodeType": "UsingForDirective", "src": "775:37:5", "typeName": {"id": 463, "name": "address", "nodeType": "ElementaryTypeName", "src": "804:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, {"body": {"id": 486, "nodeType": "Block", "src": "931:103:5", "statements": [{"expression": {"arguments": [{"id": 475, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 467, "src": "961:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, {"arguments": [{"expression": {"expression": {"id": 478, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 467, "src": "991:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "997:8:5", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 386, "src": "991:14:5", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1006:8:5", "memberName": "selector", "nodeType": "MemberAccess", "src": "991:23:5", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"id": 481, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 469, "src": "1016:2:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 482, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 471, "src": "1020:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 476, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "968:3:5", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 477, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "972:18:5", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "968:22:5", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 483, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "968:58:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 474, "name": "_callOptionalReturn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "941:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (contract IERC20Upgradeable,bytes memory)"}}, "id": 484, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "941:86:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 485, "nodeType": "ExpressionStatement", "src": "941:86:5"}]}, "id": 487, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransfer", "nameLocation": "827:12:5", "nodeType": "FunctionDefinition", "parameters": {"id": 472, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 467, "mutability": "mutable", "name": "token", "nameLocation": "867:5:5", "nodeType": "VariableDeclaration", "scope": 487, "src": "849:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, "typeName": {"id": 466, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 465, "name": "IERC20Upgradeable", "nameLocations": ["849:17:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "849:17:5"}, "referencedDeclaration": 419, "src": "849:17:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 469, "mutability": "mutable", "name": "to", "nameLocation": "890:2:5", "nodeType": "VariableDeclaration", "scope": 487, "src": "882:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 468, "name": "address", "nodeType": "ElementaryTypeName", "src": "882:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 471, "mutability": "mutable", "name": "value", "nameLocation": "910:5:5", "nodeType": "VariableDeclaration", "scope": 487, "src": "902:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 470, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "902:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "839:82:5"}, "returnParameters": {"id": 473, "nodeType": "ParameterList", "parameters": [], "src": "931:0:5"}, "scope": 736, "src": "818:216:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 512, "nodeType": "Block", "src": "1179:113:5", "statements": [{"expression": {"arguments": [{"id": 500, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 490, "src": "1209:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, {"arguments": [{"expression": {"expression": {"id": 503, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 490, "src": "1239:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1245:12:5", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 418, "src": "1239: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": 505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1258:8:5", "memberName": "selector", "nodeType": "MemberAccess", "src": "1239:27:5", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"id": 506, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "1268:4:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 507, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 494, "src": "1274:2:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 508, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 496, "src": "1278:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 501, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1216:3:5", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 502, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1220:18:5", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "1216:22:5", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 509, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1216:68:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 499, "name": "_callOptionalReturn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "1189:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (contract IERC20Upgradeable,bytes memory)"}}, "id": 510, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1189:96:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 511, "nodeType": "ExpressionStatement", "src": "1189:96:5"}]}, "id": 513, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "1049:16:5", "nodeType": "FunctionDefinition", "parameters": {"id": 497, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 490, "mutability": "mutable", "name": "token", "nameLocation": "1093:5:5", "nodeType": "VariableDeclaration", "scope": 513, "src": "1075:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, "typeName": {"id": 489, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 488, "name": "IERC20Upgradeable", "nameLocations": ["1075:17:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "1075:17:5"}, "referencedDeclaration": 419, "src": "1075:17:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 492, "mutability": "mutable", "name": "from", "nameLocation": "1116:4:5", "nodeType": "VariableDeclaration", "scope": 513, "src": "1108:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 491, "name": "address", "nodeType": "ElementaryTypeName", "src": "1108:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 494, "mutability": "mutable", "name": "to", "nameLocation": "1138:2:5", "nodeType": "VariableDeclaration", "scope": 513, "src": "1130:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 493, "name": "address", "nodeType": "ElementaryTypeName", "src": "1130:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 496, "mutability": "mutable", "name": "value", "nameLocation": "1158:5:5", "nodeType": "VariableDeclaration", "scope": 513, "src": "1150:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 495, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1150:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1065:104:5"}, "returnParameters": {"id": 498, "nodeType": "ParameterList", "parameters": [], "src": "1179:0:5"}, "scope": 736, "src": "1040:252:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 556, "nodeType": "Block", "src": "1669:497:5", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 527, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 525, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 521, "src": "1918:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 526, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1927:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1918:10:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 528, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1917:12:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"id": 533, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1958:4:5", "typeDescriptions": {"typeIdentifier": "t_contract$_SafeERC20Upgradeable_$736", "typeString": "library SafeERC20Upgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_SafeERC20Upgradeable_$736", "typeString": "library SafeERC20Upgradeable"}], "id": 532, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1950:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 531, "name": "address", "nodeType": "ElementaryTypeName", "src": "1950:7:5", "typeDescriptions": {}}}, "id": 534, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1950:13:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 535, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 519, "src": "1965:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 529, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 517, "src": "1934:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 530, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1940:9:5", "memberName": "allowance", "nodeType": "MemberAccess", "referencedDeclaration": 396, "src": "1934:15:5", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)"}}, "id": 536, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1934:39:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 537, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1977:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1934:44:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 539, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1933:46:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1917:62:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365", "id": 541, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1993:56:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25", "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}, "value": "SafeERC20: approve from non-zero to non-zero allowance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25", "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}], "id": 524, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1896:7:5", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1896:163:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 543, "nodeType": "ExpressionStatement", "src": "1896:163:5"}, {"expression": {"arguments": [{"id": 545, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 517, "src": "2089:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, {"arguments": [{"expression": {"expression": {"id": 548, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 517, "src": "2119:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 549, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2125:7:5", "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 406, "src": "2119:13:5", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2133:8:5", "memberName": "selector", "nodeType": "MemberAccess", "src": "2119:22:5", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"id": 551, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 519, "src": "2143:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 552, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 521, "src": "2152:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 546, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2096:3:5", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 547, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2100:18:5", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "2096:22:5", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 553, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2096:62:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 544, "name": "_callOptionalReturn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2069:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (contract IERC20Upgradeable,bytes memory)"}}, "id": 554, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2069:90:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 555, "nodeType": "ExpressionStatement", "src": "2069:90:5"}]}, "documentation": {"id": 514, "nodeType": "StructuredDocumentation", "src": "1298:249:5", "text": " @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."}, "id": 557, "implemented": true, "kind": "function", "modifiers": [], "name": "safeApprove", "nameLocation": "1561:11:5", "nodeType": "FunctionDefinition", "parameters": {"id": 522, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 517, "mutability": "mutable", "name": "token", "nameLocation": "1600:5:5", "nodeType": "VariableDeclaration", "scope": 557, "src": "1582:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, "typeName": {"id": 516, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 515, "name": "IERC20Upgradeable", "nameLocations": ["1582:17:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "1582:17:5"}, "referencedDeclaration": 419, "src": "1582:17:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 519, "mutability": "mutable", "name": "spender", "nameLocation": "1623:7:5", "nodeType": "VariableDeclaration", "scope": 557, "src": "1615:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 518, "name": "address", "nodeType": "ElementaryTypeName", "src": "1615:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 521, "mutability": "mutable", "name": "value", "nameLocation": "1648:5:5", "nodeType": "VariableDeclaration", "scope": 557, "src": "1640:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 520, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1640:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1572:87:5"}, "returnParameters": {"id": 523, "nodeType": "ParameterList", "parameters": [], "src": "1669:0:5"}, "scope": 736, "src": "1552:614:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 592, "nodeType": "Block", "src": "2299:194:5", "statements": [{"assignments": [568], "declarations": [{"constant": false, "id": 568, "mutability": "mutable", "name": "newAllowance", "nameLocation": "2317:12:5", "nodeType": "VariableDeclaration", "scope": 592, "src": "2309:20:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 567, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2309:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 579, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 578, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"id": 573, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2356:4:5", "typeDescriptions": {"typeIdentifier": "t_contract$_SafeERC20Upgradeable_$736", "typeString": "library SafeERC20Upgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_SafeERC20Upgradeable_$736", "typeString": "library SafeERC20Upgradeable"}], "id": 572, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2348:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 571, "name": "address", "nodeType": "ElementaryTypeName", "src": "2348:7:5", "typeDescriptions": {}}}, "id": 574, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2348:13:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 575, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 562, "src": "2363:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 569, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 560, "src": "2332:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2338:9:5", "memberName": "allowance", "nodeType": "MemberAccess", "referencedDeclaration": 396, "src": "2332:15:5", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)"}}, "id": 576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2332:39:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 577, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 564, "src": "2374:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2332:47:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2309:70:5"}, {"expression": {"arguments": [{"id": 581, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 560, "src": "2409:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, {"arguments": [{"expression": {"expression": {"id": 584, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 560, "src": "2439:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 585, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2445:7:5", "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 406, "src": "2439:13:5", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2453:8:5", "memberName": "selector", "nodeType": "MemberAccess", "src": "2439:22:5", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"id": 587, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 562, "src": "2463:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 588, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 568, "src": "2472:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 582, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2416:3:5", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 583, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2420:18:5", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "2416:22:5", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2416:69:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 580, "name": "_callOptionalReturn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2389:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (contract IERC20Upgradeable,bytes memory)"}}, "id": 590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2389:97:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 591, "nodeType": "ExpressionStatement", "src": "2389:97:5"}]}, "id": 593, "implemented": true, "kind": "function", "modifiers": [], "name": "safeIncreaseAllowance", "nameLocation": "2181:21:5", "nodeType": "FunctionDefinition", "parameters": {"id": 565, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 560, "mutability": "mutable", "name": "token", "nameLocation": "2230:5:5", "nodeType": "VariableDeclaration", "scope": 593, "src": "2212:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, "typeName": {"id": 559, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 558, "name": "IERC20Upgradeable", "nameLocations": ["2212:17:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "2212:17:5"}, "referencedDeclaration": 419, "src": "2212:17:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 562, "mutability": "mutable", "name": "spender", "nameLocation": "2253:7:5", "nodeType": "VariableDeclaration", "scope": 593, "src": "2245:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 561, "name": "address", "nodeType": "ElementaryTypeName", "src": "2245:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 564, "mutability": "mutable", "name": "value", "nameLocation": "2278:5:5", "nodeType": "VariableDeclaration", "scope": 593, "src": "2270:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 563, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2270:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2202:87:5"}, "returnParameters": {"id": 566, "nodeType": "ParameterList", "parameters": [], "src": "2299:0:5"}, "scope": 736, "src": "2172:321:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 640, "nodeType": "Block", "src": "2626:370:5", "statements": [{"id": 639, "nodeType": "UncheckedBlock", "src": "2636:354:5", "statements": [{"assignments": [604], "declarations": [{"constant": false, "id": 604, "mutability": "mutable", "name": "oldAllowance", "nameLocation": "2668:12:5", "nodeType": "VariableDeclaration", "scope": 639, "src": "2660:20:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 603, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2660:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 613, "initialValue": {"arguments": [{"arguments": [{"id": 609, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2707:4:5", "typeDescriptions": {"typeIdentifier": "t_contract$_SafeERC20Upgradeable_$736", "typeString": "library SafeERC20Upgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_SafeERC20Upgradeable_$736", "typeString": "library SafeERC20Upgradeable"}], "id": 608, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2699:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 607, "name": "address", "nodeType": "ElementaryTypeName", "src": "2699:7:5", "typeDescriptions": {}}}, "id": 610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2699:13:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 611, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 598, "src": "2714:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 605, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "2683:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2689:9:5", "memberName": "allowance", "nodeType": "MemberAccess", "referencedDeclaration": 396, "src": "2683:15:5", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)"}}, "id": 612, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2683:39:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2660:62:5"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 615, "name": "oldAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 604, "src": "2744:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 616, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 600, "src": "2760:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2744:21:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", "id": 618, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2767:43:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a", "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""}, "value": "SafeERC20: decreased allowance below zero"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a", "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""}], "id": 614, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2736:7:5", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 619, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2736:75:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 620, "nodeType": "ExpressionStatement", "src": "2736:75:5"}, {"assignments": [622], "declarations": [{"constant": false, "id": 622, "mutability": "mutable", "name": "newAllowance", "nameLocation": "2833:12:5", "nodeType": "VariableDeclaration", "scope": 639, "src": "2825:20:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 621, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2825:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 626, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 625, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 623, "name": "oldAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 604, "src": "2848:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 624, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 600, "src": "2863:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2848:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2825:43:5"}, {"expression": {"arguments": [{"id": 628, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "2902:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, {"arguments": [{"expression": {"expression": {"id": 631, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "2932:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2938:7:5", "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 406, "src": "2932:13:5", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2946:8:5", "memberName": "selector", "nodeType": "MemberAccess", "src": "2932:22:5", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"id": 634, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 598, "src": "2956:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 635, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "2965:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 629, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2909:3:5", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 630, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2913:18:5", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "2909:22:5", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2909:69:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 627, "name": "_callOptionalReturn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2882:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (contract IERC20Upgradeable,bytes memory)"}}, "id": 637, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2882:97:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 638, "nodeType": "ExpressionStatement", "src": "2882:97:5"}]}]}, "id": 641, "implemented": true, "kind": "function", "modifiers": [], "name": "safeDecreaseAllowance", "nameLocation": "2508:21:5", "nodeType": "FunctionDefinition", "parameters": {"id": 601, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 596, "mutability": "mutable", "name": "token", "nameLocation": "2557:5:5", "nodeType": "VariableDeclaration", "scope": 641, "src": "2539:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, "typeName": {"id": 595, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 594, "name": "IERC20Upgradeable", "nameLocations": ["2539:17:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "2539:17:5"}, "referencedDeclaration": 419, "src": "2539:17:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 598, "mutability": "mutable", "name": "spender", "nameLocation": "2580:7:5", "nodeType": "VariableDeclaration", "scope": 641, "src": "2572:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 597, "name": "address", "nodeType": "ElementaryTypeName", "src": "2572:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 600, "mutability": "mutable", "name": "value", "nameLocation": "2605:5:5", "nodeType": "VariableDeclaration", "scope": 641, "src": "2597:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 599, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2597:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2529:87:5"}, "returnParameters": {"id": 602, "nodeType": "ParameterList", "parameters": [], "src": "2626:0:5"}, "scope": 736, "src": "2499:497:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 696, "nodeType": "Block", "src": "3228:257:5", "statements": [{"assignments": [662], "declarations": [{"constant": false, "id": 662, "mutability": "mutable", "name": "nonceBefore", "nameLocation": "3246:11:5", "nodeType": "VariableDeclaration", "scope": 696, "src": "3238:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 661, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3238:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 667, "initialValue": {"arguments": [{"id": 665, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 646, "src": "3273:5:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 663, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "3260:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20PermitUpgradeable_$455", "typeString": "contract IERC20PermitUpgradeable"}}, "id": 664, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3266:6:5", "memberName": "nonces", "nodeType": "MemberAccess", "referencedDeclaration": 448, "src": "3260:12:5", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)"}}, "id": 666, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3260:19:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "3238:41:5"}, {"expression": {"arguments": [{"id": 671, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 646, "src": "3302:5:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 672, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 648, "src": "3309:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 673, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 650, "src": "3318:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 674, "name": "deadline", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 652, "src": "3325:8:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 675, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 654, "src": "3335:1:5", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, {"id": 676, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 656, "src": "3338:1:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 677, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 658, "src": "3341:1:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint8", "typeString": "uint8"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 668, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "3289:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20PermitUpgradeable_$455", "typeString": "contract IERC20PermitUpgradeable"}}, "id": 670, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3295:6:5", "memberName": "permit", "nodeType": "MemberAccess", "referencedDeclaration": 440, "src": "3289:12:5", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}}, "id": 678, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3289:54:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 679, "nodeType": "ExpressionStatement", "src": "3289:54:5"}, {"assignments": [681], "declarations": [{"constant": false, "id": 681, "mutability": "mutable", "name": "nonceAfter", "nameLocation": "3361:10:5", "nodeType": "VariableDeclaration", "scope": 696, "src": "3353:18:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 680, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3353:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 686, "initialValue": {"arguments": [{"id": 684, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 646, "src": "3387:5:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 682, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "3374:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20PermitUpgradeable_$455", "typeString": "contract IERC20PermitUpgradeable"}}, "id": 683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3380:6:5", "memberName": "nonces", "nodeType": "MemberAccess", "referencedDeclaration": 448, "src": "3374:12:5", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)"}}, "id": 685, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3374:19:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "3353:40:5"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 692, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 688, "name": "nonceAfter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 681, "src": "3411:10:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 691, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 689, "name": "nonceBefore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 662, "src": "3425:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 690, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3439:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3425:15:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3411:29:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5361666545524332303a207065726d697420646964206e6f742073756363656564", "id": 693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3442:35:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d", "typeString": "literal_string \"SafeERC20: permit did not succeed\""}, "value": "SafeERC20: permit did not succeed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d", "typeString": "literal_string \"SafeERC20: permit did not succeed\""}], "id": 687, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3403:7:5", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 694, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3403:75:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 695, "nodeType": "ExpressionStatement", "src": "3403:75:5"}]}, "id": 697, "implemented": true, "kind": "function", "modifiers": [], "name": "safePermit", "nameLocation": "3011:10:5", "nodeType": "FunctionDefinition", "parameters": {"id": 659, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 644, "mutability": "mutable", "name": "token", "nameLocation": "3055:5:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3031:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20PermitUpgradeable_$455", "typeString": "contract IERC20PermitUpgradeable"}, "typeName": {"id": 643, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 642, "name": "IERC20PermitUpgradeable", "nameLocations": ["3031:23:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 455, "src": "3031:23:5"}, "referencedDeclaration": 455, "src": "3031:23:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20PermitUpgradeable_$455", "typeString": "contract IERC20PermitUpgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 646, "mutability": "mutable", "name": "owner", "nameLocation": "3078:5:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3070:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 645, "name": "address", "nodeType": "ElementaryTypeName", "src": "3070:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 648, "mutability": "mutable", "name": "spender", "nameLocation": "3101:7:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3093:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 647, "name": "address", "nodeType": "ElementaryTypeName", "src": "3093:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 650, "mutability": "mutable", "name": "value", "nameLocation": "3126:5:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3118:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 649, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3118:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 652, "mutability": "mutable", "name": "deadline", "nameLocation": "3149:8:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3141:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 651, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3141:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 654, "mutability": "mutable", "name": "v", "nameLocation": "3173:1:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3167:7:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 653, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3167:5:5", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}, {"constant": false, "id": 656, "mutability": "mutable", "name": "r", "nameLocation": "3192:1:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3184:9:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 655, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3184:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 658, "mutability": "mutable", "name": "s", "nameLocation": "3211:1:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3203:9:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 657, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3203:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3021:197:5"}, "returnParameters": {"id": 660, "nodeType": "ParameterList", "parameters": [], "src": "3228:0:5"}, "scope": 736, "src": "3002:483:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 734, "nodeType": "Block", "src": "3949:636:5", "statements": [{"assignments": [707], "declarations": [{"constant": false, "id": 707, "mutability": "mutable", "name": "returndata", "nameLocation": "4311:10:5", "nodeType": "VariableDeclaration", "scope": 734, "src": "4298:23:5", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 706, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4298:5:5", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 716, "initialValue": {"arguments": [{"id": 713, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 703, "src": "4352:4:5", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564", "id": 714, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4358:34:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b", "typeString": "literal_string \"SafeERC20: low-level call failed\""}, "value": "SafeERC20: low-level call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b", "typeString": "literal_string \"SafeERC20: low-level call failed\""}], "expression": {"arguments": [{"id": 710, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 701, "src": "4332:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}], "id": 709, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4324:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 708, "name": "address", "nodeType": "ElementaryTypeName", "src": "4324:7:5", "typeDescriptions": {}}}, "id": 711, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4324:14:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4339:12:5", "memberName": "functionCall", "nodeType": "MemberAccess", "referencedDeclaration": 2023, "src": "4324:27:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$", "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"}}, "id": 715, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4324:69:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "4298:95:5"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 720, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 717, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 707, "src": "4407:10:5", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4418:6:5", "memberName": "length", "nodeType": "MemberAccess", "src": "4407:17:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 719, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4427:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4407:21:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 733, "nodeType": "IfStatement", "src": "4403:176:5", "trueBody": {"id": 732, "nodeType": "Block", "src": "4430:149:5", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 724, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 707, "src": "4502:10:5", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"components": [{"id": 726, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4515:4:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)"}, "typeName": {"id": 725, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4515:4:5", "typeDescriptions": {}}}], "id": 727, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4514:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)"}], "expression": {"id": 722, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "4491:3:5", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 723, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4495:6:5", "memberName": "decode", "nodeType": "MemberAccess", "src": "4491:10:5", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 728, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4491:30:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564", "id": 729, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4523:44:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd", "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""}, "value": "SafeERC20: ERC20 operation did not succeed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd", "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""}], "id": 721, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4483:7:5", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 730, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4483:85:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 731, "nodeType": "ExpressionStatement", "src": "4483:85:5"}]}}]}, "documentation": {"id": 698, "nodeType": "StructuredDocumentation", "src": "3491:372:5", "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)."}, "id": 735, "implemented": true, "kind": "function", "modifiers": [], "name": "_callOptionalReturn", "nameLocation": "3877:19:5", "nodeType": "FunctionDefinition", "parameters": {"id": 704, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 701, "mutability": "mutable", "name": "token", "nameLocation": "3915:5:5", "nodeType": "VariableDeclaration", "scope": 735, "src": "3897:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, "typeName": {"id": 700, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 699, "name": "IERC20Upgradeable", "nameLocations": ["3897:17:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "3897:17:5"}, "referencedDeclaration": 419, "src": "3897:17:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 703, "mutability": "mutable", "name": "data", "nameLocation": "3935:4:5", "nodeType": "VariableDeclaration", "scope": 735, "src": "3922:17:5", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 702, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3922:5:5", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3896:44:5"}, "returnParameters": {"id": 705, "nodeType": "ParameterList", "parameters": [], "src": "3949:0:5"}, "scope": 736, "src": "3868:717:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}], "scope": 737, "src": "740:3847:5", "usedErrors": []}], "src": "115:4473:5"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "ContextUpgradeable": [2219], "ERC165Upgradeable": [2683], "ERC721Upgradeable": [1628], "IERC165Upgradeable": [2695], "IERC721MetadataUpgradeable": [1934], "IERC721ReceiverUpgradeable": [1646], "IERC721Upgradeable": [1762], "Initializable": [282], "StringsUpgradeable": [2445]}, "id": 1629, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 738, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "107:23:6"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol", "file": "./IERC721Upgradeable.sol", "id": 739, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 1763, "src": "132:34:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol", "file": "./IERC721ReceiverUpgradeable.sol", "id": 740, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 1647, "src": "167:42:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol", "file": "./extensions/IERC721MetadataUpgradeable.sol", "id": 741, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 1935, "src": "210:53:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "file": "../../utils/AddressUpgradeable.sol", "id": 742, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 2178, "src": "264:44:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "file": "../../utils/ContextUpgradeable.sol", "id": 743, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 2220, "src": "309:44:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol", "file": "../../utils/StringsUpgradeable.sol", "id": 744, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 2446, "src": "354:44:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", "file": "../../utils/introspection/ERC165Upgradeable.sol", "id": 745, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 2684, "src": "399:57:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../../proxy/utils/Initializable.sol", "id": 746, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 283, "src": "457:45:6", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 748, "name": "Initializable", "nameLocations": ["781:13:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 282, "src": "781:13:6"}, "id": 749, "nodeType": "InheritanceSpecifier", "src": "781:13:6"}, {"baseName": {"id": 750, "name": "ContextUpgradeable", "nameLocations": ["796:18:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2219, "src": "796:18:6"}, "id": 751, "nodeType": "InheritanceSpecifier", "src": "796:18:6"}, {"baseName": {"id": 752, "name": "ERC165Upgradeable", "nameLocations": ["816:17:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "816:17:6"}, "id": 753, "nodeType": "InheritanceSpecifier", "src": "816:17:6"}, {"baseName": {"id": 754, "name": "IERC721Upgradeable", "nameLocations": ["835:18:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1762, "src": "835:18:6"}, "id": 755, "nodeType": "InheritanceSpecifier", "src": "835:18:6"}, {"baseName": {"id": 756, "name": "IERC721MetadataUpgradeable", "nameLocations": ["855:26:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1934, "src": "855:26:6"}, "id": 757, "nodeType": "InheritanceSpecifier", "src": "855:26:6"}], "canonicalName": "ERC721Upgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 747, "nodeType": "StructuredDocumentation", "src": "504:246:6", "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."}, "fullyImplemented": true, "id": 1628, "linearizedBaseContracts": [1628, 1934, 1762, 2683, 2695, 2219, 282], "name": "ERC721Upgradeable", "nameLocation": "760:17:6", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 760, "libraryName": {"id": 758, "name": "AddressUpgradeable", "nameLocations": ["894:18:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2177, "src": "894:18:6"}, "nodeType": "UsingForDirective", "src": "888:37:6", "typeName": {"id": 759, "name": "address", "nodeType": "ElementaryTypeName", "src": "917:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, {"global": false, "id": 763, "libraryName": {"id": 761, "name": "StringsUpgradeable", "nameLocations": ["936:18:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2445, "src": "936:18:6"}, "nodeType": "UsingForDirective", "src": "930:37:6", "typeName": {"id": 762, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "959:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"constant": false, "id": 765, "mutability": "mutable", "name": "_name", "nameLocation": "1006:5:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "991:20:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 764, "name": "string", "nodeType": "ElementaryTypeName", "src": "991:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"constant": false, "id": 767, "mutability": "mutable", "name": "_symbol", "nameLocation": "1053:7:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "1038:22:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 766, "name": "string", "nodeType": "ElementaryTypeName", "src": "1038:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"constant": false, "id": 771, "mutability": "mutable", "name": "_owners", "nameLocation": "1149:7:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "1113:43:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "typeName": {"id": 770, "keyType": {"id": 768, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1121:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "1113:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "valueType": {"id": 769, "name": "address", "nodeType": "ElementaryTypeName", "src": "1132:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "private"}, {"constant": false, "id": 775, "mutability": "mutable", "name": "_balances", "nameLocation": "1243:9:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "1207:45:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "typeName": {"id": 774, "keyType": {"id": 772, "name": "address", "nodeType": "ElementaryTypeName", "src": "1215:7:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1207:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "valueType": {"id": 773, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1226:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, "visibility": "private"}, {"constant": false, "id": 779, "mutability": "mutable", "name": "_tokenApprovals", "nameLocation": "1344:15:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "1308:51:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "typeName": {"id": 778, "keyType": {"id": 776, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1316:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "1308:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "valueType": {"id": 777, "name": "address", "nodeType": "ElementaryTypeName", "src": "1327:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "private"}, {"constant": false, "id": 785, "mutability": "mutable", "name": "_operatorApprovals", "nameLocation": "1467:18:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "1414:71:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}, "typeName": {"id": 784, "keyType": {"id": 780, "name": "address", "nodeType": "ElementaryTypeName", "src": "1422:7:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1414:44:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}, "valueType": {"id": 783, "keyType": {"id": 781, "name": "address", "nodeType": "ElementaryTypeName", "src": "1441:7:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1433:24:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}, "valueType": {"id": 782, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1452:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}}}, "visibility": "private"}, {"body": {"id": 800, "nodeType": "Block", "src": "1698:56:6", "statements": [{"expression": {"arguments": [{"id": 796, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 788, "src": "1732:5:6", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 797, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 790, "src": "1739:7:6", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 795, "name": "__ERC721_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 819, "src": "1708:23:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory,string memory)"}}, "id": 798, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1708:39:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 799, "nodeType": "ExpressionStatement", "src": "1708:39:6"}]}, "documentation": {"id": 786, "nodeType": "StructuredDocumentation", "src": "1492:108:6", "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."}, "id": 801, "implemented": true, "kind": "function", "modifiers": [{"id": 793, "kind": "modifierInvocation", "modifierName": {"id": 792, "name": "onlyInitializing", "nameLocations": ["1681:16:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "1681:16:6"}, "nodeType": "ModifierInvocation", "src": "1681:16:6"}], "name": "__ERC721_init", "nameLocation": "1614:13:6", "nodeType": "FunctionDefinition", "parameters": {"id": 791, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 788, "mutability": "mutable", "name": "name_", "nameLocation": "1642:5:6", "nodeType": "VariableDeclaration", "scope": 801, "src": "1628:19:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 787, "name": "string", "nodeType": "ElementaryTypeName", "src": "1628:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 790, "mutability": "mutable", "name": "symbol_", "nameLocation": "1663:7:6", "nodeType": "VariableDeclaration", "scope": 801, "src": "1649:21:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 789, "name": "string", "nodeType": "ElementaryTypeName", "src": "1649:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1627:44:6"}, "returnParameters": {"id": 794, "nodeType": "ParameterList", "parameters": [], "src": "1698:0:6"}, "scope": 1628, "src": "1605:149:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 818, "nodeType": "Block", "src": "1863:57:6", "statements": [{"expression": {"id": 812, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 810, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 765, "src": "1873:5:6", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 811, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "1881:5:6", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1873:13:6", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 813, "nodeType": "ExpressionStatement", "src": "1873:13:6"}, {"expression": {"id": 816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 814, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 767, "src": "1896:7:6", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 815, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 805, "src": "1906:7:6", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1896:17:6", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 817, "nodeType": "ExpressionStatement", "src": "1896:17:6"}]}, "id": 819, "implemented": true, "kind": "function", "modifiers": [{"id": 808, "kind": "modifierInvocation", "modifierName": {"id": 807, "name": "onlyInitializing", "nameLocations": ["1846:16:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "1846:16:6"}, "nodeType": "ModifierInvocation", "src": "1846:16:6"}], "name": "__ERC721_init_unchained", "nameLocation": "1769:23:6", "nodeType": "FunctionDefinition", "parameters": {"id": 806, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 803, "mutability": "mutable", "name": "name_", "nameLocation": "1807:5:6", "nodeType": "VariableDeclaration", "scope": 819, "src": "1793:19:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 802, "name": "string", "nodeType": "ElementaryTypeName", "src": "1793:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 805, "mutability": "mutable", "name": "symbol_", "nameLocation": "1828:7:6", "nodeType": "VariableDeclaration", "scope": 819, "src": "1814:21:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 804, "name": "string", "nodeType": "ElementaryTypeName", "src": "1814:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1792:44:6"}, "returnParameters": {"id": 809, "nodeType": "ParameterList", "parameters": [], "src": "1863:0:6"}, "scope": 1628, "src": "1760:160:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"baseFunctions": [2677, 2694], "body": {"id": 849, "nodeType": "Block", "src": "2117:214:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 847, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 842, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 830, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 822, "src": "2146:11:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 832, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "2166:18:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}], "id": 831, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "2161:4:6", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 833, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2161:24:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Upgradeable_$1762", "typeString": "type(contract IERC721Upgradeable)"}}, "id": 834, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2186:11:6", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "2161:36:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "2146:51:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 841, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 836, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 822, "src": "2213:11:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 838, "name": "IERC721MetadataUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1934, "src": "2233:26:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721MetadataUpgradeable_$1934_$", "typeString": "type(contract IERC721MetadataUpgradeable)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC721MetadataUpgradeable_$1934_$", "typeString": "type(contract IERC721MetadataUpgradeable)"}], "id": 837, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "2228:4:6", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2228:32:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721MetadataUpgradeable_$1934", "typeString": "type(contract IERC721MetadataUpgradeable)"}}, "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2261:11:6", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "2228:44:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "2213:59:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2146:126:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 845, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 822, "src": "2312:11:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"id": 843, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "2288:5:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_ERC721Upgradeable_$1628_$", "typeString": "type(contract super ERC721Upgradeable)"}}, "id": 844, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2294:17:6", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 2677, "src": "2288:23:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function (bytes4) view returns (bool)"}}, "id": 846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2288:36:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2146:178:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 829, "id": 848, "nodeType": "Return", "src": "2127:197:6"}]}, "documentation": {"id": 820, "nodeType": "StructuredDocumentation", "src": "1926:56:6", "text": " @dev See {IERC165-supportsInterface}."}, "functionSelector": "01ffc9a7", "id": 850, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "1996:17:6", "nodeType": "FunctionDefinition", "overrides": {"id": 826, "nodeType": "OverrideSpecifier", "overrides": [{"id": 824, "name": "ERC165Upgradeable", "nameLocations": ["2063:17:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "2063:17:6"}, {"id": 825, "name": "IERC165Upgradeable", "nameLocations": ["2082:18:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2695, "src": "2082:18:6"}], "src": "2054:47:6"}, "parameters": {"id": 823, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 822, "mutability": "mutable", "name": "interfaceId", "nameLocation": "2021:11:6", "nodeType": "VariableDeclaration", "scope": 850, "src": "2014:18:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 821, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2014:6:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "2013:20:6"}, "returnParameters": {"id": 829, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 828, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 850, "src": "2111:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 827, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2111:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2110:6:6"}, "scope": 1628, "src": "1987:344:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1687], "body": {"id": 873, "nodeType": "Block", "src": "2471:123:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 860, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 853, "src": "2489:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 863, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2506:1:6", "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": 862, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2498:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 861, "name": "address", "nodeType": "ElementaryTypeName", "src": "2498:7:6", "typeDescriptions": {}}}, "id": 864, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2498:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2489:19:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572", "id": 866, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2510:43:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159", "typeString": "literal_string \"ERC721: address zero is not a valid owner\""}, "value": "ERC721: address zero is not a valid owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159", "typeString": "literal_string \"ERC721: address zero is not a valid owner\""}], "id": 859, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2481:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 867, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2481:73:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 868, "nodeType": "ExpressionStatement", "src": "2481:73:6"}, {"expression": {"baseExpression": {"id": 869, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 775, "src": "2571:9:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 871, "indexExpression": {"id": 870, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 853, "src": "2581:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2571:16:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 858, "id": 872, "nodeType": "Return", "src": "2564:23:6"}]}, "documentation": {"id": 851, "nodeType": "StructuredDocumentation", "src": "2337:48:6", "text": " @dev See {IERC721-balanceOf}."}, "functionSelector": "70a08231", "id": 874, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "2399:9:6", "nodeType": "FunctionDefinition", "overrides": {"id": 855, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2444:8:6"}, "parameters": {"id": 854, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 853, "mutability": "mutable", "name": "owner", "nameLocation": "2417:5:6", "nodeType": "VariableDeclaration", "scope": 874, "src": "2409:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 852, "name": "address", "nodeType": "ElementaryTypeName", "src": "2409:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2408:15:6"}, "returnParameters": {"id": 858, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 857, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 874, "src": "2462:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 856, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2462:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2461:9:6"}, "scope": 1628, "src": "2390:204:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1695], "body": {"id": 901, "nodeType": "Block", "src": "2732:137:6", "statements": [{"assignments": [884], "declarations": [{"constant": false, "id": 884, "mutability": "mutable", "name": "owner", "nameLocation": "2750:5:6", "nodeType": "VariableDeclaration", "scope": 901, "src": "2742:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 883, "name": "address", "nodeType": "ElementaryTypeName", "src": "2742:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 888, "initialValue": {"baseExpression": {"id": 885, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 771, "src": "2758:7:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 887, "indexExpression": {"id": 886, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 877, "src": "2766:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2758:16:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2742:32:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 895, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 890, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 884, "src": "2792:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 893, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2809:1:6", "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": 892, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2801:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 891, "name": "address", "nodeType": "ElementaryTypeName", "src": "2801:7:6", "typeDescriptions": {}}}, "id": 894, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2801:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2792:19:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20696e76616c696420746f6b656e204944", "id": 896, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2813:26:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}, "value": "ERC721: invalid token ID"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}], "id": 889, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2784:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 897, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2784:56:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 898, "nodeType": "ExpressionStatement", "src": "2784:56:6"}, {"expression": {"id": 899, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 884, "src": "2857:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 882, "id": 900, "nodeType": "Return", "src": "2850:12:6"}]}, "documentation": {"id": 875, "nodeType": "StructuredDocumentation", "src": "2600:46:6", "text": " @dev See {IERC721-ownerOf}."}, "functionSelector": "6352211e", "id": 902, "implemented": true, "kind": "function", "modifiers": [], "name": "ownerOf", "nameLocation": "2660:7:6", "nodeType": "FunctionDefinition", "overrides": {"id": 879, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2705:8:6"}, "parameters": {"id": 878, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 877, "mutability": "mutable", "name": "tokenId", "nameLocation": "2676:7:6", "nodeType": "VariableDeclaration", "scope": 902, "src": "2668:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 876, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2668:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:17:6"}, "returnParameters": {"id": 882, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 881, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 902, "src": "2723:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 880, "name": "address", "nodeType": "ElementaryTypeName", "src": "2723:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2722:9:6"}, "scope": 1628, "src": "2651:218:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1919], "body": {"id": 911, "nodeType": "Block", "src": "3000:29:6", "statements": [{"expression": {"id": 909, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 765, "src": "3017:5:6", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 908, "id": 910, "nodeType": "Return", "src": "3010:12:6"}]}, "documentation": {"id": 903, "nodeType": "StructuredDocumentation", "src": "2875:51:6", "text": " @dev See {IERC721Metadata-name}."}, "functionSelector": "06fdde03", "id": 912, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "2940:4:6", "nodeType": "FunctionDefinition", "overrides": {"id": 905, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2967:8:6"}, "parameters": {"id": 904, "nodeType": "ParameterList", "parameters": [], "src": "2944:2:6"}, "returnParameters": {"id": 908, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 907, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 912, "src": "2985:13:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 906, "name": "string", "nodeType": "ElementaryTypeName", "src": "2985:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2984:15:6"}, "scope": 1628, "src": "2931:98:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1925], "body": {"id": 921, "nodeType": "Block", "src": "3164:31:6", "statements": [{"expression": {"id": 919, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 767, "src": "3181:7:6", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 918, "id": 920, "nodeType": "Return", "src": "3174:14:6"}]}, "documentation": {"id": 913, "nodeType": "StructuredDocumentation", "src": "3035:53:6", "text": " @dev See {IERC721Metadata-symbol}."}, "functionSelector": "95d89b41", "id": 922, "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "3102:6:6", "nodeType": "FunctionDefinition", "overrides": {"id": 915, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3131:8:6"}, "parameters": {"id": 914, "nodeType": "ParameterList", "parameters": [], "src": "3108:2:6"}, "returnParameters": {"id": 918, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 917, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 922, "src": "3149:13:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 916, "name": "string", "nodeType": "ElementaryTypeName", "src": "3149:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3148:15:6"}, "scope": 1628, "src": "3093:102:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1933], "body": {"id": 960, "nodeType": "Block", "src": "3349:188:6", "statements": [{"expression": {"arguments": [{"id": 932, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 925, "src": "3374:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 931, "name": "_requireMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1538, "src": "3359:14:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view"}}, "id": 933, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3359:23:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 934, "nodeType": "ExpressionStatement", "src": "3359:23:6"}, {"assignments": [936], "declarations": [{"constant": false, "id": 936, "mutability": "mutable", "name": "baseURI", "nameLocation": "3407:7:6", "nodeType": "VariableDeclaration", "scope": 960, "src": "3393:21:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 935, "name": "string", "nodeType": "ElementaryTypeName", "src": "3393:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 939, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 937, "name": "_baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "3417:8:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", "typeString": "function () view returns (string memory)"}}, "id": 938, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3417:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "nodeType": "VariableDeclarationStatement", "src": "3393:34:6"}, {"expression": {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 946, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 942, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 936, "src": "3450:7:6", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 941, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3444:5:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 940, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3444:5:6", "typeDescriptions": {}}}, "id": 943, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3444:14:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3459:6:6", "memberName": "length", "nodeType": "MemberAccess", "src": "3444:21:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 945, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3468:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3444:25:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"hexValue": "", "id": 957, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3528:2:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}, "id": 958, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "3444:86:6", "trueExpression": {"arguments": [{"arguments": [{"id": 951, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 936, "src": "3496:7:6", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 952, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 925, "src": "3505:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3513:8:6", "memberName": "toString", "nodeType": "MemberAccess", "referencedDeclaration": 2307, "src": "3505:16:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$", "typeString": "function (uint256) pure returns (string memory)"}}, "id": 954, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3505:18:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "expression": {"id": 949, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "3479:3:6", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 950, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "3483:12:6", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "3479:16:6", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 955, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3479:45:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 948, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3472:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 947, "name": "string", "nodeType": "ElementaryTypeName", "src": "3472:6:6", "typeDescriptions": {}}}, "id": 956, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3472:53:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 930, "id": 959, "nodeType": "Return", "src": "3437:93:6"}]}, "documentation": {"id": 923, "nodeType": "StructuredDocumentation", "src": "3201:55:6", "text": " @dev See {IERC721Metadata-tokenURI}."}, "functionSelector": "c87b56dd", "id": 961, "implemented": true, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "3270:8:6", "nodeType": "FunctionDefinition", "overrides": {"id": 927, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3316:8:6"}, "parameters": {"id": 926, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 925, "mutability": "mutable", "name": "tokenId", "nameLocation": "3287:7:6", "nodeType": "VariableDeclaration", "scope": 961, "src": "3279:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 924, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3279:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3278:17:6"}, "returnParameters": {"id": 930, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 929, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 961, "src": "3334:13:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 928, "name": "string", "nodeType": "ElementaryTypeName", "src": "3334:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3333:15:6"}, "scope": 1628, "src": "3261:276:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 969, "nodeType": "Block", "src": "3845:26:6", "statements": [{"expression": {"hexValue": "", "id": 967, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3862:2:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}, "functionReturnParameters": 966, "id": 968, "nodeType": "Return", "src": "3855:9:6"}]}, "documentation": {"id": 962, "nodeType": "StructuredDocumentation", "src": "3543:231:6", "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."}, "id": 970, "implemented": true, "kind": "function", "modifiers": [], "name": "_baseURI", "nameLocation": "3788:8:6", "nodeType": "FunctionDefinition", "parameters": {"id": 963, "nodeType": "ParameterList", "parameters": [], "src": "3796:2:6"}, "returnParameters": {"id": 966, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 965, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 970, "src": "3830:13:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 964, "name": "string", "nodeType": "ElementaryTypeName", "src": "3830:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3829:15:6"}, "scope": 1628, "src": "3779:92:6", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"baseFunctions": [1735], "body": {"id": 1012, "nodeType": "Block", "src": "3998:348:6", "statements": [{"assignments": [980], "declarations": [{"constant": false, "id": 980, "mutability": "mutable", "name": "owner", "nameLocation": "4016:5:6", "nodeType": "VariableDeclaration", "scope": 1012, "src": "4008:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 979, "name": "address", "nodeType": "ElementaryTypeName", "src": "4008:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 985, "initialValue": {"arguments": [{"id": 983, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 975, "src": "4050:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 981, "name": "ERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "4024:17:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1628_$", "typeString": "type(contract ERC721Upgradeable)"}}, "id": 982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4042:7:6", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 902, "src": "4024:25:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 984, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4024:34:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "4008:50:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 989, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 987, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 973, "src": "4076:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 988, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 980, "src": "4082:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "4076:11:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572", "id": 990, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4089:35:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", "typeString": "literal_string \"ERC721: approval to current owner\""}, "value": "ERC721: approval to current owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", "typeString": "literal_string \"ERC721: approval to current owner\""}], "id": 986, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4068:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 991, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4068:57:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 992, "nodeType": "ExpressionStatement", "src": "4068:57:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1003, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 994, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4157:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 995, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4157:12:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 996, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 980, "src": "4173:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "4157:21:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 999, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 980, "src": "4199:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [], "expression": {"argumentTypes": [], "id": 1000, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4206:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1001, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4206:12:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 998, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1066, "src": "4182:16:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)"}}, "id": 1002, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4182:37:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4157:62:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c", "id": 1004, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4233:64:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304", "typeString": "literal_string \"ERC721: approve caller is not token owner nor approved for all\""}, "value": "ERC721: approve caller is not token owner nor approved for all"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304", "typeString": "literal_string \"ERC721: approve caller is not token owner nor approved for all\""}], "id": 993, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4136:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1005, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4136:171:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1006, "nodeType": "ExpressionStatement", "src": "4136:171:6"}, {"expression": {"arguments": [{"id": 1008, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 973, "src": "4327:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1009, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 975, "src": "4331:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1007, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "4318:8:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1010, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4318:21:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1011, "nodeType": "ExpressionStatement", "src": "4318:21:6"}]}, "documentation": {"id": 971, "nodeType": "StructuredDocumentation", "src": "3877:46:6", "text": " @dev See {IERC721-approve}."}, "functionSelector": "095ea7b3", "id": 1013, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "3937:7:6", "nodeType": "FunctionDefinition", "overrides": {"id": 977, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3989:8:6"}, "parameters": {"id": 976, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 973, "mutability": "mutable", "name": "to", "nameLocation": "3953:2:6", "nodeType": "VariableDeclaration", "scope": 1013, "src": "3945:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 972, "name": "address", "nodeType": "ElementaryTypeName", "src": "3945:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 975, "mutability": "mutable", "name": "tokenId", "nameLocation": "3965:7:6", "nodeType": "VariableDeclaration", "scope": 1013, "src": "3957:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 974, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3957:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3944:29:6"}, "returnParameters": {"id": 978, "nodeType": "ParameterList", "parameters": [], "src": "3998:0:6"}, "scope": 1628, "src": "3928:418:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [1751], "body": {"id": 1030, "nodeType": "Block", "src": "4492:82:6", "statements": [{"expression": {"arguments": [{"id": 1023, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "4517:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1022, "name": "_requireMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1538, "src": "4502:14:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view"}}, "id": 1024, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4502:23:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1025, "nodeType": "ExpressionStatement", "src": "4502:23:6"}, {"expression": {"baseExpression": {"id": 1026, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4543:15:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1028, "indexExpression": {"id": 1027, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "4559:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4543:24:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 1021, "id": 1029, "nodeType": "Return", "src": "4536:31:6"}]}, "documentation": {"id": 1014, "nodeType": "StructuredDocumentation", "src": "4352:50:6", "text": " @dev See {IERC721-getApproved}."}, "functionSelector": "081812fc", "id": 1031, "implemented": true, "kind": "function", "modifiers": [], "name": "getApproved", "nameLocation": "4416:11:6", "nodeType": "FunctionDefinition", "overrides": {"id": 1018, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4465:8:6"}, "parameters": {"id": 1017, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1016, "mutability": "mutable", "name": "tokenId", "nameLocation": "4436:7:6", "nodeType": "VariableDeclaration", "scope": 1031, "src": "4428:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1015, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4428:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4427:17:6"}, "returnParameters": {"id": 1021, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1020, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1031, "src": "4483:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1019, "name": "address", "nodeType": "ElementaryTypeName", "src": "4483:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4482:9:6"}, "scope": 1628, "src": "4407:167:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1743], "body": {"id": 1047, "nodeType": "Block", "src": "4725:69:6", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 1041, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4754:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1042, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4754:12:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1043, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "4768:8:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1044, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4778:8:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 1040, "name": "_setApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1524, "src": "4735:18:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)"}}, "id": 1045, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4735:52:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1046, "nodeType": "ExpressionStatement", "src": "4735:52:6"}]}, "documentation": {"id": 1032, "nodeType": "StructuredDocumentation", "src": "4580:56:6", "text": " @dev See {IERC721-setApprovalForAll}."}, "functionSelector": "a22cb465", "id": 1048, "implemented": true, "kind": "function", "modifiers": [], "name": "setApprovalForAll", "nameLocation": "4650:17:6", "nodeType": "FunctionDefinition", "overrides": {"id": 1038, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4716:8:6"}, "parameters": {"id": 1037, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1034, "mutability": "mutable", "name": "operator", "nameLocation": "4676:8:6", "nodeType": "VariableDeclaration", "scope": 1048, "src": "4668:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1033, "name": "address", "nodeType": "ElementaryTypeName", "src": "4668:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1036, "mutability": "mutable", "name": "approved", "nameLocation": "4691:8:6", "nodeType": "VariableDeclaration", "scope": 1048, "src": "4686:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1035, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4686:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4667:33:6"}, "returnParameters": {"id": 1039, "nodeType": "ParameterList", "parameters": [], "src": "4725:0:6"}, "scope": 1628, "src": "4641:153:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [1761], "body": {"id": 1065, "nodeType": "Block", "src": "4963:59:6", "statements": [{"expression": {"baseExpression": {"baseExpression": {"id": 1059, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "4980:18:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}}, "id": 1061, "indexExpression": {"id": 1060, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1051, "src": "4999:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4980:25:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 1063, "indexExpression": {"id": 1062, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1053, "src": "5006:8:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4980:35:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1058, "id": 1064, "nodeType": "Return", "src": "4973:42:6"}]}, "documentation": {"id": 1049, "nodeType": "StructuredDocumentation", "src": "4800:55:6", "text": " @dev See {IERC721-isApprovedForAll}."}, "functionSelector": "e985e9c5", "id": 1066, "implemented": true, "kind": "function", "modifiers": [], "name": "isApprovedForAll", "nameLocation": "4869:16:6", "nodeType": "FunctionDefinition", "overrides": {"id": 1055, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4939:8:6"}, "parameters": {"id": 1054, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1051, "mutability": "mutable", "name": "owner", "nameLocation": "4894:5:6", "nodeType": "VariableDeclaration", "scope": 1066, "src": "4886:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1050, "name": "address", "nodeType": "ElementaryTypeName", "src": "4886:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1053, "mutability": "mutable", "name": "operator", "nameLocation": "4909:8:6", "nodeType": "VariableDeclaration", "scope": 1066, "src": "4901:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1052, "name": "address", "nodeType": "ElementaryTypeName", "src": "4901:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4885:33:6"}, "returnParameters": {"id": 1058, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1057, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1066, "src": "4957:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1056, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4957:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4956:6:6"}, "scope": 1628, "src": "4860:162:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1727], "body": {"id": 1092, "nodeType": "Block", "src": "5203:208:6", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 1079, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "5292:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5292:12:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1081, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1073, "src": "5306:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1078, "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1223, "src": "5273:18:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)"}}, "id": 1082, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5273:41:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564", "id": 1083, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5316:48:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}, "value": "ERC721: caller is not token owner nor approved"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}], "id": 1077, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5265:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1084, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5265:100:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1085, "nodeType": "ExpressionStatement", "src": "5265:100:6"}, {"expression": {"arguments": [{"id": 1087, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1069, "src": "5386:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1088, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1071, "src": "5392:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1089, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1073, "src": "5396:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1086, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1468, "src": "5376:9:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1090, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5376:28:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1091, "nodeType": "ExpressionStatement", "src": "5376:28:6"}]}, "documentation": {"id": 1067, "nodeType": "StructuredDocumentation", "src": "5028:51:6", "text": " @dev See {IERC721-transferFrom}."}, "functionSelector": "23b872dd", "id": 1093, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "5093:12:6", "nodeType": "FunctionDefinition", "overrides": {"id": 1075, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5194:8:6"}, "parameters": {"id": 1074, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1069, "mutability": "mutable", "name": "from", "nameLocation": "5123:4:6", "nodeType": "VariableDeclaration", "scope": 1093, "src": "5115:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1068, "name": "address", "nodeType": "ElementaryTypeName", "src": "5115:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1071, "mutability": "mutable", "name": "to", "nameLocation": "5145:2:6", "nodeType": "VariableDeclaration", "scope": 1093, "src": "5137:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1070, "name": "address", "nodeType": "ElementaryTypeName", "src": "5137:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1073, "mutability": "mutable", "name": "tokenId", "nameLocation": "5165:7:6", "nodeType": "VariableDeclaration", "scope": 1093, "src": "5157:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1072, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5157:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5105:73:6"}, "returnParameters": {"id": 1076, "nodeType": "ParameterList", "parameters": [], "src": "5203:0:6"}, "scope": 1628, "src": "5084:327:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [1717], "body": {"id": 1111, "nodeType": "Block", "src": "5600:56:6", "statements": [{"expression": {"arguments": [{"id": 1105, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "5627:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1106, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "5633:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1107, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1100, "src": "5637:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "", "id": 1108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5646:2:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "id": 1104, "name": "safeTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [1112, 1142], "referencedDeclaration": 1142, "src": "5610:16:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)"}}, "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5610:39:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1110, "nodeType": "ExpressionStatement", "src": "5610:39:6"}]}, "documentation": {"id": 1094, "nodeType": "StructuredDocumentation", "src": "5417:55:6", "text": " @dev See {IERC721-safeTransferFrom}."}, "functionSelector": "42842e0e", "id": 1112, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "5486:16:6", "nodeType": "FunctionDefinition", "overrides": {"id": 1102, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5591:8:6"}, "parameters": {"id": 1101, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1096, "mutability": "mutable", "name": "from", "nameLocation": "5520:4:6", "nodeType": "VariableDeclaration", "scope": 1112, "src": "5512:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1095, "name": "address", "nodeType": "ElementaryTypeName", "src": "5512:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1098, "mutability": "mutable", "name": "to", "nameLocation": "5542:2:6", "nodeType": "VariableDeclaration", "scope": 1112, "src": "5534:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1097, "name": "address", "nodeType": "ElementaryTypeName", "src": "5534:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1100, "mutability": "mutable", "name": "tokenId", "nameLocation": "5562:7:6", "nodeType": "VariableDeclaration", "scope": 1112, "src": "5554:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1099, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5554:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5502:73:6"}, "returnParameters": {"id": 1103, "nodeType": "ParameterList", "parameters": [], "src": "5600:0:6"}, "scope": 1628, "src": "5477:179:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [1707], "body": {"id": 1141, "nodeType": "Block", "src": "5872:165:6", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 1127, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "5909:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1128, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5909:12:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1129, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1119, "src": "5923:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1126, "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1223, "src": "5890:18:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)"}}, "id": 1130, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5890:41:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564", "id": 1131, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5933:48:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}, "value": "ERC721: caller is not token owner nor approved"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}], "id": 1125, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5882:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5882:100:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1133, "nodeType": "ExpressionStatement", "src": "5882:100:6"}, {"expression": {"arguments": [{"id": 1135, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1115, "src": "6006:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1136, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1117, "src": "6012:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1137, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1119, "src": "6016:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1138, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1121, "src": "6025:4:6", "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"}], "id": 1134, "name": "_safeTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1171, "src": "5992:13:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)"}}, "id": 1139, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5992:38:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1140, "nodeType": "ExpressionStatement", "src": "5992:38:6"}]}, "documentation": {"id": 1113, "nodeType": "StructuredDocumentation", "src": "5662:55:6", "text": " @dev See {IERC721-safeTransferFrom}."}, "functionSelector": "b88d4fde", "id": 1142, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "5731:16:6", "nodeType": "FunctionDefinition", "overrides": {"id": 1123, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5863:8:6"}, "parameters": {"id": 1122, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1115, "mutability": "mutable", "name": "from", "nameLocation": "5765:4:6", "nodeType": "VariableDeclaration", "scope": 1142, "src": "5757:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1114, "name": "address", "nodeType": "ElementaryTypeName", "src": "5757:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1117, "mutability": "mutable", "name": "to", "nameLocation": "5787:2:6", "nodeType": "VariableDeclaration", "scope": 1142, "src": "5779:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1116, "name": "address", "nodeType": "ElementaryTypeName", "src": "5779:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1119, "mutability": "mutable", "name": "tokenId", "nameLocation": "5807:7:6", "nodeType": "VariableDeclaration", "scope": 1142, "src": "5799:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1118, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5799:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1121, "mutability": "mutable", "name": "data", "nameLocation": "5837:4:6", "nodeType": "VariableDeclaration", "scope": 1142, "src": "5824:17:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1120, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5824:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5747:100:6"}, "returnParameters": {"id": 1124, "nodeType": "ParameterList", "parameters": [], "src": "5872:0:6"}, "scope": 1628, "src": "5722:315:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 1170, "nodeType": "Block", "src": "7038:165:6", "statements": [{"expression": {"arguments": [{"id": 1155, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1145, "src": "7058:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1156, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "7064:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1157, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "7068:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1154, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1468, "src": "7048:9:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7048:28:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1159, "nodeType": "ExpressionStatement", "src": "7048:28:6"}, {"expression": {"arguments": [{"arguments": [{"id": 1162, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1145, "src": "7117:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1163, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "7123:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1164, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "7127:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1165, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1151, "src": "7136:4:6", "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"}], "id": 1161, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1600, "src": "7094:22:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)"}}, "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7094:47:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 1167, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7143:52:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}, "value": "ERC721: transfer to non ERC721Receiver implementer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}], "id": 1160, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7086:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1168, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7086:110:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1169, "nodeType": "ExpressionStatement", "src": "7086:110:6"}]}, "documentation": {"id": 1143, "nodeType": "StructuredDocumentation", "src": "6043:850:6", "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "id": 1171, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeTransfer", "nameLocation": "6907:13:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1152, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1145, "mutability": "mutable", "name": "from", "nameLocation": "6938:4:6", "nodeType": "VariableDeclaration", "scope": 1171, "src": "6930:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1144, "name": "address", "nodeType": "ElementaryTypeName", "src": "6930:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1147, "mutability": "mutable", "name": "to", "nameLocation": "6960:2:6", "nodeType": "VariableDeclaration", "scope": 1171, "src": "6952:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1146, "name": "address", "nodeType": "ElementaryTypeName", "src": "6952:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1149, "mutability": "mutable", "name": "tokenId", "nameLocation": "6980:7:6", "nodeType": "VariableDeclaration", "scope": 1171, "src": "6972:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1148, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6972:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1151, "mutability": "mutable", "name": "data", "nameLocation": "7010:4:6", "nodeType": "VariableDeclaration", "scope": 1171, "src": "6997:17:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1150, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6997:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6920:100:6"}, "returnParameters": {"id": 1153, "nodeType": "ParameterList", "parameters": [], "src": "7038:0:6"}, "scope": 1628, "src": "6898:305:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1188, "nodeType": "Block", "src": "7577:54:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 1179, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 771, "src": "7594:7:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1181, "indexExpression": {"id": 1180, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1174, "src": "7602:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7594:16:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1184, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7622:1:6", "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": 1183, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7614:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1182, "name": "address", "nodeType": "ElementaryTypeName", "src": "7614:7:6", "typeDescriptions": {}}}, "id": 1185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7614:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7594:30:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1178, "id": 1187, "nodeType": "Return", "src": "7587:37:6"}]}, "documentation": {"id": 1172, "nodeType": "StructuredDocumentation", "src": "7209:292:6", "text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."}, "id": 1189, "implemented": true, "kind": "function", "modifiers": [], "name": "_exists", "nameLocation": "7515:7:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1175, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1174, "mutability": "mutable", "name": "tokenId", "nameLocation": "7531:7:6", "nodeType": "VariableDeclaration", "scope": 1189, "src": "7523:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1173, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7523:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7522:17:6"}, "returnParameters": {"id": 1178, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1177, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1189, "src": "7571:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1176, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7571:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "7570:6:6"}, "scope": 1628, "src": "7506:125:6", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 1222, "nodeType": "Block", "src": "7888:173:6", "statements": [{"assignments": [1200], "declarations": [{"constant": false, "id": 1200, "mutability": "mutable", "name": "owner", "nameLocation": "7906:5:6", "nodeType": "VariableDeclaration", "scope": 1222, "src": "7898:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1199, "name": "address", "nodeType": "ElementaryTypeName", "src": "7898:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1205, "initialValue": {"arguments": [{"id": 1203, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1194, "src": "7940:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1201, "name": "ERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "7914:17:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1628_$", "typeString": "type(contract ERC721Upgradeable)"}}, "id": 1202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7932:7:6", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 902, "src": "7914:25:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7914:34:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "7898:50:6"}, {"expression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1206, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1192, "src": "7966:7:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1207, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "7977:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7966:16:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 1210, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "8003:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1211, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1192, "src": "8010:7:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1209, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1066, "src": "7986:16:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)"}}, "id": 1212, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7986:32:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7966:52:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 1215, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1194, "src": "8034:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1214, "name": "getApproved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1031, "src": "8022:11:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8022:20:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1217, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1192, "src": "8046:7:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "8022:31:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7966:87:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 1220, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "7965:89:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1198, "id": 1221, "nodeType": "Return", "src": "7958:96:6"}]}, "documentation": {"id": 1190, "nodeType": "StructuredDocumentation", "src": "7637:147:6", "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."}, "id": 1223, "implemented": true, "kind": "function", "modifiers": [], "name": "_isApprovedOrOwner", "nameLocation": "7798:18:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1195, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1192, "mutability": "mutable", "name": "spender", "nameLocation": "7825:7:6", "nodeType": "VariableDeclaration", "scope": 1223, "src": "7817:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1191, "name": "address", "nodeType": "ElementaryTypeName", "src": "7817:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1194, "mutability": "mutable", "name": "tokenId", "nameLocation": "7842:7:6", "nodeType": "VariableDeclaration", "scope": 1223, "src": "7834:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1193, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7834:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7816:34:6"}, "returnParameters": {"id": 1198, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1197, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1223, "src": "7882:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1196, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7882:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "7881:6:6"}, "scope": 1628, "src": "7789:272:6", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 1237, "nodeType": "Block", "src": "8456:43:6", "statements": [{"expression": {"arguments": [{"id": 1232, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1226, "src": "8476:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1233, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1228, "src": "8480:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "", "id": 1234, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8489:2:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "id": 1231, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [1238, 1267], "referencedDeclaration": 1267, "src": "8466:9:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,uint256,bytes memory)"}}, "id": 1235, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8466:26:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1236, "nodeType": "ExpressionStatement", "src": "8466:26:6"}]}, "documentation": {"id": 1224, "nodeType": "StructuredDocumentation", "src": "8067:319:6", "text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "id": 1238, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "8400:9:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1229, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1226, "mutability": "mutable", "name": "to", "nameLocation": "8418:2:6", "nodeType": "VariableDeclaration", "scope": 1238, "src": "8410:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1225, "name": "address", "nodeType": "ElementaryTypeName", "src": "8410:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1228, "mutability": "mutable", "name": "tokenId", "nameLocation": "8430:7:6", "nodeType": "VariableDeclaration", "scope": 1238, "src": "8422:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1227, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8422:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "8409:29:6"}, "returnParameters": {"id": 1230, "nodeType": "ParameterList", "parameters": [], "src": "8456:0:6"}, "scope": 1628, "src": "8391:108:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1266, "nodeType": "Block", "src": "8834:195:6", "statements": [{"expression": {"arguments": [{"id": 1249, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1241, "src": "8850:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1250, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1243, "src": "8854:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1248, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1333, "src": "8844:5:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8844:18:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1252, "nodeType": "ExpressionStatement", "src": "8844:18:6"}, {"expression": {"arguments": [{"arguments": [{"arguments": [{"hexValue": "30", "id": 1257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8924:1:6", "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": 1256, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8916:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1255, "name": "address", "nodeType": "ElementaryTypeName", "src": "8916:7:6", "typeDescriptions": {}}}, "id": 1258, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8916:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1259, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1241, "src": "8928:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1260, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1243, "src": "8932:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1261, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "8941:4:6", "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"}], "id": 1254, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1600, "src": "8893:22:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)"}}, "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8893:53:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 1263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8960:52:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}, "value": "ERC721: transfer to non ERC721Receiver implementer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}], "id": 1253, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8872:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1264, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8872:150:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1265, "nodeType": "ExpressionStatement", "src": "8872:150:6"}]}, "documentation": {"id": 1239, "nodeType": "StructuredDocumentation", "src": "8505:210:6", "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."}, "id": 1267, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "8729:9:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1246, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1241, "mutability": "mutable", "name": "to", "nameLocation": "8756:2:6", "nodeType": "VariableDeclaration", "scope": 1267, "src": "8748:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1240, "name": "address", "nodeType": "ElementaryTypeName", "src": "8748:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1243, "mutability": "mutable", "name": "tokenId", "nameLocation": "8776:7:6", "nodeType": "VariableDeclaration", "scope": 1267, "src": "8768:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1242, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8768:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1245, "mutability": "mutable", "name": "data", "nameLocation": "8806:4:6", "nodeType": "VariableDeclaration", "scope": 1267, "src": "8793:17:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1244, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8793:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "8738:78:6"}, "returnParameters": {"id": 1247, "nodeType": "ParameterList", "parameters": [], "src": "8834:0:6"}, "scope": 1628, "src": "8720:309:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1332, "nodeType": "Block", "src": "9412:366:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1276, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "9430:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1279, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9444:1:6", "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": 1278, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9436:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1277, "name": "address", "nodeType": "ElementaryTypeName", "src": "9436:7:6", "typeDescriptions": {}}}, "id": 1280, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9436:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9430:16:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373", "id": 1282, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9448:34:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", "typeString": "literal_string \"ERC721: mint to the zero address\""}, "value": "ERC721: mint to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", "typeString": "literal_string \"ERC721: mint to the zero address\""}], "id": 1275, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9422:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1283, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9422:61:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1284, "nodeType": "ExpressionStatement", "src": "9422:61:6"}, {"expression": {"arguments": [{"id": 1289, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "9501:17:6", "subExpression": {"arguments": [{"id": 1287, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1272, "src": "9510:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1286, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1189, "src": "9502:7:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)"}}, "id": 1288, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9502:16:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564", "id": 1290, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9520:30:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", "typeString": "literal_string \"ERC721: token already minted\""}, "value": "ERC721: token already minted"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", "typeString": "literal_string \"ERC721: token already minted\""}], "id": 1285, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9493:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9493:58:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1292, "nodeType": "ExpressionStatement", "src": "9493:58:6"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1296, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9591:1:6", "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": 1295, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9583:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1294, "name": "address", "nodeType": "ElementaryTypeName", "src": "9583:7:6", "typeDescriptions": {}}}, "id": 1297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9583:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1298, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "9595:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1299, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1272, "src": "9599:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1293, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1611, "src": "9562:20:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1300, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9562:45:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1301, "nodeType": "ExpressionStatement", "src": "9562:45:6"}, {"expression": {"id": 1306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1302, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 775, "src": "9618:9:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 1304, "indexExpression": {"id": 1303, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "9628:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9618:13:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1305, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9635:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9618:18:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1307, "nodeType": "ExpressionStatement", "src": "9618:18:6"}, {"expression": {"id": 1312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1308, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 771, "src": "9646:7:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1310, "indexExpression": {"id": 1309, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1272, "src": "9654:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9646:16:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1311, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "9665:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9646:21:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1313, "nodeType": "ExpressionStatement", "src": "9646:21:6"}, {"eventCall": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1317, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9700:1:6", "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": 1316, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9692:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1315, "name": "address", "nodeType": "ElementaryTypeName", "src": "9692:7:6", "typeDescriptions": {}}}, "id": 1318, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9692:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1319, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "9704:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1320, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1272, "src": "9708:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1314, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1661, "src": "9683:8:6", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1321, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9683:33:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1322, "nodeType": "EmitStatement", "src": "9678:38:6"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1326, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9755:1:6", "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": 1325, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9747:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1324, "name": "address", "nodeType": "ElementaryTypeName", "src": "9747:7:6", "typeDescriptions": {}}}, "id": 1327, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9747:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1328, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "9759:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1329, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1272, "src": "9763:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1323, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1622, "src": "9727:19:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1330, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9727:44:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1331, "nodeType": "ExpressionStatement", "src": "9727:44:6"}]}, "documentation": {"id": 1268, "nodeType": "StructuredDocumentation", "src": "9035:311:6", "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."}, "id": 1333, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nameLocation": "9360:5:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1273, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1270, "mutability": "mutable", "name": "to", "nameLocation": "9374:2:6", "nodeType": "VariableDeclaration", "scope": 1333, "src": "9366:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1269, "name": "address", "nodeType": "ElementaryTypeName", "src": "9366:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1272, "mutability": "mutable", "name": "tokenId", "nameLocation": "9386:7:6", "nodeType": "VariableDeclaration", "scope": 1333, "src": "9378:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1271, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9378:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "9365:29:6"}, "returnParameters": {"id": 1274, "nodeType": "ParameterList", "parameters": [], "src": "9412:0:6"}, "scope": 1628, "src": "9351:427:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1392, "nodeType": "Block", "src": "10044:368:6", "statements": [{"assignments": [1340], "declarations": [{"constant": false, "id": 1340, "mutability": "mutable", "name": "owner", "nameLocation": "10062:5:6", "nodeType": "VariableDeclaration", "scope": 1392, "src": "10054:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1339, "name": "address", "nodeType": "ElementaryTypeName", "src": "10054:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1345, "initialValue": {"arguments": [{"id": 1343, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "10096:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1341, "name": "ERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "10070:17:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1628_$", "typeString": "type(contract ERC721Upgradeable)"}}, "id": 1342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10088:7:6", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 902, "src": "10070:25:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1344, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10070:34:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "10054:50:6"}, {"expression": {"arguments": [{"id": 1347, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1340, "src": "10136:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 1350, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10151:1:6", "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": 1349, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10143:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1348, "name": "address", "nodeType": "ElementaryTypeName", "src": "10143:7:6", "typeDescriptions": {}}}, "id": 1351, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10143:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1352, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "10155:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1346, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1611, "src": "10115:20:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1353, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10115:48:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1354, "nodeType": "ExpressionStatement", "src": "10115:48:6"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1358, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10218:1:6", "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": 1357, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10210:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1356, "name": "address", "nodeType": "ElementaryTypeName", "src": "10210:7:6", "typeDescriptions": {}}}, "id": 1359, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10210:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1360, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "10222:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1355, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "10201:8:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1361, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10201:29:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1362, "nodeType": "ExpressionStatement", "src": "10201:29:6"}, {"expression": {"id": 1367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1363, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 775, "src": "10241:9:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 1365, "indexExpression": {"id": 1364, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1340, "src": "10251:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10241:16:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"hexValue": "31", "id": 1366, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10261:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "10241:21:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1368, "nodeType": "ExpressionStatement", "src": "10241:21:6"}, {"expression": {"id": 1372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "10272:23:6", "subExpression": {"baseExpression": {"id": 1369, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 771, "src": "10279:7:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1371, "indexExpression": {"id": 1370, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "10287:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10279:16:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1373, "nodeType": "ExpressionStatement", "src": "10272:23:6"}, {"eventCall": {"arguments": [{"id": 1375, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1340, "src": "10320:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 1378, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10335:1:6", "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": 1377, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10327:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1376, "name": "address", "nodeType": "ElementaryTypeName", "src": "10327:7:6", "typeDescriptions": {}}}, "id": 1379, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10327:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1380, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "10339:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1374, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1661, "src": "10311:8:6", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1381, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10311:36:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1382, "nodeType": "EmitStatement", "src": "10306:41:6"}, {"expression": {"arguments": [{"id": 1384, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1340, "src": "10378:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 1387, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10393:1:6", "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": 1386, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10385:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1385, "name": "address", "nodeType": "ElementaryTypeName", "src": "10385:7:6", "typeDescriptions": {}}}, "id": 1388, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10385:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1389, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "10397:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1383, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1622, "src": "10358:19:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1390, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10358:47:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1391, "nodeType": "ExpressionStatement", "src": "10358:47:6"}]}, "documentation": {"id": 1334, "nodeType": "StructuredDocumentation", "src": "9784:206:6", "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."}, "id": 1393, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "10004:5:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1337, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1336, "mutability": "mutable", "name": "tokenId", "nameLocation": "10018:7:6", "nodeType": "VariableDeclaration", "scope": 1393, "src": "10010:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1335, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10010:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10009:17:6"}, "returnParameters": {"id": 1338, "nodeType": "ParameterList", "parameters": [], "src": "10044:0:6"}, "scope": 1628, "src": "9995:417:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1467, "nodeType": "Block", "src": "10845:507:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 1406, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1400, "src": "10889:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1404, "name": "ERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "10863:17:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1628_$", "typeString": "type(contract ERC721Upgradeable)"}}, "id": 1405, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10881:7:6", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 902, "src": "10863:25:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1407, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10863:34:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1408, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1396, "src": "10901:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10863:42:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572", "id": 1410, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10907:39:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48", "typeString": "literal_string \"ERC721: transfer from incorrect owner\""}, "value": "ERC721: transfer from incorrect owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48", "typeString": "literal_string \"ERC721: transfer from incorrect owner\""}], "id": 1403, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10855:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1411, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10855:92:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1412, "nodeType": "ExpressionStatement", "src": "10855:92:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1419, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1414, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1398, "src": "10965:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1417, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10979:1:6", "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": 1416, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10971:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1415, "name": "address", "nodeType": "ElementaryTypeName", "src": "10971:7:6", "typeDescriptions": {}}}, "id": 1418, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10971:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10965:16:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373", "id": 1420, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10983:38:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", "typeString": "literal_string \"ERC721: transfer to the zero address\""}, "value": "ERC721: transfer to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", "typeString": "literal_string \"ERC721: transfer to the zero address\""}], "id": 1413, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10957:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1421, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10957:65:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1422, "nodeType": "ExpressionStatement", "src": "10957:65:6"}, {"expression": {"arguments": [{"id": 1424, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1396, "src": "11054:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1425, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1398, "src": "11060:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1426, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1400, "src": "11064:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1423, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1611, "src": "11033:20:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1427, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11033:39:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1428, "nodeType": "ExpressionStatement", "src": "11033:39:6"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11151:1:6", "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": 1431, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11143:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1430, "name": "address", "nodeType": "ElementaryTypeName", "src": "11143:7:6", "typeDescriptions": {}}}, "id": 1433, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11143:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1434, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1400, "src": "11155:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1429, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "11134:8:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1435, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11134:29:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1436, "nodeType": "ExpressionStatement", "src": "11134:29:6"}, {"expression": {"id": 1441, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1437, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 775, "src": "11174:9:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 1439, "indexExpression": {"id": 1438, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1396, "src": "11184:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11174:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"hexValue": "31", "id": 1440, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11193:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "11174:20:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1442, "nodeType": "ExpressionStatement", "src": "11174:20:6"}, {"expression": {"id": 1447, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1443, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 775, "src": "11204:9:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 1445, "indexExpression": {"id": 1444, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1398, "src": "11214:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11204:13:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1446, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11221:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "11204:18:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1448, "nodeType": "ExpressionStatement", "src": "11204:18:6"}, {"expression": {"id": 1453, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1449, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 771, "src": "11232:7:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1451, "indexExpression": {"id": 1450, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1400, "src": "11240:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11232:16:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1452, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1398, "src": "11251:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "11232:21:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1454, "nodeType": "ExpressionStatement", "src": "11232:21:6"}, {"eventCall": {"arguments": [{"id": 1456, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1396, "src": "11278:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1457, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1398, "src": "11284:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1458, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1400, "src": "11288:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1455, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1661, "src": "11269:8:6", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1459, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11269:27:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1460, "nodeType": "EmitStatement", "src": "11264:32:6"}, {"expression": {"arguments": [{"id": 1462, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1396, "src": "11327:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1463, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1398, "src": "11333:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1464, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1400, "src": "11337:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1461, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1622, "src": "11307:19:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1465, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11307:38:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1466, "nodeType": "ExpressionStatement", "src": "11307:38:6"}]}, "documentation": {"id": 1394, "nodeType": "StructuredDocumentation", "src": "10418:313:6", "text": " @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."}, "id": 1468, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nameLocation": "10745:9:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1401, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1396, "mutability": "mutable", "name": "from", "nameLocation": "10772:4:6", "nodeType": "VariableDeclaration", "scope": 1468, "src": "10764:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1395, "name": "address", "nodeType": "ElementaryTypeName", "src": "10764:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1398, "mutability": "mutable", "name": "to", "nameLocation": "10794:2:6", "nodeType": "VariableDeclaration", "scope": 1468, "src": "10786:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1397, "name": "address", "nodeType": "ElementaryTypeName", "src": "10786:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1400, "mutability": "mutable", "name": "tokenId", "nameLocation": "10814:7:6", "nodeType": "VariableDeclaration", "scope": 1468, "src": "10806:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1399, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10806:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10754:73:6"}, "returnParameters": {"id": 1402, "nodeType": "ParameterList", "parameters": [], "src": "10845:0:6"}, "scope": 1628, "src": "10736:616:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1491, "nodeType": "Block", "src": "11528:118:6", "statements": [{"expression": {"id": 1480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1476, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "11538:15:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1478, "indexExpression": {"id": 1477, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1473, "src": "11554:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11538:24:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1479, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1471, "src": "11565:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "11538:29:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1481, "nodeType": "ExpressionStatement", "src": "11538:29:6"}, {"eventCall": {"arguments": [{"arguments": [{"id": 1485, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1473, "src": "11617:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1483, "name": "ERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "11591:17:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1628_$", "typeString": "type(contract ERC721Upgradeable)"}}, "id": 1484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11609:7:6", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 902, "src": "11591:25:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1486, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11591:34:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1487, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1471, "src": "11627:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1488, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1473, "src": "11631:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1482, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "11582:8:6", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1489, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11582:57:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1490, "nodeType": "EmitStatement", "src": "11577:62:6"}]}, "documentation": {"id": 1469, "nodeType": "StructuredDocumentation", "src": "11358:101:6", "text": " @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."}, "id": 1492, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nameLocation": "11473:8:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1474, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1471, "mutability": "mutable", "name": "to", "nameLocation": "11490:2:6", "nodeType": "VariableDeclaration", "scope": 1492, "src": "11482:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1470, "name": "address", "nodeType": "ElementaryTypeName", "src": "11482:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1473, "mutability": "mutable", "name": "tokenId", "nameLocation": "11502:7:6", "nodeType": "VariableDeclaration", "scope": 1492, "src": "11494:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1472, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11494:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "11481:29:6"}, "returnParameters": {"id": 1475, "nodeType": "ParameterList", "parameters": [], "src": "11528:0:6"}, "scope": 1628, "src": "11464:182:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1523, "nodeType": "Block", "src": "11905:184:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1503, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1495, "src": "11923:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 1504, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "11932:8:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "11923:17:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20617070726f766520746f2063616c6c6572", "id": 1506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11942:27:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", "typeString": "literal_string \"ERC721: approve to caller\""}, "value": "ERC721: approve to caller"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", "typeString": "literal_string \"ERC721: approve to caller\""}], "id": 1502, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11915:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11915:55:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1508, "nodeType": "ExpressionStatement", "src": "11915:55:6"}, {"expression": {"id": 1515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"baseExpression": {"id": 1509, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "11980:18:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}}, "id": 1512, "indexExpression": {"id": 1510, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1495, "src": "11999:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11980:25:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 1513, "indexExpression": {"id": 1511, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "12006:8:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11980:35:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1514, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1499, "src": "12018:8:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "11980:46:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1516, "nodeType": "ExpressionStatement", "src": "11980:46:6"}, {"eventCall": {"arguments": [{"id": 1518, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1495, "src": "12056:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1519, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "12063:8:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1520, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1499, "src": "12073:8:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 1517, "name": "ApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "12041:14:6", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)"}}, "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12041:41:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1522, "nodeType": "EmitStatement", "src": "12036:46:6"}]}, "documentation": {"id": 1493, "nodeType": "StructuredDocumentation", "src": "11652:125:6", "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."}, "id": 1524, "implemented": true, "kind": "function", "modifiers": [], "name": "_setApprovalForAll", "nameLocation": "11791:18:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1500, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1495, "mutability": "mutable", "name": "owner", "nameLocation": "11827:5:6", "nodeType": "VariableDeclaration", "scope": 1524, "src": "11819:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1494, "name": "address", "nodeType": "ElementaryTypeName", "src": "11819:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1497, "mutability": "mutable", "name": "operator", "nameLocation": "11850:8:6", "nodeType": "VariableDeclaration", "scope": 1524, "src": "11842:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1496, "name": "address", "nodeType": "ElementaryTypeName", "src": "11842:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1499, "mutability": "mutable", "name": "approved", "nameLocation": "11873:8:6", "nodeType": "VariableDeclaration", "scope": 1524, "src": "11868:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1498, "name": "bool", "nodeType": "ElementaryTypeName", "src": "11868:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "11809:78:6"}, "returnParameters": {"id": 1501, "nodeType": "ParameterList", "parameters": [], "src": "11905:0:6"}, "scope": 1628, "src": "11782:307:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1537, "nodeType": "Block", "src": "12236:70:6", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 1532, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1527, "src": "12262:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1531, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1189, "src": "12254:7:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)"}}, "id": 1533, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12254:16:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20696e76616c696420746f6b656e204944", "id": 1534, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "12272:26:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}, "value": "ERC721: invalid token ID"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}], "id": 1530, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "12246:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1535, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12246:53:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1536, "nodeType": "ExpressionStatement", "src": "12246:53:6"}]}, "documentation": {"id": 1525, "nodeType": "StructuredDocumentation", "src": "12095:73:6", "text": " @dev Reverts if the `tokenId` has not been minted yet."}, "id": 1538, "implemented": true, "kind": "function", "modifiers": [], "name": "_requireMinted", "nameLocation": "12182:14:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1528, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1527, "mutability": "mutable", "name": "tokenId", "nameLocation": "12205:7:6", "nodeType": "VariableDeclaration", "scope": 1538, "src": "12197:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1526, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12197:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "12196:17:6"}, "returnParameters": {"id": 1529, "nodeType": "ParameterList", "parameters": [], "src": "12236:0:6"}, "scope": 1628, "src": "12173:133:6", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 1599, "nodeType": "Block", "src": "13013:698:6", "statements": [{"condition": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1552, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1543, "src": "13027:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13030:10:6", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 1952, "src": "13027:13:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address) view returns (bool)"}}, "id": 1554, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13027:15:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1597, "nodeType": "Block", "src": "13669:36:6", "statements": [{"expression": {"hexValue": "74727565", "id": 1595, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "13690:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 1551, "id": 1596, "nodeType": "Return", "src": "13683:11:6"}]}, "id": 1598, "nodeType": "IfStatement", "src": "13023:682:6", "trueBody": {"id": 1594, "nodeType": "Block", "src": "13044:619:6", "statements": [{"clauses": [{"block": {"id": 1574, "nodeType": "Block", "src": "13169:102:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 1572, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1568, "name": "retval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1566, "src": "13194:6:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"expression": {"id": 1569, "name": "IERC721ReceiverUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1646, "src": "13204:26:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721ReceiverUpgradeable_$1646_$", "typeString": "type(contract IERC721ReceiverUpgradeable)"}}, "id": 1570, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "13231:16:6", "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "13204:43:6", "typeDescriptions": {"typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", "typeString": "function IERC721ReceiverUpgradeable.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}}, "id": 1571, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "13248:8:6", "memberName": "selector", "nodeType": "MemberAccess", "src": "13204:52:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "13194:62:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1551, "id": 1573, "nodeType": "Return", "src": "13187:69:6"}]}, "errorName": "", "id": 1575, "nodeType": "TryCatchClause", "parameters": {"id": 1567, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1566, "mutability": "mutable", "name": "retval", "nameLocation": "13161:6:6", "nodeType": "VariableDeclaration", "scope": 1575, "src": "13154:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 1565, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "13154:6:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "13153:15:6"}, "src": "13145:126:6"}, {"block": {"id": 1591, "nodeType": "Block", "src": "13300:353:6", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1582, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1579, "name": "reason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1577, "src": "13322:6:6", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 1580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13329:6:6", "memberName": "length", "nodeType": "MemberAccess", "src": "13322:13:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1581, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13339:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "13322:18:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1589, "nodeType": "Block", "src": "13449:190:6", "statements": [{"AST": {"nodeType": "YulBlock", "src": "13535:86:6", "statements": [{"expression": {"arguments": [{"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "13572:2:6", "type": "", "value": "32"}, {"name": "reason", "nodeType": "YulIdentifier", "src": "13576:6:6"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "13568:3:6"}, "nodeType": "YulFunctionCall", "src": "13568:15:6"}, {"arguments": [{"name": "reason", "nodeType": "YulIdentifier", "src": "13591:6:6"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "13585:5:6"}, "nodeType": "YulFunctionCall", "src": "13585:13:6"}], "functionName": {"name": "revert", "nodeType": "YulIdentifier", "src": "13561:6:6"}, "nodeType": "YulFunctionCall", "src": "13561:38:6"}, "nodeType": "YulExpressionStatement", "src": "13561:38:6"}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 1577, "isOffset": false, "isSlot": false, "src": "13576:6:6", "valueSize": 1}, {"declaration": 1577, "isOffset": false, "isSlot": false, "src": "13591:6:6", "valueSize": 1}], "id": 1588, "nodeType": "InlineAssembly", "src": "13526:95:6"}]}, "id": 1590, "nodeType": "IfStatement", "src": "13318:321:6", "trueBody": {"id": 1587, "nodeType": "Block", "src": "13342:101:6", "statements": [{"expression": {"arguments": [{"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 1584, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "13371:52:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}, "value": "ERC721: transfer to non ERC721Receiver implementer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}], "id": 1583, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "13364:6:6", "typeDescriptions": {"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure"}}, "id": 1585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13364:60:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1586, "nodeType": "ExpressionStatement", "src": "13364:60:6"}]}}]}, "errorName": "", "id": 1592, "nodeType": "TryCatchClause", "parameters": {"id": 1578, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1577, "mutability": "mutable", "name": "reason", "nameLocation": "13292:6:6", "nodeType": "VariableDeclaration", "scope": 1592, "src": "13279:19:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1576, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13279:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "13278:21:6"}, "src": "13272:381:6"}], "externalCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 1559, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "13110:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1560, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13110:12:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1561, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1541, "src": "13124:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1562, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1545, "src": "13130:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1563, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1547, "src": "13139:4:6", "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": {"arguments": [{"id": 1556, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1543, "src": "13089:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1555, "name": "IERC721ReceiverUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1646, "src": "13062:26:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721ReceiverUpgradeable_$1646_$", "typeString": "type(contract IERC721ReceiverUpgradeable)"}}, "id": 1557, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13062:30:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC721ReceiverUpgradeable_$1646", "typeString": "contract IERC721ReceiverUpgradeable"}}, "id": 1558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13093:16:6", "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "13062:47:6", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"}}, "id": 1564, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13062:82:6", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "id": 1593, "nodeType": "TryStatement", "src": "13058:595:6"}]}}]}, "documentation": {"id": 1539, "nodeType": "StructuredDocumentation", "src": "12312:541:6", "text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"}, "id": 1600, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOnERC721Received", "nameLocation": "12867:22:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1548, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1541, "mutability": "mutable", "name": "from", "nameLocation": "12907:4:6", "nodeType": "VariableDeclaration", "scope": 1600, "src": "12899:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1540, "name": "address", "nodeType": "ElementaryTypeName", "src": "12899:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1543, "mutability": "mutable", "name": "to", "nameLocation": "12929:2:6", "nodeType": "VariableDeclaration", "scope": 1600, "src": "12921:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1542, "name": "address", "nodeType": "ElementaryTypeName", "src": "12921:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1545, "mutability": "mutable", "name": "tokenId", "nameLocation": "12949:7:6", "nodeType": "VariableDeclaration", "scope": 1600, "src": "12941:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1544, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12941:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1547, "mutability": "mutable", "name": "data", "nameLocation": "12979:4:6", "nodeType": "VariableDeclaration", "scope": 1600, "src": "12966:17:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1546, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12966:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "12889:100:6"}, "returnParameters": {"id": 1551, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1550, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1600, "src": "13007:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1549, "name": "bool", "nodeType": "ElementaryTypeName", "src": "13007:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "13006:6:6"}, "scope": 1628, "src": "12858:853:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 1610, "nodeType": "Block", "src": "14387:2:6", "statements": []}, "documentation": {"id": 1601, "nodeType": "StructuredDocumentation", "src": "13717:545:6", "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."}, "id": 1611, "implemented": true, "kind": "function", "modifiers": [], "name": "_beforeTokenTransfer", "nameLocation": "14276:20:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1608, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1603, "mutability": "mutable", "name": "from", "nameLocation": "14314:4:6", "nodeType": "VariableDeclaration", "scope": 1611, "src": "14306:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1602, "name": "address", "nodeType": "ElementaryTypeName", "src": "14306:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1605, "mutability": "mutable", "name": "to", "nameLocation": "14336:2:6", "nodeType": "VariableDeclaration", "scope": 1611, "src": "14328:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1604, "name": "address", "nodeType": "ElementaryTypeName", "src": "14328:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1607, "mutability": "mutable", "name": "tokenId", "nameLocation": "14356:7:6", "nodeType": "VariableDeclaration", "scope": 1611, "src": "14348:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1606, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14348:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "14296:73:6"}, "returnParameters": {"id": 1609, "nodeType": "ParameterList", "parameters": [], "src": "14387:0:6"}, "scope": 1628, "src": "14267:122:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1621, "nodeType": "Block", "src": "14880:2:6", "statements": []}, "documentation": {"id": 1612, "nodeType": "StructuredDocumentation", "src": "14395:361:6", "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."}, "id": 1622, "implemented": true, "kind": "function", "modifiers": [], "name": "_afterTokenTransfer", "nameLocation": "14770:19:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1619, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1614, "mutability": "mutable", "name": "from", "nameLocation": "14807:4:6", "nodeType": "VariableDeclaration", "scope": 1622, "src": "14799:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1613, "name": "address", "nodeType": "ElementaryTypeName", "src": "14799:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1616, "mutability": "mutable", "name": "to", "nameLocation": "14829:2:6", "nodeType": "VariableDeclaration", "scope": 1622, "src": "14821:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1615, "name": "address", "nodeType": "ElementaryTypeName", "src": "14821:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1618, "mutability": "mutable", "name": "tokenId", "nameLocation": "14849:7:6", "nodeType": "VariableDeclaration", "scope": 1622, "src": "14841:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1617, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14841:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "14789:73:6"}, "returnParameters": {"id": 1620, "nodeType": "ParameterList", "parameters": [], "src": "14880:0:6"}, "scope": 1628, "src": "14761:121:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 1623, "nodeType": "StructuredDocumentation", "src": "14888:254:6", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 1627, "mutability": "mutable", "name": "__gap", "nameLocation": "15167:5:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "15147:25:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$44_storage", "typeString": "uint256[44]"}, "typeName": {"baseType": {"id": 1624, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "15147:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1626, "length": {"hexValue": "3434", "id": 1625, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15155:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_44_by_1", "typeString": "int_const 44"}, "value": "44"}, "nodeType": "ArrayTypeName", "src": "15147:11:6", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$44_storage_ptr", "typeString": "uint256[44]"}}, "visibility": "private"}], "scope": 1629, "src": "751:14424:6", "usedErrors": []}], "src": "107:15069:6"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol", "exportedSymbols": {"IERC721ReceiverUpgradeable": [1646]}, "id": 1647, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1630, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "116:23:7"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC721ReceiverUpgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1631, "nodeType": "StructuredDocumentation", "src": "141:152:7", "text": " @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."}, "fullyImplemented": false, "id": 1646, "linearizedBaseContracts": [1646], "name": "IERC721ReceiverUpgradeable", "nameLocation": "304:26:7", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1632, "nodeType": "StructuredDocumentation", "src": "337:493:7", "text": " @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}, "functionSelector": "150b7a02", "id": 1645, "implemented": false, "kind": "function", "modifiers": [], "name": "onERC721Received", "nameLocation": "844:16:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1641, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1634, "mutability": "mutable", "name": "operator", "nameLocation": "878:8:7", "nodeType": "VariableDeclaration", "scope": 1645, "src": "870:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1633, "name": "address", "nodeType": "ElementaryTypeName", "src": "870:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1636, "mutability": "mutable", "name": "from", "nameLocation": "904:4:7", "nodeType": "VariableDeclaration", "scope": 1645, "src": "896:12:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1635, "name": "address", "nodeType": "ElementaryTypeName", "src": "896:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1638, "mutability": "mutable", "name": "tokenId", "nameLocation": "926:7:7", "nodeType": "VariableDeclaration", "scope": 1645, "src": "918:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1637, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "918:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1640, "mutability": "mutable", "name": "data", "nameLocation": "958:4:7", "nodeType": "VariableDeclaration", "scope": 1645, "src": "943:19:7", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1639, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "943:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "860:108:7"}, "returnParameters": {"id": 1644, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1643, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1645, "src": "987:6:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 1642, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "987:6:7", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "986:8:7"}, "scope": 1646, "src": "835:160:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1647, "src": "294:703:7", "usedErrors": []}], "src": "116:882:7"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol", "exportedSymbols": {"IERC165Upgradeable": [2695], "IERC721Upgradeable": [1762]}, "id": 1763, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1648, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "108:23:8"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", "file": "../../utils/introspection/IERC165Upgradeable.sol", "id": 1649, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1763, "sourceUnit": 2696, "src": "133:58:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1651, "name": "IERC165Upgradeable", "nameLocations": ["293:18:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2695, "src": "293:18:8"}, "id": 1652, "nodeType": "InheritanceSpecifier", "src": "293:18:8"}], "canonicalName": "IERC721Upgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1650, "nodeType": "StructuredDocumentation", "src": "193:67:8", "text": " @dev Required interface of an ERC721 compliant contract."}, "fullyImplemented": false, "id": 1762, "linearizedBaseContracts": [1762, 2695], "name": "IERC721Upgradeable", "nameLocation": "271:18:8", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 1653, "nodeType": "StructuredDocumentation", "src": "318:88:8", "text": " @dev Emitted when `tokenId` token is transferred from `from` to `to`."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1661, "name": "Transfer", "nameLocation": "417:8:8", "nodeType": "EventDefinition", "parameters": {"id": 1660, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1655, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "442:4:8", "nodeType": "VariableDeclaration", "scope": 1661, "src": "426:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1654, "name": "address", "nodeType": "ElementaryTypeName", "src": "426:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1657, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "464:2:8", "nodeType": "VariableDeclaration", "scope": 1661, "src": "448:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1656, "name": "address", "nodeType": "ElementaryTypeName", "src": "448:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1659, "indexed": true, "mutability": "mutable", "name": "tokenId", "nameLocation": "484:7:8", "nodeType": "VariableDeclaration", "scope": 1661, "src": "468:23:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1658, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "468:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:67:8"}, "src": "411:82:8"}, {"anonymous": false, "documentation": {"id": 1662, "nodeType": "StructuredDocumentation", "src": "499:94:8", "text": " @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1670, "name": "Approval", "nameLocation": "604:8:8", "nodeType": "EventDefinition", "parameters": {"id": 1669, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1664, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "629:5:8", "nodeType": "VariableDeclaration", "scope": 1670, "src": "613:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1663, "name": "address", "nodeType": "ElementaryTypeName", "src": "613:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1666, "indexed": true, "mutability": "mutable", "name": "approved", "nameLocation": "652:8:8", "nodeType": "VariableDeclaration", "scope": 1670, "src": "636:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1665, "name": "address", "nodeType": "ElementaryTypeName", "src": "636:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1668, "indexed": true, "mutability": "mutable", "name": "tokenId", "nameLocation": "678:7:8", "nodeType": "VariableDeclaration", "scope": 1670, "src": "662:23:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1667, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "662:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "612:74:8"}, "src": "598:89:8"}, {"anonymous": false, "documentation": {"id": 1671, "nodeType": "StructuredDocumentation", "src": "693:117:8", "text": " @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."}, "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31", "id": 1679, "name": "ApprovalForAll", "nameLocation": "821:14:8", "nodeType": "EventDefinition", "parameters": {"id": 1678, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1673, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "852:5:8", "nodeType": "VariableDeclaration", "scope": 1679, "src": "836:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1672, "name": "address", "nodeType": "ElementaryTypeName", "src": "836:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1675, "indexed": true, "mutability": "mutable", "name": "operator", "nameLocation": "875:8:8", "nodeType": "VariableDeclaration", "scope": 1679, "src": "859:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1674, "name": "address", "nodeType": "ElementaryTypeName", "src": "859:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1677, "indexed": false, "mutability": "mutable", "name": "approved", "nameLocation": "890:8:8", "nodeType": "VariableDeclaration", "scope": 1679, "src": "885:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1676, "name": "bool", "nodeType": "ElementaryTypeName", "src": "885:4:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "835:64:8"}, "src": "815:85:8"}, {"documentation": {"id": 1680, "nodeType": "StructuredDocumentation", "src": "906:76:8", "text": " @dev Returns the number of tokens in ``owner``'s account."}, "functionSelector": "70a08231", "id": 1687, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "996:9:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1683, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1682, "mutability": "mutable", "name": "owner", "nameLocation": "1014:5:8", "nodeType": "VariableDeclaration", "scope": 1687, "src": "1006:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1681, "name": "address", "nodeType": "ElementaryTypeName", "src": "1006:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1005:15:8"}, "returnParameters": {"id": 1686, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1685, "mutability": "mutable", "name": "balance", "nameLocation": "1052:7:8", "nodeType": "VariableDeclaration", "scope": 1687, "src": "1044:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1684, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1044:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1043:17:8"}, "scope": 1762, "src": "987:74:8", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1688, "nodeType": "StructuredDocumentation", "src": "1067:131:8", "text": " @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."}, "functionSelector": "6352211e", "id": 1695, "implemented": false, "kind": "function", "modifiers": [], "name": "ownerOf", "nameLocation": "1212:7:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1691, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1690, "mutability": "mutable", "name": "tokenId", "nameLocation": "1228:7:8", "nodeType": "VariableDeclaration", "scope": 1695, "src": "1220:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1689, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1220:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1219:17:8"}, "returnParameters": {"id": 1694, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1693, "mutability": "mutable", "name": "owner", "nameLocation": "1268:5:8", "nodeType": "VariableDeclaration", "scope": 1695, "src": "1260:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1692, "name": "address", "nodeType": "ElementaryTypeName", "src": "1260:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1259:15:8"}, "scope": 1762, "src": "1203:72:8", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1696, "nodeType": "StructuredDocumentation", "src": "1281:556:8", "text": " @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "functionSelector": "b88d4fde", "id": 1707, "implemented": false, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "1851:16:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1705, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1698, "mutability": "mutable", "name": "from", "nameLocation": "1885:4:8", "nodeType": "VariableDeclaration", "scope": 1707, "src": "1877:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1697, "name": "address", "nodeType": "ElementaryTypeName", "src": "1877:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1700, "mutability": "mutable", "name": "to", "nameLocation": "1907:2:8", "nodeType": "VariableDeclaration", "scope": 1707, "src": "1899:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1699, "name": "address", "nodeType": "ElementaryTypeName", "src": "1899:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1702, "mutability": "mutable", "name": "tokenId", "nameLocation": "1927:7:8", "nodeType": "VariableDeclaration", "scope": 1707, "src": "1919:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1701, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1919:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1704, "mutability": "mutable", "name": "data", "nameLocation": "1959:4:8", "nodeType": "VariableDeclaration", "scope": 1707, "src": "1944:19:8", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1703, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1944:5:8", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1867:102:8"}, "returnParameters": {"id": 1706, "nodeType": "ParameterList", "parameters": [], "src": "1978:0:8"}, "scope": 1762, "src": "1842:137:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1708, "nodeType": "StructuredDocumentation", "src": "1985:687:8", "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "functionSelector": "42842e0e", "id": 1717, "implemented": false, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "2686:16:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1715, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1710, "mutability": "mutable", "name": "from", "nameLocation": "2720:4:8", "nodeType": "VariableDeclaration", "scope": 1717, "src": "2712:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1709, "name": "address", "nodeType": "ElementaryTypeName", "src": "2712:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1712, "mutability": "mutable", "name": "to", "nameLocation": "2742:2:8", "nodeType": "VariableDeclaration", "scope": 1717, "src": "2734:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1711, "name": "address", "nodeType": "ElementaryTypeName", "src": "2734:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1714, "mutability": "mutable", "name": "tokenId", "nameLocation": "2762:7:8", "nodeType": "VariableDeclaration", "scope": 1717, "src": "2754:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1713, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2754:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2702:73:8"}, "returnParameters": {"id": 1716, "nodeType": "ParameterList", "parameters": [], "src": "2784:0:8"}, "scope": 1762, "src": "2677:108:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1718, "nodeType": "StructuredDocumentation", "src": "2791:504:8", "text": " @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1727, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "3309:12:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1725, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1720, "mutability": "mutable", "name": "from", "nameLocation": "3339:4:8", "nodeType": "VariableDeclaration", "scope": 1727, "src": "3331:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1719, "name": "address", "nodeType": "ElementaryTypeName", "src": "3331:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1722, "mutability": "mutable", "name": "to", "nameLocation": "3361:2:8", "nodeType": "VariableDeclaration", "scope": 1727, "src": "3353:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1721, "name": "address", "nodeType": "ElementaryTypeName", "src": "3353:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1724, "mutability": "mutable", "name": "tokenId", "nameLocation": "3381:7:8", "nodeType": "VariableDeclaration", "scope": 1727, "src": "3373:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1723, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3373:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3321:73:8"}, "returnParameters": {"id": 1726, "nodeType": "ParameterList", "parameters": [], "src": "3403:0:8"}, "scope": 1762, "src": "3300:104:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1728, "nodeType": "StructuredDocumentation", "src": "3410:452:8", "text": " @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1735, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "3876:7:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1733, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1730, "mutability": "mutable", "name": "to", "nameLocation": "3892:2:8", "nodeType": "VariableDeclaration", "scope": 1735, "src": "3884:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1729, "name": "address", "nodeType": "ElementaryTypeName", "src": "3884:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1732, "mutability": "mutable", "name": "tokenId", "nameLocation": "3904:7:8", "nodeType": "VariableDeclaration", "scope": 1735, "src": "3896:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1731, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3896:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3883:29:8"}, "returnParameters": {"id": 1734, "nodeType": "ParameterList", "parameters": [], "src": "3921:0:8"}, "scope": 1762, "src": "3867:55:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1736, "nodeType": "StructuredDocumentation", "src": "3928:309:8", "text": " @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."}, "functionSelector": "a22cb465", "id": 1743, "implemented": false, "kind": "function", "modifiers": [], "name": "setApprovalForAll", "nameLocation": "4251:17:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1741, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1738, "mutability": "mutable", "name": "operator", "nameLocation": "4277:8:8", "nodeType": "VariableDeclaration", "scope": 1743, "src": "4269:16:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1737, "name": "address", "nodeType": "ElementaryTypeName", "src": "4269:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1740, "mutability": "mutable", "name": "_approved", "nameLocation": "4292:9:8", "nodeType": "VariableDeclaration", "scope": 1743, "src": "4287:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1739, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4287:4:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4268:34:8"}, "returnParameters": {"id": 1742, "nodeType": "ParameterList", "parameters": [], "src": "4311:0:8"}, "scope": 1762, "src": "4242:70:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1744, "nodeType": "StructuredDocumentation", "src": "4318:139:8", "text": " @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."}, "functionSelector": "081812fc", "id": 1751, "implemented": false, "kind": "function", "modifiers": [], "name": "getApproved", "nameLocation": "4471:11:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1747, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1746, "mutability": "mutable", "name": "tokenId", "nameLocation": "4491:7:8", "nodeType": "VariableDeclaration", "scope": 1751, "src": "4483:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1745, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4483:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4482:17:8"}, "returnParameters": {"id": 1750, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1749, "mutability": "mutable", "name": "operator", "nameLocation": "4531:8:8", "nodeType": "VariableDeclaration", "scope": 1751, "src": "4523:16:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1748, "name": "address", "nodeType": "ElementaryTypeName", "src": "4523:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4522:18:8"}, "scope": 1762, "src": "4462:79:8", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1752, "nodeType": "StructuredDocumentation", "src": "4547:138:8", "text": " @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"}, "functionSelector": "e985e9c5", "id": 1761, "implemented": false, "kind": "function", "modifiers": [], "name": "isApprovedForAll", "nameLocation": "4699:16:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1757, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1754, "mutability": "mutable", "name": "owner", "nameLocation": "4724:5:8", "nodeType": "VariableDeclaration", "scope": 1761, "src": "4716:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1753, "name": "address", "nodeType": "ElementaryTypeName", "src": "4716:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1756, "mutability": "mutable", "name": "operator", "nameLocation": "4739:8:8", "nodeType": "VariableDeclaration", "scope": 1761, "src": "4731:16:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1755, "name": "address", "nodeType": "ElementaryTypeName", "src": "4731:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4715:33:8"}, "returnParameters": {"id": 1760, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1759, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1761, "src": "4772:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1758, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4772:4:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4771:6:8"}, "scope": 1762, "src": "4690:88:8", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 1763, "src": "261:4519:8", "usedErrors": []}], "src": "108:4673:8"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "ContextUpgradeable": [2219], "ERC165Upgradeable": [2683], "ERC721URIStorageUpgradeable": [1907], "ERC721Upgradeable": [1628], "IERC165Upgradeable": [2695], "IERC721MetadataUpgradeable": [1934], "IERC721ReceiverUpgradeable": [1646], "IERC721Upgradeable": [1762], "Initializable": [282], "StringsUpgradeable": [2445]}, "id": 1908, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1764, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "128:23:9"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", "file": "../ERC721Upgradeable.sol", "id": 1765, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1908, "sourceUnit": 1629, "src": "153:34:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../../../proxy/utils/Initializable.sol", "id": 1766, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1908, "sourceUnit": 283, "src": "188:48:9", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 1768, "name": "Initializable", "nameLocations": ["357:13:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 282, "src": "357:13:9"}, "id": 1769, "nodeType": "InheritanceSpecifier", "src": "357:13:9"}, {"baseName": {"id": 1770, "name": "ERC721Upgradeable", "nameLocations": ["372:17:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1628, "src": "372:17:9"}, "id": 1771, "nodeType": "InheritanceSpecifier", "src": "372:17:9"}], "canonicalName": "ERC721URIStorageUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 1767, "nodeType": "StructuredDocumentation", "src": "238:69:9", "text": " @dev ERC721 token with storage based token URI management."}, "fullyImplemented": true, "id": 1907, "linearizedBaseContracts": [1907, 1628, 1934, 1762, 2683, 2695, 2219, 282], "name": "ERC721URIStorageUpgradeable", "nameLocation": "326:27:9", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1776, "nodeType": "Block", "src": "457:7:9", "statements": []}, "id": 1777, "implemented": true, "kind": "function", "modifiers": [{"id": 1774, "kind": "modifierInvocation", "modifierName": {"id": 1773, "name": "onlyInitializing", "nameLocations": ["440:16:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "440:16:9"}, "nodeType": "ModifierInvocation", "src": "440:16:9"}], "name": "__ERC721URIStorage_init", "nameLocation": "405:23:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1772, "nodeType": "ParameterList", "parameters": [], "src": "428:2:9"}, "returnParameters": {"id": 1775, "nodeType": "ParameterList", "parameters": [], "src": "457:0:9"}, "scope": 1907, "src": "396:68:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1782, "nodeType": "Block", "src": "541:7:9", "statements": []}, "id": 1783, "implemented": true, "kind": "function", "modifiers": [{"id": 1780, "kind": "modifierInvocation", "modifierName": {"id": 1779, "name": "onlyInitializing", "nameLocations": ["524:16:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "524:16:9"}, "nodeType": "ModifierInvocation", "src": "524:16:9"}], "name": "__ERC721URIStorage_init_unchained", "nameLocation": "479:33:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1778, "nodeType": "ParameterList", "parameters": [], "src": "512:2:9"}, "returnParameters": {"id": 1781, "nodeType": "ParameterList", "parameters": [], "src": "541:0:9"}, "scope": 1907, "src": "470:78:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"global": false, "id": 1786, "libraryName": {"id": 1784, "name": "StringsUpgradeable", "nameLocations": ["559:18:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2445, "src": "559:18:9"}, "nodeType": "UsingForDirective", "src": "553:37:9", "typeName": {"id": 1785, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "582:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"constant": false, "id": 1790, "mutability": "mutable", "name": "_tokenURIs", "nameLocation": "670:10:9", "nodeType": "VariableDeclaration", "scope": 1907, "src": "635:45:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string)"}, "typeName": {"id": 1789, "keyType": {"id": 1787, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "643:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "635:26:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string)"}, "valueType": {"id": 1788, "name": "string", "nodeType": "ElementaryTypeName", "src": "654:6:9", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}}, "visibility": "private"}, {"baseFunctions": [961], "body": {"id": 1848, "nodeType": "Block", "src": "835:520:9", "statements": [{"expression": {"arguments": [{"id": 1800, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1793, "src": "860:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1799, "name": "_requireMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1538, "src": "845:14:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view"}}, "id": 1801, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "845:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1802, "nodeType": "ExpressionStatement", "src": "845:23:9"}, {"assignments": [1804], "declarations": [{"constant": false, "id": 1804, "mutability": "mutable", "name": "_tokenURI", "nameLocation": "893:9:9", "nodeType": "VariableDeclaration", "scope": 1848, "src": "879:23:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1803, "name": "string", "nodeType": "ElementaryTypeName", "src": "879:6:9", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 1808, "initialValue": {"baseExpression": {"id": 1805, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1790, "src": "905:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 1807, "indexExpression": {"id": 1806, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1793, "src": "916:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "905:19:9", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "879:45:9"}, {"assignments": [1810], "declarations": [{"constant": false, "id": 1810, "mutability": "mutable", "name": "base", "nameLocation": "948:4:9", "nodeType": "VariableDeclaration", "scope": 1848, "src": "934:18:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1809, "name": "string", "nodeType": "ElementaryTypeName", "src": "934:6:9", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 1813, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 1811, "name": "_baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "955:8:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", "typeString": "function () view returns (string memory)"}}, "id": 1812, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "955:10:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "nodeType": "VariableDeclarationStatement", "src": "934:31:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1820, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 1816, "name": "base", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1810, "src": "1044:4:9", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 1815, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1038:5:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 1814, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1038:5:9", "typeDescriptions": {}}}, "id": 1817, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1038:11:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 1818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1050:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "1038:18:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1819, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1060:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1038:23:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1824, "nodeType": "IfStatement", "src": "1034:70:9", "trueBody": {"id": 1823, "nodeType": "Block", "src": "1063:41:9", "statements": [{"expression": {"id": 1821, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1804, "src": "1084:9:9", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 1798, "id": 1822, "nodeType": "Return", "src": "1077:16:9"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 1827, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1804, "src": "1212:9:9", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 1826, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1206:5:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 1825, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1206:5:9", "typeDescriptions": {}}}, "id": 1828, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1206:16:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 1829, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1223:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "1206:23:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1830, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1232:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1206:27:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1842, "nodeType": "IfStatement", "src": "1202:106:9", "trueBody": {"id": 1841, "nodeType": "Block", "src": "1235:73:9", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 1836, "name": "base", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1810, "src": "1280:4:9", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 1837, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1804, "src": "1286:9:9", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "expression": {"id": 1834, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1263:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 1835, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1267:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1263:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 1838, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1263:33:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 1833, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1256:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 1832, "name": "string", "nodeType": "ElementaryTypeName", "src": "1256:6:9", "typeDescriptions": {}}}, "id": 1839, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1256:41:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 1798, "id": 1840, "nodeType": "Return", "src": "1249:48:9"}]}}, {"expression": {"arguments": [{"id": 1845, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1793, "src": "1340:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1843, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "1325:5:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_ERC721URIStorageUpgradeable_$1907_$", "typeString": "type(contract super ERC721URIStorageUpgradeable)"}}, "id": 1844, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1331:8:9", "memberName": "tokenURI", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "1325:14:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) view returns (string memory)"}}, "id": 1846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1325:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 1798, "id": 1847, "nodeType": "Return", "src": "1318:30:9"}]}, "documentation": {"id": 1791, "nodeType": "StructuredDocumentation", "src": "687:55:9", "text": " @dev See {IERC721Metadata-tokenURI}."}, "functionSelector": "c87b56dd", "id": 1849, "implemented": true, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "756:8:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1795, "nodeType": "OverrideSpecifier", "overrides": [], "src": "802:8:9"}, "parameters": {"id": 1794, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1793, "mutability": "mutable", "name": "tokenId", "nameLocation": "773:7:9", "nodeType": "VariableDeclaration", "scope": 1849, "src": "765:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1792, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "765:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "764:17:9"}, "returnParameters": {"id": 1798, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1797, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1849, "src": "820:13:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1796, "name": "string", "nodeType": "ElementaryTypeName", "src": "820:6:9", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "819:15:9"}, "scope": 1907, "src": "747:608:9", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 1870, "nodeType": "Block", "src": "1583:133:9", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 1859, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1852, "src": "1609:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1858, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1189, "src": "1601:7:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)"}}, "id": 1860, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1601:16:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524337323155524953746f726167653a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e", "id": 1861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1619:48:9", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7521de1f20ce4d7bb86b61090bad73a87315a1f4baff36cc352901c7777280c4", "typeString": "literal_string \"ERC721URIStorage: URI set of nonexistent token\""}, "value": "ERC721URIStorage: URI set of nonexistent token"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7521de1f20ce4d7bb86b61090bad73a87315a1f4baff36cc352901c7777280c4", "typeString": "literal_string \"ERC721URIStorage: URI set of nonexistent token\""}], "id": 1857, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1593:7:9", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1862, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1593:75:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1863, "nodeType": "ExpressionStatement", "src": "1593:75:9"}, {"expression": {"id": 1868, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1864, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1790, "src": "1678:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 1866, "indexExpression": {"id": 1865, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1852, "src": "1689:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1678:19:9", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1867, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1854, "src": "1700:9:9", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1678:31:9", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 1869, "nodeType": "ExpressionStatement", "src": "1678:31:9"}]}, "documentation": {"id": 1850, "nodeType": "StructuredDocumentation", "src": "1361:136:9", "text": " @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Requirements:\n - `tokenId` must exist."}, "id": 1871, "implemented": true, "kind": "function", "modifiers": [], "name": "_setTokenURI", "nameLocation": "1511:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1855, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1852, "mutability": "mutable", "name": "tokenId", "nameLocation": "1532:7:9", "nodeType": "VariableDeclaration", "scope": 1871, "src": "1524:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1851, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1524:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1854, "mutability": "mutable", "name": "_tokenURI", "nameLocation": "1555:9:9", "nodeType": "VariableDeclaration", "scope": 1871, "src": "1541:23:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1853, "name": "string", "nodeType": "ElementaryTypeName", "src": "1541:6:9", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1523:42:9"}, "returnParameters": {"id": 1856, "nodeType": "ParameterList", "parameters": [], "src": "1583:0:9"}, "scope": 1907, "src": "1502:214:9", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"baseFunctions": [1393], "body": {"id": 1900, "nodeType": "Block", "src": "1992:142:9", "statements": [{"expression": {"arguments": [{"id": 1881, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1874, "src": "2014:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1878, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "2002:5:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_ERC721URIStorageUpgradeable_$1907_$", "typeString": "type(contract super ERC721URIStorageUpgradeable)"}}, "id": 1880, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2008:5:9", "memberName": "_burn", "nodeType": "MemberAccess", "referencedDeclaration": 1393, "src": "2002:11:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 1882, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2002:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1883, "nodeType": "ExpressionStatement", "src": "2002:20:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1892, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"baseExpression": {"id": 1886, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1790, "src": "2043:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 1888, "indexExpression": {"id": 1887, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1874, "src": "2054:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2043:19:9", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}], "id": 1885, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2037:5:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 1884, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2037:5:9", "typeDescriptions": {}}}, "id": 1889, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2037:26:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes storage pointer"}}, "id": 1890, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2064:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "2037:33:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1891, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2074:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2037:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1899, "nodeType": "IfStatement", "src": "2033:95:9", "trueBody": {"id": 1898, "nodeType": "Block", "src": "2077:51:9", "statements": [{"expression": {"id": 1896, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "2091:26:9", "subExpression": {"baseExpression": {"id": 1893, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1790, "src": "2098:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 1895, "indexExpression": {"id": 1894, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1874, "src": "2109:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2098:19:9", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1897, "nodeType": "ExpressionStatement", "src": "2091:26:9"}]}}]}, "documentation": {"id": 1872, "nodeType": "StructuredDocumentation", "src": "1722:207:9", "text": " @dev See {ERC721-_burn}. This override additionally checks to see if a\n token-specific URI was set for the token, and if so, it deletes the token URI from\n the storage mapping."}, "id": 1901, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "1943:5:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1876, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1983:8:9"}, "parameters": {"id": 1875, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1874, "mutability": "mutable", "name": "tokenId", "nameLocation": "1957:7:9", "nodeType": "VariableDeclaration", "scope": 1901, "src": "1949:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1873, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1949:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1948:17:9"}, "returnParameters": {"id": 1877, "nodeType": "ParameterList", "parameters": [], "src": "1992:0:9"}, "scope": 1907, "src": "1934:200:9", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 1902, "nodeType": "StructuredDocumentation", "src": "2140:254:9", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 1906, "mutability": "mutable", "name": "__gap", "nameLocation": "2419:5:9", "nodeType": "VariableDeclaration", "scope": 1907, "src": "2399:25:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage", "typeString": "uint256[49]"}, "typeName": {"baseType": {"id": 1903, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2399:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1905, "length": {"hexValue": "3439", "id": 1904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2407:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_49_by_1", "typeString": "int_const 49"}, "value": "49"}, "nodeType": "ArrayTypeName", "src": "2399:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage_ptr", "typeString": "uint256[49]"}}, "visibility": "private"}], "scope": 1908, "src": "308:2119:9", "usedErrors": []}], "src": "128:2300:9"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol", "exportedSymbols": {"IERC165Upgradeable": [2695], "IERC721MetadataUpgradeable": [1934], "IERC721Upgradeable": [1762]}, "id": 1935, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1909, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "112:23:10"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol", "file": "../IERC721Upgradeable.sol", "id": 1910, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1935, "sourceUnit": 1763, "src": "137:35:10", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1912, "name": "IERC721Upgradeable", "nameLocations": ["348:18:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1762, "src": "348:18:10"}, "id": 1913, "nodeType": "InheritanceSpecifier", "src": "348:18:10"}], "canonicalName": "IERC721MetadataUpgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1911, "nodeType": "StructuredDocumentation", "src": "174:133:10", "text": " @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"}, "fullyImplemented": false, "id": 1934, "linearizedBaseContracts": [1934, 1762, 2695], "name": "IERC721MetadataUpgradeable", "nameLocation": "318:26:10", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1914, "nodeType": "StructuredDocumentation", "src": "373:58:10", "text": " @dev Returns the token collection name."}, "functionSelector": "06fdde03", "id": 1919, "implemented": false, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "445:4:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1915, "nodeType": "ParameterList", "parameters": [], "src": "449:2:10"}, "returnParameters": {"id": 1918, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1917, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1919, "src": "475:13:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1916, "name": "string", "nodeType": "ElementaryTypeName", "src": "475:6:10", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "474:15:10"}, "scope": 1934, "src": "436:54:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1920, "nodeType": "StructuredDocumentation", "src": "496:60:10", "text": " @dev Returns the token collection symbol."}, "functionSelector": "95d89b41", "id": 1925, "implemented": false, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "570:6:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1921, "nodeType": "ParameterList", "parameters": [], "src": "576:2:10"}, "returnParameters": {"id": 1924, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1923, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1925, "src": "602:13:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1922, "name": "string", "nodeType": "ElementaryTypeName", "src": "602:6:10", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "601:15:10"}, "scope": 1934, "src": "561:56:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1926, "nodeType": "StructuredDocumentation", "src": "623:90:10", "text": " @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."}, "functionSelector": "c87b56dd", "id": 1933, "implemented": false, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "727:8:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1929, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1928, "mutability": "mutable", "name": "tokenId", "nameLocation": "744:7:10", "nodeType": "VariableDeclaration", "scope": 1933, "src": "736:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1927, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "736:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "735:17:10"}, "returnParameters": {"id": 1932, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1931, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1933, "src": "776:13:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1930, "name": "string", "nodeType": "ElementaryTypeName", "src": "776:6:10", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "775:15:10"}, "scope": 1934, "src": "718:73:10", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 1935, "src": "308:485:10", "usedErrors": []}], "src": "112:682:10"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177]}, "id": 2178, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1936, "literals": ["solidity", "^", "0.8", ".1"], "nodeType": "PragmaDirective", "src": "101:23:11"}, {"abstract": false, "baseContracts": [], "canonicalName": "AddressUpgradeable", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1937, "nodeType": "StructuredDocumentation", "src": "126:67:11", "text": " @dev Collection of functions related to the address type"}, "fullyImplemented": true, "id": 2177, "linearizedBaseContracts": [2177], "name": "AddressUpgradeable", "nameLocation": "202:18:11", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1951, "nodeType": "Block", "src": "1252:254:11", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1949, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1945, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1940, "src": "1476:7:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1946, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1484:4:11", "memberName": "code", "nodeType": "MemberAccess", "src": "1476:12:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 1947, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1489:6:11", "memberName": "length", "nodeType": "MemberAccess", "src": "1476:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1948, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1498:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1476:23:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1944, "id": 1950, "nodeType": "Return", "src": "1469:30:11"}]}, "documentation": {"id": 1938, "nodeType": "StructuredDocumentation", "src": "227:954:11", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="}, "id": 1952, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1195:10:11", "nodeType": "FunctionDefinition", "parameters": {"id": 1941, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1940, "mutability": "mutable", "name": "account", "nameLocation": "1214:7:11", "nodeType": "VariableDeclaration", "scope": 1952, "src": "1206:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1939, "name": "address", "nodeType": "ElementaryTypeName", "src": "1206:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1205:17:11"}, "returnParameters": {"id": 1944, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1943, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1952, "src": "1246:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1942, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1246:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1245:6:11"}, "scope": 2177, "src": "1186:320:11", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1985, "nodeType": "Block", "src": "2494:241:11", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 1963, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2520:4:11", "typeDescriptions": {"typeIdentifier": "t_contract$_AddressUpgradeable_$2177", "typeString": "library AddressUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_AddressUpgradeable_$2177", "typeString": "library AddressUpgradeable"}], "id": 1962, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2512:7:11", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1961, "name": "address", "nodeType": "ElementaryTypeName", "src": "2512:7:11", "typeDescriptions": {}}}, "id": 1964, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2512:13:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1965, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2526:7:11", "memberName": "balance", "nodeType": "MemberAccess", "src": "2512:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 1966, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1957, "src": "2537:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2512:31:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", "id": 1968, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2545:31:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", "typeString": "literal_string \"Address: insufficient balance\""}, "value": "Address: insufficient balance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", "typeString": "literal_string \"Address: insufficient balance\""}], "id": 1960, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2504:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1969, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2504:73:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1970, "nodeType": "ExpressionStatement", "src": "2504:73:11"}, {"assignments": [1972, null], "declarations": [{"constant": false, "id": 1972, "mutability": "mutable", "name": "success", "nameLocation": "2594:7:11", "nodeType": "VariableDeclaration", "scope": 1985, "src": "2589:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1971, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2589:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, null], "id": 1979, "initialValue": {"arguments": [{"hexValue": "", "id": 1977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2637:2:11", "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": 1973, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1955, "src": "2607:9:11", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "id": 1974, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2617:4:11", "memberName": "call", "nodeType": "MemberAccess", "src": "2607:14:11", "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": 1976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{"id": 1975, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1957, "src": "2629:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "src": "2607:29:11", "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": 1978, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2607:33:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "2588:52:11"}, {"expression": {"arguments": [{"id": 1981, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1972, "src": "2658:7:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", "id": 1982, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2667:60:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""}, "value": "Address: unable to send value, recipient may have reverted"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""}], "id": 1980, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2650:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1983, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2650:78:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1984, "nodeType": "ExpressionStatement", "src": "2650:78:11"}]}, "documentation": {"id": 1953, "nodeType": "StructuredDocumentation", "src": "1512:906:11", "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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."}, "id": 1986, "implemented": true, "kind": "function", "modifiers": [], "name": "sendValue", "nameLocation": "2432:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 1958, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1955, "mutability": "mutable", "name": "recipient", "nameLocation": "2458:9:11", "nodeType": "VariableDeclaration", "scope": 1986, "src": "2442:25:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}, "typeName": {"id": 1954, "name": "address", "nodeType": "ElementaryTypeName", "src": "2442:15:11", "stateMutability": "payable", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "visibility": "internal"}, {"constant": false, "id": 1957, "mutability": "mutable", "name": "amount", "nameLocation": "2477:6:11", "nodeType": "VariableDeclaration", "scope": 1986, "src": "2469:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1956, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2469:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2441:43:11"}, "returnParameters": {"id": 1959, "nodeType": "ParameterList", "parameters": [], "src": "2494:0:11"}, "scope": 2177, "src": "2423:312:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2002, "nodeType": "Block", "src": "3566:84:11", "statements": [{"expression": {"arguments": [{"id": 1997, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1989, "src": "3596:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1998, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1991, "src": "3604:4:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", "id": 1999, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3610:32:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", "typeString": "literal_string \"Address: low-level call failed\""}, "value": "Address: low-level call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", "typeString": "literal_string \"Address: low-level call failed\""}], "id": 1996, "name": "functionCall", "nodeType": "Identifier", "overloadedDeclarations": [2003, 2023], "referencedDeclaration": 2023, "src": "3583:12:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"}}, "id": 2000, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3583:60:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 1995, "id": 2001, "nodeType": "Return", "src": "3576:67:11"}]}, "documentation": {"id": 1987, "nodeType": "StructuredDocumentation", "src": "2741:731:11", "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, it is bubbled up by this\n function (like regular Solidity function calls).\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.\n _Available since v3.1._"}, "id": 2003, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCall", "nameLocation": "3486:12:11", "nodeType": "FunctionDefinition", "parameters": {"id": 1992, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1989, "mutability": "mutable", "name": "target", "nameLocation": "3507:6:11", "nodeType": "VariableDeclaration", "scope": 2003, "src": "3499:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1988, "name": "address", "nodeType": "ElementaryTypeName", "src": "3499:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1991, "mutability": "mutable", "name": "data", "nameLocation": "3528:4:11", "nodeType": "VariableDeclaration", "scope": 2003, "src": "3515:17:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1990, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3515:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3498:35:11"}, "returnParameters": {"id": 1995, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1994, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2003, "src": "3552:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1993, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3552:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3551:14:11"}, "scope": 2177, "src": "3477:173:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2022, "nodeType": "Block", "src": "4019:76:11", "statements": [{"expression": {"arguments": [{"id": 2016, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2006, "src": "4058:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2017, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2008, "src": "4066:4:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "30", "id": 2018, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4072:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"id": 2019, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2010, "src": "4075:12:11", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "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"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 2015, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [2043, 2093], "referencedDeclaration": 2093, "src": "4036:21:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 2020, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4036:52:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2014, "id": 2021, "nodeType": "Return", "src": "4029:59:11"}]}, "documentation": {"id": 2004, "nodeType": "StructuredDocumentation", "src": "3656:211:11", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"}, "id": 2023, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCall", "nameLocation": "3881:12:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2011, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2006, "mutability": "mutable", "name": "target", "nameLocation": "3911:6:11", "nodeType": "VariableDeclaration", "scope": 2023, "src": "3903:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2005, "name": "address", "nodeType": "ElementaryTypeName", "src": "3903:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2008, "mutability": "mutable", "name": "data", "nameLocation": "3940:4:11", "nodeType": "VariableDeclaration", "scope": 2023, "src": "3927:17:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2007, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3927:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2010, "mutability": "mutable", "name": "errorMessage", "nameLocation": "3968:12:11", "nodeType": "VariableDeclaration", "scope": 2023, "src": "3954:26:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2009, "name": "string", "nodeType": "ElementaryTypeName", "src": "3954:6:11", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3893:93:11"}, "returnParameters": {"id": 2014, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2013, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2023, "src": "4005:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2012, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4005:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "4004:14:11"}, "scope": 2177, "src": "3872:223:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2042, "nodeType": "Block", "src": "4600:111:11", "statements": [{"expression": {"arguments": [{"id": 2036, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2026, "src": "4639:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2037, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2028, "src": "4647:4:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 2038, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2030, "src": "4653:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", "id": 2039, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4660:43:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", "typeString": "literal_string \"Address: low-level call with value failed\""}, "value": "Address: low-level call with value failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", "typeString": "literal_string \"Address: low-level call with value failed\""}], "id": 2035, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [2043, 2093], "referencedDeclaration": 2093, "src": "4617:21:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 2040, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4617:87:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2034, "id": 2041, "nodeType": "Return", "src": "4610:94:11"}]}, "documentation": {"id": 2024, "nodeType": "StructuredDocumentation", "src": "4101:351:11", "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`.\n _Available since v3.1._"}, "id": 2043, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCallWithValue", "nameLocation": "4466:21:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2031, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2026, "mutability": "mutable", "name": "target", "nameLocation": "4505:6:11", "nodeType": "VariableDeclaration", "scope": 2043, "src": "4497:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2025, "name": "address", "nodeType": "ElementaryTypeName", "src": "4497:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2028, "mutability": "mutable", "name": "data", "nameLocation": "4534:4:11", "nodeType": "VariableDeclaration", "scope": 2043, "src": "4521:17:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2027, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4521:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2030, "mutability": "mutable", "name": "value", "nameLocation": "4556:5:11", "nodeType": "VariableDeclaration", "scope": 2043, "src": "4548:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2029, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4548:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4487:80:11"}, "returnParameters": {"id": 2034, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2033, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2043, "src": "4586:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2032, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4586:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "4585:14:11"}, "scope": 2177, "src": "4457:254:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2092, "nodeType": "Block", "src": "5138:320:11", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2064, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 2060, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "5164:4:11", "typeDescriptions": {"typeIdentifier": "t_contract$_AddressUpgradeable_$2177", "typeString": "library AddressUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_AddressUpgradeable_$2177", "typeString": "library AddressUpgradeable"}], "id": 2059, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5156:7:11", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2058, "name": "address", "nodeType": "ElementaryTypeName", "src": "5156:7:11", "typeDescriptions": {}}}, "id": 2061, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5156:13:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5170:7:11", "memberName": "balance", "nodeType": "MemberAccess", "src": "5156:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 2063, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2050, "src": "5181:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5156:30:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", "id": 2065, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5188:40:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", "typeString": "literal_string \"Address: insufficient balance for call\""}, "value": "Address: insufficient balance for call"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", "typeString": "literal_string \"Address: insufficient balance for call\""}], "id": 2057, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5148:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2066, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5148:81:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2067, "nodeType": "ExpressionStatement", "src": "5148:81:11"}, {"expression": {"arguments": [{"arguments": [{"id": 2070, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2046, "src": "5258:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2069, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1952, "src": "5247:10:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2071, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5247:18:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", "id": 2072, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5267:31:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", "typeString": "literal_string \"Address: call to non-contract\""}, "value": "Address: call to non-contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", "typeString": "literal_string \"Address: call to non-contract\""}], "id": 2068, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5239:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2073, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5239:60:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2074, "nodeType": "ExpressionStatement", "src": "5239:60:11"}, {"assignments": [2076, 2078], "declarations": [{"constant": false, "id": 2076, "mutability": "mutable", "name": "success", "nameLocation": "5316:7:11", "nodeType": "VariableDeclaration", "scope": 2092, "src": "5311:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2075, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5311:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2078, "mutability": "mutable", "name": "returndata", "nameLocation": "5338:10:11", "nodeType": "VariableDeclaration", "scope": 2092, "src": "5325:23:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2077, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5325:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 2085, "initialValue": {"arguments": [{"id": 2083, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2048, "src": "5378:4:11", "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": 2079, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2046, "src": "5352:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5359:4:11", "memberName": "call", "nodeType": "MemberAccess", "src": "5352:11:11", "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": 2082, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{"id": 2081, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2050, "src": "5371:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "src": "5352:25:11", "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": 2084, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5352:31:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "5310:73:11"}, {"expression": {"arguments": [{"id": 2087, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2076, "src": "5417:7:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 2088, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2078, "src": "5426:10:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 2089, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "5438:12:11", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 2086, "name": "verifyCallResult", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2176, "src": "5400:16:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"}}, "id": 2090, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5400:51:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2056, "id": 2091, "nodeType": "Return", "src": "5393:58:11"}]}, "documentation": {"id": 2044, "nodeType": "StructuredDocumentation", "src": "4717:237:11", "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"}, "id": 2093, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCallWithValue", "nameLocation": "4968:21:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2053, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2046, "mutability": "mutable", "name": "target", "nameLocation": "5007:6:11", "nodeType": "VariableDeclaration", "scope": 2093, "src": "4999:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2045, "name": "address", "nodeType": "ElementaryTypeName", "src": "4999:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2048, "mutability": "mutable", "name": "data", "nameLocation": "5036:4:11", "nodeType": "VariableDeclaration", "scope": 2093, "src": "5023:17:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2047, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5023:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2050, "mutability": "mutable", "name": "value", "nameLocation": "5058:5:11", "nodeType": "VariableDeclaration", "scope": 2093, "src": "5050:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2049, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5050:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2052, "mutability": "mutable", "name": "errorMessage", "nameLocation": "5087:12:11", "nodeType": "VariableDeclaration", "scope": 2093, "src": "5073:26:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2051, "name": "string", "nodeType": "ElementaryTypeName", "src": "5073:6:11", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "4989:116:11"}, "returnParameters": {"id": 2056, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2055, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2093, "src": "5124:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2054, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5124:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5123:14:11"}, "scope": 2177, "src": "4959:499:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2109, "nodeType": "Block", "src": "5735:97:11", "statements": [{"expression": {"arguments": [{"id": 2104, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2096, "src": "5771:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2105, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2098, "src": "5779:4:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", "id": 2106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5785:39:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", "typeString": "literal_string \"Address: low-level static call failed\""}, "value": "Address: low-level static call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", "typeString": "literal_string \"Address: low-level static call failed\""}], "id": 2103, "name": "functionStaticCall", "nodeType": "Identifier", "overloadedDeclarations": [2110, 2145], "referencedDeclaration": 2145, "src": "5752:18:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"}}, "id": 2107, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5752:73:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2102, "id": 2108, "nodeType": "Return", "src": "5745:80:11"}]}, "documentation": {"id": 2094, "nodeType": "StructuredDocumentation", "src": "5464:166:11", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"}, "id": 2110, "implemented": true, "kind": "function", "modifiers": [], "name": "functionStaticCall", "nameLocation": "5644:18:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2099, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2096, "mutability": "mutable", "name": "target", "nameLocation": "5671:6:11", "nodeType": "VariableDeclaration", "scope": 2110, "src": "5663:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2095, "name": "address", "nodeType": "ElementaryTypeName", "src": "5663:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2098, "mutability": "mutable", "name": "data", "nameLocation": "5692:4:11", "nodeType": "VariableDeclaration", "scope": 2110, "src": "5679:17:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2097, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5679:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5662:35:11"}, "returnParameters": {"id": 2102, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2101, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2110, "src": "5721:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2100, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5721:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5720:14:11"}, "scope": 2177, "src": "5635:197:11", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2144, "nodeType": "Block", "src": "6174:228:11", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 2124, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2113, "src": "6203:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2123, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1952, "src": "6192:10:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2125, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6192:18:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", "id": 2126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6212:38:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", "typeString": "literal_string \"Address: static call to non-contract\""}, "value": "Address: static call to non-contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", "typeString": "literal_string \"Address: static call to non-contract\""}], "id": 2122, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6184:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2127, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6184:67:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2128, "nodeType": "ExpressionStatement", "src": "6184:67:11"}, {"assignments": [2130, 2132], "declarations": [{"constant": false, "id": 2130, "mutability": "mutable", "name": "success", "nameLocation": "6268:7:11", "nodeType": "VariableDeclaration", "scope": 2144, "src": "6263:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2129, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6263:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2132, "mutability": "mutable", "name": "returndata", "nameLocation": "6290:10:11", "nodeType": "VariableDeclaration", "scope": 2144, "src": "6277:23:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2131, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6277:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 2137, "initialValue": {"arguments": [{"id": 2135, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2115, "src": "6322:4:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 2133, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2113, "src": "6304:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2134, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6311:10:11", "memberName": "staticcall", "nodeType": "MemberAccess", "src": "6304:17:11", "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": 2136, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6304:23:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "6262:65:11"}, {"expression": {"arguments": [{"id": 2139, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2130, "src": "6361:7:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 2140, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2132, "src": "6370:10:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 2141, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2117, "src": "6382:12:11", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 2138, "name": "verifyCallResult", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2176, "src": "6344:16:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"}}, "id": 2142, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6344:51:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2121, "id": 2143, "nodeType": "Return", "src": "6337:58:11"}]}, "documentation": {"id": 2111, "nodeType": "StructuredDocumentation", "src": "5838:173:11", "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"}, "id": 2145, "implemented": true, "kind": "function", "modifiers": [], "name": "functionStaticCall", "nameLocation": "6025:18:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2118, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2113, "mutability": "mutable", "name": "target", "nameLocation": "6061:6:11", "nodeType": "VariableDeclaration", "scope": 2145, "src": "6053:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2112, "name": "address", "nodeType": "ElementaryTypeName", "src": "6053:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2115, "mutability": "mutable", "name": "data", "nameLocation": "6090:4:11", "nodeType": "VariableDeclaration", "scope": 2145, "src": "6077:17:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2114, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6077:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2117, "mutability": "mutable", "name": "errorMessage", "nameLocation": "6118:12:11", "nodeType": "VariableDeclaration", "scope": 2145, "src": "6104:26:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2116, "name": "string", "nodeType": "ElementaryTypeName", "src": "6104:6:11", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "6043:93:11"}, "returnParameters": {"id": 2121, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2120, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2145, "src": "6160:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2119, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6160:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6159:14:11"}, "scope": 2177, "src": "6016:386:11", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2175, "nodeType": "Block", "src": "6782:582:11", "statements": [{"condition": {"id": 2157, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "6796:7:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 2173, "nodeType": "Block", "src": "6853:505:11", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2161, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2150, "src": "6937:10:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6948:6:11", "memberName": "length", "nodeType": "MemberAccess", "src": "6937:17:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2163, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6957:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6937:21:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 2171, "nodeType": "Block", "src": "7295:53:11", "statements": [{"expression": {"arguments": [{"id": 2168, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2152, "src": "7320:12:11", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 2167, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "7313:6:11", "typeDescriptions": {"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure"}}, "id": 2169, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7313:20:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2170, "nodeType": "ExpressionStatement", "src": "7313:20:11"}]}, "id": 2172, "nodeType": "IfStatement", "src": "6933:415:11", "trueBody": {"id": 2166, "nodeType": "Block", "src": "6960:329:11", "statements": [{"AST": {"nodeType": "YulBlock", "src": "7130:145:11", "statements": [{"nodeType": "YulVariableDeclaration", "src": "7152:40:11", "value": {"arguments": [{"name": "returndata", "nodeType": "YulIdentifier", "src": "7181:10:11"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "7175:5:11"}, "nodeType": "YulFunctionCall", "src": "7175:17:11"}, "variables": [{"name": "returndata_size", "nodeType": "YulTypedName", "src": "7156:15:11", "type": ""}]}, {"expression": {"arguments": [{"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "7224:2:11", "type": "", "value": "32"}, {"name": "returndata", "nodeType": "YulIdentifier", "src": "7228:10:11"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "7220:3:11"}, "nodeType": "YulFunctionCall", "src": "7220:19:11"}, {"name": "returndata_size", "nodeType": "YulIdentifier", "src": "7241:15:11"}], "functionName": {"name": "revert", "nodeType": "YulIdentifier", "src": "7213:6:11"}, "nodeType": "YulFunctionCall", "src": "7213:44:11"}, "nodeType": "YulExpressionStatement", "src": "7213:44:11"}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 2150, "isOffset": false, "isSlot": false, "src": "7181:10:11", "valueSize": 1}, {"declaration": 2150, "isOffset": false, "isSlot": false, "src": "7228:10:11", "valueSize": 1}], "id": 2165, "nodeType": "InlineAssembly", "src": "7121:154:11"}]}}]}, "id": 2174, "nodeType": "IfStatement", "src": "6792:566:11", "trueBody": {"id": 2160, "nodeType": "Block", "src": "6805:42:11", "statements": [{"expression": {"id": 2158, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2150, "src": "6826:10:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2156, "id": 2159, "nodeType": "Return", "src": "6819:17:11"}]}}]}, "documentation": {"id": 2146, "nodeType": "StructuredDocumentation", "src": "6408:209:11", "text": " @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"}, "id": 2176, "implemented": true, "kind": "function", "modifiers": [], "name": "verifyCallResult", "nameLocation": "6631:16:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2153, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2148, "mutability": "mutable", "name": "success", "nameLocation": "6662:7:11", "nodeType": "VariableDeclaration", "scope": 2176, "src": "6657:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2147, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6657:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2150, "mutability": "mutable", "name": "returndata", "nameLocation": "6692:10:11", "nodeType": "VariableDeclaration", "scope": 2176, "src": "6679:23:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2149, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6679:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2152, "mutability": "mutable", "name": "errorMessage", "nameLocation": "6726:12:11", "nodeType": "VariableDeclaration", "scope": 2176, "src": "6712:26:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2151, "name": "string", "nodeType": "ElementaryTypeName", "src": "6712:6:11", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "6647:97:11"}, "returnParameters": {"id": 2156, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2155, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2176, "src": "6768:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2154, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6768:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6767:14:11"}, "scope": 2177, "src": "6622:742:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2178, "src": "194:7172:11", "usedErrors": []}], "src": "101:7266:11"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "ContextUpgradeable": [2219], "Initializable": [282]}, "id": 2220, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2179, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "86:23:12"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../proxy/utils/Initializable.sol", "id": 2180, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2220, "sourceUnit": 283, "src": "110:42:12", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 2182, "name": "Initializable", "nameLocations": ["691:13:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 282, "src": "691:13:12"}, "id": 2183, "nodeType": "InheritanceSpecifier", "src": "691:13:12"}], "canonicalName": "ContextUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2181, "nodeType": "StructuredDocumentation", "src": "154:496:12", "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": 2219, "linearizedBaseContracts": [2219, 282], "name": "ContextUpgradeable", "nameLocation": "669:18:12", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2188, "nodeType": "Block", "src": "763:7:12", "statements": []}, "id": 2189, "implemented": true, "kind": "function", "modifiers": [{"id": 2186, "kind": "modifierInvocation", "modifierName": {"id": 2185, "name": "onlyInitializing", "nameLocations": ["746:16:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "746:16:12"}, "nodeType": "ModifierInvocation", "src": "746:16:12"}], "name": "__Context_init", "nameLocation": "720:14:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2184, "nodeType": "ParameterList", "parameters": [], "src": "734:2:12"}, "returnParameters": {"id": 2187, "nodeType": "ParameterList", "parameters": [], "src": "763:0:12"}, "scope": 2219, "src": "711:59:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2194, "nodeType": "Block", "src": "838:7:12", "statements": []}, "id": 2195, "implemented": true, "kind": "function", "modifiers": [{"id": 2192, "kind": "modifierInvocation", "modifierName": {"id": 2191, "name": "onlyInitializing", "nameLocations": ["821:16:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "821:16:12"}, "nodeType": "ModifierInvocation", "src": "821:16:12"}], "name": "__Context_init_unchained", "nameLocation": "785:24:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2190, "nodeType": "ParameterList", "parameters": [], "src": "809:2:12"}, "returnParameters": {"id": 2193, "nodeType": "ParameterList", "parameters": [], "src": "838:0:12"}, "scope": 2219, "src": "776:69:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2203, "nodeType": "Block", "src": "912:34:12", "statements": [{"expression": {"expression": {"id": 2200, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "929:3:12", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "933:6:12", "memberName": "sender", "nodeType": "MemberAccess", "src": "929:10:12", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2199, "id": 2202, "nodeType": "Return", "src": "922:17:12"}]}, "id": 2204, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgSender", "nameLocation": "859:10:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2196, "nodeType": "ParameterList", "parameters": [], "src": "869:2:12"}, "returnParameters": {"id": 2199, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2198, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2204, "src": "903:7:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2197, "name": "address", "nodeType": "ElementaryTypeName", "src": "903:7:12", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "902:9:12"}, "scope": 2219, "src": "850:96:12", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 2212, "nodeType": "Block", "src": "1019:32:12", "statements": [{"expression": {"expression": {"id": 2209, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1036:3:12", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1040:4:12", "memberName": "data", "nodeType": "MemberAccess", "src": "1036:8:12", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "functionReturnParameters": 2208, "id": 2211, "nodeType": "Return", "src": "1029:15:12"}]}, "id": 2213, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgData", "nameLocation": "961:8:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2205, "nodeType": "ParameterList", "parameters": [], "src": "969:2:12"}, "returnParameters": {"id": 2208, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2207, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2213, "src": "1003:14:12", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 2206, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1003:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1002:16:12"}, "scope": 2219, "src": "952:99:12", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 2214, "nodeType": "StructuredDocumentation", "src": "1057:254:12", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 2218, "mutability": "mutable", "name": "__gap", "nameLocation": "1336:5:12", "nodeType": "VariableDeclaration", "scope": 2219, "src": "1316:25:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage", "typeString": "uint256[50]"}, "typeName": {"baseType": {"id": 2215, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1316:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2217, "length": {"hexValue": "3530", "id": 2216, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1324:2:12", "typeDescriptions": {"typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50"}, "value": "50"}, "nodeType": "ArrayTypeName", "src": "1316:11:12", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", "typeString": "uint256[50]"}}, "visibility": "private"}], "scope": 2220, "src": "651:693:12", "usedErrors": []}], "src": "86:1259:12"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol", "exportedSymbols": {"StringsUpgradeable": [2445]}, "id": 2446, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2221, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "101:23:13"}, {"abstract": false, "baseContracts": [], "canonicalName": "StringsUpgradeable", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2222, "nodeType": "StructuredDocumentation", "src": "126:34:13", "text": " @dev String operations."}, "fullyImplemented": true, "id": 2445, "linearizedBaseContracts": [2445], "name": "StringsUpgradeable", "nameLocation": "169:18:13", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2225, "mutability": "constant", "name": "_HEX_SYMBOLS", "nameLocation": "219:12:13", "nodeType": "VariableDeclaration", "scope": 2445, "src": "194:58:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}, "typeName": {"id": 2223, "name": "bytes16", "nodeType": "ElementaryTypeName", "src": "194:7:13", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}}, "value": {"hexValue": "30313233343536373839616263646566", "id": 2224, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "234:18:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f", "typeString": "literal_string \"0123456789abcdef\""}, "value": "0123456789abcdef"}, "visibility": "private"}, {"constant": true, "id": 2228, "mutability": "constant", "name": "_ADDRESS_LENGTH", "nameLocation": "281:15:13", "nodeType": "VariableDeclaration", "scope": 2445, "src": "258:43:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2226, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "258:5:13", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": {"hexValue": "3230", "id": 2227, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "299:2:13", "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "visibility": "private"}, {"body": {"id": 2306, "nodeType": "Block", "src": "474:632:13", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2236, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2231, "src": "676:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2237, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "685:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "676:10:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2242, "nodeType": "IfStatement", "src": "672:51:13", "trueBody": {"id": 2241, "nodeType": "Block", "src": "688:35:13", "statements": [{"expression": {"hexValue": "30", "id": 2239, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "709:3:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\""}, "value": "0"}, "functionReturnParameters": 2235, "id": 2240, "nodeType": "Return", "src": "702:10:13"}]}}, {"assignments": [2244], "declarations": [{"constant": false, "id": 2244, "mutability": "mutable", "name": "temp", "nameLocation": "740:4:13", "nodeType": "VariableDeclaration", "scope": 2306, "src": "732:12:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2243, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "732:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2246, "initialValue": {"id": 2245, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2231, "src": "747:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "732:20:13"}, {"assignments": [2248], "declarations": [{"constant": false, "id": 2248, "mutability": "mutable", "name": "digits", "nameLocation": "770:6:13", "nodeType": "VariableDeclaration", "scope": 2306, "src": "762:14:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2247, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "762:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2249, "nodeType": "VariableDeclarationStatement", "src": "762:14:13"}, {"body": {"id": 2260, "nodeType": "Block", "src": "804:57:13", "statements": [{"expression": {"id": 2254, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "818:8:13", "subExpression": {"id": 2253, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2248, "src": "818:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2255, "nodeType": "ExpressionStatement", "src": "818:8:13"}, {"expression": {"id": 2258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2256, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2244, "src": "840:4:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"hexValue": "3130", "id": 2257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "848:2:13", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "840:10:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2259, "nodeType": "ExpressionStatement", "src": "840:10:13"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2250, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2244, "src": "793:4:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2251, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "801:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "793:9:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2261, "nodeType": "WhileStatement", "src": "786:75:13"}, {"assignments": [2263], "declarations": [{"constant": false, "id": 2263, "mutability": "mutable", "name": "buffer", "nameLocation": "883:6:13", "nodeType": "VariableDeclaration", "scope": 2306, "src": "870:19:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2262, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "870:5:13", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 2268, "initialValue": {"arguments": [{"id": 2266, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2248, "src": "902:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2265, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "892:9:13", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 2264, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "896:5:13", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 2267, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "892:17:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "870:39:13"}, {"body": {"id": 2299, "nodeType": "Block", "src": "938:131:13", "statements": [{"expression": {"id": 2274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2272, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2248, "src": "952:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"hexValue": "31", "id": 2273, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "962:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "952:11:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2275, "nodeType": "ExpressionStatement", "src": "952:11:13"}, {"expression": {"id": 2293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 2276, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2263, "src": "977:6:13", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2278, "indexExpression": {"id": 2277, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2248, "src": "984:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "977:14:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "3438", "id": 2283, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1007:2:13", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2286, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2231, "src": "1020:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"hexValue": "3130", "id": 2287, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1028:2:13", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "1020:10:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2285, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1012:7:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2284, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1012:7:13", "typeDescriptions": {}}}, "id": 2289, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1012:19:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1007:24:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2282, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1001:5:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 2281, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1001:5:13", "typeDescriptions": {}}}, "id": 2291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1001:31:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 2280, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "994:6:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)"}, "typeName": {"id": 2279, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "994:6:13", "typeDescriptions": {}}}, "id": 2292, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "994:39:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "977:56:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 2294, "nodeType": "ExpressionStatement", "src": "977:56:13"}, {"expression": {"id": 2297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2295, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2231, "src": "1047:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"hexValue": "3130", "id": 2296, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1056:2:13", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "1047:11:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2298, "nodeType": "ExpressionStatement", "src": "1047:11:13"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2271, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2269, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2231, "src": "926:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2270, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "935:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "926:10:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2300, "nodeType": "WhileStatement", "src": "919:150:13"}, {"expression": {"arguments": [{"id": 2303, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2263, "src": "1092:6:13", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2302, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1085:6:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 2301, "name": "string", "nodeType": "ElementaryTypeName", "src": "1085:6:13", "typeDescriptions": {}}}, "id": 2304, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1085:14:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 2235, "id": 2305, "nodeType": "Return", "src": "1078:21:13"}]}, "documentation": {"id": 2229, "nodeType": "StructuredDocumentation", "src": "308:90:13", "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."}, "id": 2307, "implemented": true, "kind": "function", "modifiers": [], "name": "toString", "nameLocation": "412:8:13", "nodeType": "FunctionDefinition", "parameters": {"id": 2232, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2231, "mutability": "mutable", "name": "value", "nameLocation": "429:5:13", "nodeType": "VariableDeclaration", "scope": 2307, "src": "421:13:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2230, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "421:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "420:15:13"}, "returnParameters": {"id": 2235, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2234, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2307, "src": "459:13:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2233, "name": "string", "nodeType": "ElementaryTypeName", "src": "459:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "458:15:13"}, "scope": 2445, "src": "403:703:13", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2347, "nodeType": "Block", "src": "1285:255:13", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2317, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2315, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2310, "src": "1299:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2316, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1308:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1299:10:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2321, "nodeType": "IfStatement", "src": "1295:54:13", "trueBody": {"id": 2320, "nodeType": "Block", "src": "1311:38:13", "statements": [{"expression": {"hexValue": "30783030", "id": 2318, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1332:6:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_27489e20a0060b723a1748bdff5e44570ee9fae64141728105692eac6031e8a4", "typeString": "literal_string \"0x00\""}, "value": "0x00"}, "functionReturnParameters": 2314, "id": 2319, "nodeType": "Return", "src": "1325:13:13"}]}}, {"assignments": [2323], "declarations": [{"constant": false, "id": 2323, "mutability": "mutable", "name": "temp", "nameLocation": "1366:4:13", "nodeType": "VariableDeclaration", "scope": 2347, "src": "1358:12:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2322, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1358:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2325, "initialValue": {"id": 2324, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2310, "src": "1373:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1358:20:13"}, {"assignments": [2327], "declarations": [{"constant": false, "id": 2327, "mutability": "mutable", "name": "length", "nameLocation": "1396:6:13", "nodeType": "VariableDeclaration", "scope": 2347, "src": "1388:14:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2326, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1388:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2329, "initialValue": {"hexValue": "30", "id": 2328, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1405:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "1388:18:13"}, {"body": {"id": 2340, "nodeType": "Block", "src": "1434:57:13", "statements": [{"expression": {"id": 2334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1448:8:13", "subExpression": {"id": 2333, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2327, "src": "1448:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2335, "nodeType": "ExpressionStatement", "src": "1448:8:13"}, {"expression": {"id": 2338, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2336, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2323, "src": "1470:4:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "38", "id": 2337, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1479:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8"}, "value": "8"}, "src": "1470:10:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2339, "nodeType": "ExpressionStatement", "src": "1470:10:13"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2330, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2323, "src": "1423:4:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1431:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1423:9:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2341, "nodeType": "WhileStatement", "src": "1416:75:13"}, {"expression": {"arguments": [{"id": 2343, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2310, "src": "1519:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 2344, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2327, "src": "1526:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2342, "name": "toHexString", "nodeType": "Identifier", "overloadedDeclarations": [2348, 2424, 2444], "referencedDeclaration": 2424, "src": "1507:11:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256,uint256) pure returns (string memory)"}}, "id": 2345, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1507:26:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 2314, "id": 2346, "nodeType": "Return", "src": "1500:33:13"}]}, "documentation": {"id": 2308, "nodeType": "StructuredDocumentation", "src": "1112:94:13", "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."}, "id": 2348, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "1220:11:13", "nodeType": "FunctionDefinition", "parameters": {"id": 2311, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2310, "mutability": "mutable", "name": "value", "nameLocation": "1240:5:13", "nodeType": "VariableDeclaration", "scope": 2348, "src": "1232:13:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2309, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1232:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1231:15:13"}, "returnParameters": {"id": 2314, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2313, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2348, "src": "1270:13:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2312, "name": "string", "nodeType": "ElementaryTypeName", "src": "1270:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1269:15:13"}, "scope": 2445, "src": "1211:329:13", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2423, "nodeType": "Block", "src": "1753:351:13", "statements": [{"assignments": [2359], "declarations": [{"constant": false, "id": 2359, "mutability": "mutable", "name": "buffer", "nameLocation": "1776:6:13", "nodeType": "VariableDeclaration", "scope": 2423, "src": "1763:19:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2358, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1763:5:13", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 2368, "initialValue": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2366, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2364, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2362, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1795:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2363, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2353, "src": "1799:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1795:10:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "32", "id": 2365, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1808:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "1795:14:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2361, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1785:9:13", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 2360, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1789:5:13", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 2367, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1785:25:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "1763:47:13"}, {"expression": {"id": 2373, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 2369, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2359, "src": "1820:6:13", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2371, "indexExpression": {"hexValue": "30", "id": 2370, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1827:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1820:9:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 2372, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1832:3:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\""}, "value": "0"}, "src": "1820:15:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 2374, "nodeType": "ExpressionStatement", "src": "1820:15:13"}, {"expression": {"id": 2379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 2375, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2359, "src": "1845:6:13", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2377, "indexExpression": {"hexValue": "31", "id": 2376, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1852:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1845:9:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "78", "id": 2378, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1857:3:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83", "typeString": "literal_string \"x\""}, "value": "x"}, "src": "1845:15:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 2380, "nodeType": "ExpressionStatement", "src": "1845:15:13"}, {"body": {"id": 2409, "nodeType": "Block", "src": "1915:87:13", "statements": [{"expression": {"id": 2403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 2395, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2359, "src": "1929:6:13", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2397, "indexExpression": {"id": 2396, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2382, "src": "1936:1:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1929:9:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"baseExpression": {"id": 2398, "name": "_HEX_SYMBOLS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2225, "src": "1941:12:13", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}}, "id": 2402, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2399, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2351, "src": "1954:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"hexValue": "307866", "id": 2400, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1962:3:13", "typeDescriptions": {"typeIdentifier": "t_rational_15_by_1", "typeString": "int_const 15"}, "value": "0xf"}, "src": "1954:11:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1941:25:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "1929:37:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 2404, "nodeType": "ExpressionStatement", "src": "1929:37:13"}, {"expression": {"id": 2407, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2405, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2351, "src": "1980:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "34", "id": 2406, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1990:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "1980:11:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2408, "nodeType": "ExpressionStatement", "src": "1980:11:13"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2389, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2382, "src": "1903:1:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "31", "id": 2390, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1907:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1903:5:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2410, "initializationExpression": {"assignments": [2382], "declarations": [{"constant": false, "id": 2382, "mutability": "mutable", "name": "i", "nameLocation": "1883:1:13", "nodeType": "VariableDeclaration", "scope": 2410, "src": "1875:9:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2381, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1875:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2388, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2383, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1887:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2384, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2353, "src": "1891:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1887:10:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 2386, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1900:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1887:14:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1875:26:13"}, "loopExpression": {"expression": {"id": 2393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": true, "src": "1910:3:13", "subExpression": {"id": 2392, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2382, "src": "1912:1:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2394, "nodeType": "ExpressionStatement", "src": "1910:3:13"}, "nodeType": "ForStatement", "src": "1870:132:13"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2414, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2412, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2351, "src": "2019:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2413, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2028:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2019:10:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74", "id": 2415, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2031:34:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", "typeString": "literal_string \"Strings: hex length insufficient\""}, "value": "Strings: hex length insufficient"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", "typeString": "literal_string \"Strings: hex length insufficient\""}], "id": 2411, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2011:7:13", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2416, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2011:55:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2417, "nodeType": "ExpressionStatement", "src": "2011:55:13"}, {"expression": {"arguments": [{"id": 2420, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2359, "src": "2090:6:13", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2419, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2083:6:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 2418, "name": "string", "nodeType": "ElementaryTypeName", "src": "2083:6:13", "typeDescriptions": {}}}, "id": 2421, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2083:14:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 2357, "id": 2422, "nodeType": "Return", "src": "2076:21:13"}]}, "documentation": {"id": 2349, "nodeType": "StructuredDocumentation", "src": "1546:112:13", "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."}, "id": 2424, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "1672:11:13", "nodeType": "FunctionDefinition", "parameters": {"id": 2354, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2351, "mutability": "mutable", "name": "value", "nameLocation": "1692:5:13", "nodeType": "VariableDeclaration", "scope": 2424, "src": "1684:13:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2350, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1684:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2353, "mutability": "mutable", "name": "length", "nameLocation": "1707:6:13", "nodeType": "VariableDeclaration", "scope": 2424, "src": "1699:14:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2352, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1699:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1683:31:13"}, "returnParameters": {"id": 2357, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2356, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2424, "src": "1738:13:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2355, "name": "string", "nodeType": "ElementaryTypeName", "src": "1738:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1737:15:13"}, "scope": 2445, "src": "1663:441:13", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2443, "nodeType": "Block", "src": "2329:76:13", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [{"id": 2437, "name": "addr", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2427, "src": "2374:4:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2436, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2366:7:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)"}, "typeName": {"id": 2435, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "2366:7:13", "typeDescriptions": {}}}, "id": 2438, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2366:13:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint160", "typeString": "uint160"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint160", "typeString": "uint160"}], "id": 2434, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2358:7:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2358:7:13", "typeDescriptions": {}}}, "id": 2439, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2358:22:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 2440, "name": "_ADDRESS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2228, "src": "2382:15:13", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 2432, "name": "toHexString", "nodeType": "Identifier", "overloadedDeclarations": [2348, 2424, 2444], "referencedDeclaration": 2424, "src": "2346:11:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256,uint256) pure returns (string memory)"}}, "id": 2441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2346:52:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 2431, "id": 2442, "nodeType": "Return", "src": "2339:59:13"}]}, "documentation": {"id": 2425, "nodeType": "StructuredDocumentation", "src": "2110:141:13", "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."}, "id": 2444, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "2265:11:13", "nodeType": "FunctionDefinition", "parameters": {"id": 2428, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2427, "mutability": "mutable", "name": "addr", "nameLocation": "2285:4:13", "nodeType": "VariableDeclaration", "scope": 2444, "src": "2277:12:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2426, "name": "address", "nodeType": "ElementaryTypeName", "src": "2277:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2276:14:13"}, "returnParameters": {"id": 2431, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2430, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2444, "src": "2314:13:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2429, "name": "string", "nodeType": "ElementaryTypeName", "src": "2314:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2313:15:13"}, "scope": 2445, "src": "2256:149:13", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2446, "src": "161:2246:13", "usedErrors": []}], "src": "101:2307:13"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol", "exportedSymbols": {"ERC165CheckerUpgradeable": [2639], "IERC165Upgradeable": [2695]}, "id": 2640, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2447, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "121:23:14"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", "file": "./IERC165Upgradeable.sol", "id": 2448, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2640, "sourceUnit": 2696, "src": "146:34:14", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ERC165CheckerUpgradeable", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2449, "nodeType": "StructuredDocumentation", "src": "182:277:14", "text": " @dev Library used to query support of an interface declared via {IERC165}.\n Note that these functions return the actual result of the query: they do not\n `revert` if an interface is not supported. It is up to the caller to decide\n what to do in these cases."}, "fullyImplemented": true, "id": 2639, "linearizedBaseContracts": [2639], "name": "ERC165CheckerUpgradeable", "nameLocation": "468:24:14", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2452, "mutability": "constant", "name": "_INTERFACE_ID_INVALID", "nameLocation": "597:21:14", "nodeType": "VariableDeclaration", "scope": 2639, "src": "573:58:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 2450, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "573:6:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"hexValue": "30786666666666666666", "id": 2451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "621:10:14", "typeDescriptions": {"typeIdentifier": "t_rational_4294967295_by_1", "typeString": "int_const 4294967295"}, "value": "0xffffffff"}, "visibility": "private"}, {"body": {"id": 2474, "nodeType": "Block", "src": "796:352:14", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2472, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2461, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2455, "src": "1022:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"expression": {"arguments": [{"id": 2463, "name": "IERC165Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2695, "src": "1036:18:14", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$2695_$", "typeString": "type(contract IERC165Upgradeable)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$2695_$", "typeString": "type(contract IERC165Upgradeable)"}], "id": 2462, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1031:4:14", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2464, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1031:24:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC165Upgradeable_$2695", "typeString": "type(contract IERC165Upgradeable)"}}, "id": 2465, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1056:11:14", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1031:36:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 2460, "name": "_supportsERC165Interface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2638, "src": "997:24:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 2466, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "997:71:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"id": 2471, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1084:57:14", "subExpression": {"arguments": [{"id": 2468, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2455, "src": "1110:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2469, "name": "_INTERFACE_ID_INVALID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2452, "src": "1119:21:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 2467, "name": "_supportsERC165Interface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2638, "src": "1085:24:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 2470, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1085:56:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "997:144:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2459, "id": 2473, "nodeType": "Return", "src": "978:163:14"}]}, "documentation": {"id": 2453, "nodeType": "StructuredDocumentation", "src": "638:83:14", "text": " @dev Returns true if `account` supports the {IERC165} interface,"}, "id": 2475, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsERC165", "nameLocation": "735:14:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2456, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2455, "mutability": "mutable", "name": "account", "nameLocation": "758:7:14", "nodeType": "VariableDeclaration", "scope": 2475, "src": "750:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2454, "name": "address", "nodeType": "ElementaryTypeName", "src": "750:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "749:17:14"}, "returnParameters": {"id": 2459, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2458, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2475, "src": "790:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2457, "name": "bool", "nodeType": "ElementaryTypeName", "src": "790:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "789:6:14"}, "scope": 2639, "src": "726:422:14", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2494, "nodeType": "Block", "src": "1459:181:14", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2486, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2478, "src": "1575:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2485, "name": "supportsERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2475, "src": "1560:14:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2487, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1560:23:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"arguments": [{"id": 2489, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2478, "src": "1612:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2490, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2480, "src": "1621:11:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 2488, "name": "_supportsERC165Interface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2638, "src": "1587:24:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 2491, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1587:46:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1560:73:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2484, "id": 2493, "nodeType": "Return", "src": "1553:80:14"}]}, "documentation": {"id": 2476, "nodeType": "StructuredDocumentation", "src": "1154:207:14", "text": " @dev Returns true if `account` supports the interface defined by\n `interfaceId`. Support for {IERC165} itself is queried automatically.\n See {IERC165-supportsInterface}."}, "id": 2495, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "1375:17:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2481, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2478, "mutability": "mutable", "name": "account", "nameLocation": "1401:7:14", "nodeType": "VariableDeclaration", "scope": 2495, "src": "1393:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2477, "name": "address", "nodeType": "ElementaryTypeName", "src": "1393:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2480, "mutability": "mutable", "name": "interfaceId", "nameLocation": "1417:11:14", "nodeType": "VariableDeclaration", "scope": 2495, "src": "1410:18:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 2479, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1410:6:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "1392:37:14"}, "returnParameters": {"id": 2484, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2483, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2495, "src": "1453:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2482, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1453:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1452:6:14"}, "scope": 2639, "src": "1366:274:14", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2550, "nodeType": "Block", "src": "2170:552:14", "statements": [{"assignments": [2511], "declarations": [{"constant": false, "id": 2511, "mutability": "mutable", "name": "interfaceIdsSupported", "nameLocation": "2293:21:14", "nodeType": "VariableDeclaration", "scope": 2550, "src": "2279:35:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[]"}, "typeName": {"baseType": {"id": 2509, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2279:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2510, "nodeType": "ArrayTypeName", "src": "2279:6:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", "typeString": "bool[]"}}, "visibility": "internal"}], "id": 2518, "initialValue": {"arguments": [{"expression": {"id": 2515, "name": "interfaceIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2501, "src": "2328:12:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[] memory"}}, "id": 2516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2341:6:14", "memberName": "length", "nodeType": "MemberAccess", "src": "2328:19:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2514, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "2317:10:14", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (bool[] memory)"}, "typeName": {"baseType": {"id": 2512, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2321:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2513, "nodeType": "ArrayTypeName", "src": "2321:6:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", "typeString": "bool[]"}}}, "id": 2517, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2317:31:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2279:69:14"}, {"condition": {"arguments": [{"id": 2520, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2498, "src": "2420:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2519, "name": "supportsERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2475, "src": "2405:14:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2521, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2405:23:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2547, "nodeType": "IfStatement", "src": "2401:276:14", "trueBody": {"id": 2546, "nodeType": "Block", "src": "2430:247:14", "statements": [{"body": {"id": 2544, "nodeType": "Block", "src": "2557:110:14", "statements": [{"expression": {"id": 2542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 2533, "name": "interfaceIdsSupported", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2511, "src": "2575:21:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory"}}, "id": 2535, "indexExpression": {"id": 2534, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2523, "src": "2597:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2575:24:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 2537, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2498, "src": "2627:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"baseExpression": {"id": 2538, "name": "interfaceIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2501, "src": "2636:12:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[] memory"}}, "id": 2540, "indexExpression": {"id": 2539, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2523, "src": "2649:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2636:15:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 2536, "name": "_supportsERC165Interface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2638, "src": "2602:24:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 2541, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2602:50:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2575:77:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2543, "nodeType": "ExpressionStatement", "src": "2575:77:14"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2526, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2523, "src": "2527:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 2527, "name": "interfaceIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2501, "src": "2531:12:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[] memory"}}, "id": 2528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2544:6:14", "memberName": "length", "nodeType": "MemberAccess", "src": "2531:19:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2527:23:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2545, "initializationExpression": {"assignments": [2523], "declarations": [{"constant": false, "id": 2523, "mutability": "mutable", "name": "i", "nameLocation": "2520:1:14", "nodeType": "VariableDeclaration", "scope": 2545, "src": "2512:9:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2522, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2512:7:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2525, "initialValue": {"hexValue": "30", "id": 2524, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2524:1:14", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "2512:13:14"}, "loopExpression": {"expression": {"id": 2531, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2552:3:14", "subExpression": {"id": 2530, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2523, "src": "2552:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2532, "nodeType": "ExpressionStatement", "src": "2552:3:14"}, "nodeType": "ForStatement", "src": "2507:160:14"}]}}, {"expression": {"id": 2548, "name": "interfaceIdsSupported", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2511, "src": "2694:21:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory"}}, "functionReturnParameters": 2506, "id": 2549, "nodeType": "Return", "src": "2687:28:14"}]}, "documentation": {"id": 2496, "nodeType": "StructuredDocumentation", "src": "1646:374:14", "text": " @dev Returns a boolean array where each value corresponds to the\n interfaces passed in and whether they're supported or not. This allows\n you to batch check interfaces for a contract where your expectation\n is that some interfaces may not be supported.\n See {IERC165-supportsInterface}.\n _Available since v3.4._"}, "id": 2551, "implemented": true, "kind": "function", "modifiers": [], "name": "getSupportedInterfaces", "nameLocation": "2034:22:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2502, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2498, "mutability": "mutable", "name": "account", "nameLocation": "2065:7:14", "nodeType": "VariableDeclaration", "scope": 2551, "src": "2057:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2497, "name": "address", "nodeType": "ElementaryTypeName", "src": "2057:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2501, "mutability": "mutable", "name": "interfaceIds", "nameLocation": "2090:12:14", "nodeType": "VariableDeclaration", "scope": 2551, "src": "2074:28:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[]"}, "typeName": {"baseType": {"id": 2499, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2074:6:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "id": 2500, "nodeType": "ArrayTypeName", "src": "2074:8:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", "typeString": "bytes4[]"}}, "visibility": "internal"}], "src": "2056:47:14"}, "returnParameters": {"id": 2506, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2505, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2551, "src": "2151:13:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[]"}, "typeName": {"baseType": {"id": 2503, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2151:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2504, "nodeType": "ArrayTypeName", "src": "2151:6:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", "typeString": "bool[]"}}, "visibility": "internal"}], "src": "2150:15:14"}, "scope": 2639, "src": "2025:697:14", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2596, "nodeType": "Block", "src": "3164:429:14", "statements": [{"condition": {"id": 2565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3220:24:14", "subExpression": {"arguments": [{"id": 2563, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2554, "src": "3236:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2562, "name": "supportsERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2475, "src": "3221:14:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2564, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3221:23:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2569, "nodeType": "IfStatement", "src": "3216:67:14", "trueBody": {"id": 2568, "nodeType": "Block", "src": "3246:37:14", "statements": [{"expression": {"hexValue": "66616c7365", "id": 2566, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3267:5:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 2561, "id": 2567, "nodeType": "Return", "src": "3260:12:14"}]}}, {"body": {"id": 2592, "nodeType": "Block", "src": "3403:126:14", "statements": [{"condition": {"id": 2587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3421:51:14", "subExpression": {"arguments": [{"id": 2582, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2554, "src": "3447:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"baseExpression": {"id": 2583, "name": "interfaceIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2557, "src": "3456:12:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[] memory"}}, "id": 2585, "indexExpression": {"id": 2584, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2571, "src": "3469:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3456:15:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 2581, "name": "_supportsERC165Interface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2638, "src": "3422:24:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 2586, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3422:50:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2591, "nodeType": "IfStatement", "src": "3417:102:14", "trueBody": {"id": 2590, "nodeType": "Block", "src": "3474:45:14", "statements": [{"expression": {"hexValue": "66616c7365", "id": 2588, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3499:5:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 2561, "id": 2589, "nodeType": "Return", "src": "3492:12:14"}]}}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2577, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2574, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2571, "src": "3373:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 2575, "name": "interfaceIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2557, "src": "3377:12:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[] memory"}}, "id": 2576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3390:6:14", "memberName": "length", "nodeType": "MemberAccess", "src": "3377:19:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3373:23:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2593, "initializationExpression": {"assignments": [2571], "declarations": [{"constant": false, "id": 2571, "mutability": "mutable", "name": "i", "nameLocation": "3366:1:14", "nodeType": "VariableDeclaration", "scope": 2593, "src": "3358:9:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2570, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3358:7:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2573, "initialValue": {"hexValue": "30", "id": 2572, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3370:1:14", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "3358:13:14"}, "loopExpression": {"expression": {"id": 2579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3398:3:14", "subExpression": {"id": 2578, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2571, "src": "3398:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2580, "nodeType": "ExpressionStatement", "src": "3398:3:14"}, "nodeType": "ForStatement", "src": "3353:176:14"}, {"expression": {"hexValue": "74727565", "id": 2594, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3582:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 2561, "id": 2595, "nodeType": "Return", "src": "3575:11:14"}]}, "documentation": {"id": 2552, "nodeType": "StructuredDocumentation", "src": "2728:324:14", "text": " @dev Returns true if `account` supports all the interfaces defined in\n `interfaceIds`. Support for {IERC165} itself is queried automatically.\n Batch-querying can lead to gas savings by skipping repeated checks for\n {IERC165} support.\n See {IERC165-supportsInterface}."}, "id": 2597, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsAllInterfaces", "nameLocation": "3066:21:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2558, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2554, "mutability": "mutable", "name": "account", "nameLocation": "3096:7:14", "nodeType": "VariableDeclaration", "scope": 2597, "src": "3088:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2553, "name": "address", "nodeType": "ElementaryTypeName", "src": "3088:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2557, "mutability": "mutable", "name": "interfaceIds", "nameLocation": "3121:12:14", "nodeType": "VariableDeclaration", "scope": 2597, "src": "3105:28:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[]"}, "typeName": {"baseType": {"id": 2555, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3105:6:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "id": 2556, "nodeType": "ArrayTypeName", "src": "3105:8:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", "typeString": "bytes4[]"}}, "visibility": "internal"}], "src": "3087:47:14"}, "returnParameters": {"id": 2561, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2560, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2597, "src": "3158:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2559, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3158:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "3157:6:14"}, "scope": 2639, "src": "3057:536:14", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2637, "nodeType": "Block", "src": "4355:550:14", "statements": [{"assignments": [2608], "declarations": [{"constant": false, "id": 2608, "mutability": "mutable", "name": "encodedParams", "nameLocation": "4402:13:14", "nodeType": "VariableDeclaration", "scope": 2637, "src": "4389:26:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2607, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4389:5:14", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 2616, "initialValue": {"arguments": [{"expression": {"expression": {"id": 2611, "name": "IERC165Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2695, "src": "4441:18:14", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$2695_$", "typeString": "type(contract IERC165Upgradeable)"}}, "id": 2612, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4460:17:14", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 2694, "src": "4441:36:14", "typeDescriptions": {"typeIdentifier": "t_function_declaration_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function IERC165Upgradeable.supportsInterface(bytes4) view returns (bool)"}}, "id": 2613, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4478:8:14", "memberName": "selector", "nodeType": "MemberAccess", "src": "4441:45:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"id": 2614, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2602, "src": "4488:11:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"id": 2609, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "4418:3:14", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 2610, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4422:18:14", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "4418:22:14", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 2615, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4418:82:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "4389:111:14"}, {"assignments": [2618], "declarations": [{"constant": false, "id": 2618, "mutability": "mutable", "name": "success", "nameLocation": "4547:7:14", "nodeType": "VariableDeclaration", "scope": 2637, "src": "4542:12:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2617, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4542:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 2619, "nodeType": "VariableDeclarationStatement", "src": "4542:12:14"}, {"assignments": [2621], "declarations": [{"constant": false, "id": 2621, "mutability": "mutable", "name": "returnSize", "nameLocation": "4572:10:14", "nodeType": "VariableDeclaration", "scope": 2637, "src": "4564:18:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2620, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4564:7:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2622, "nodeType": "VariableDeclarationStatement", "src": "4564:18:14"}, {"assignments": [2624], "declarations": [{"constant": false, "id": 2624, "mutability": "mutable", "name": "returnValue", "nameLocation": "4600:11:14", "nodeType": "VariableDeclaration", "scope": 2637, "src": "4592:19:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2623, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4592:7:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2625, "nodeType": "VariableDeclarationStatement", "src": "4592:19:14"}, {"AST": {"nodeType": "YulBlock", "src": "4630:203:14", "statements": [{"nodeType": "YulAssignment", "src": "4644:97:14", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "4666:5:14", "type": "", "value": "30000"}, {"name": "account", "nodeType": "YulIdentifier", "src": "4673:7:14"}, {"arguments": [{"name": "encodedParams", "nodeType": "YulIdentifier", "src": "4686:13:14"}, {"kind": "number", "nodeType": "YulLiteral", "src": "4701:4:14", "type": "", "value": "0x20"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "4682:3:14"}, "nodeType": "YulFunctionCall", "src": "4682:24:14"}, {"arguments": [{"name": "encodedParams", "nodeType": "YulIdentifier", "src": "4714:13:14"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "4708:5:14"}, "nodeType": "YulFunctionCall", "src": "4708:20:14"}, {"kind": "number", "nodeType": "YulLiteral", "src": "4730:4:14", "type": "", "value": "0x00"}, {"kind": "number", "nodeType": "YulLiteral", "src": "4736:4:14", "type": "", "value": "0x20"}], "functionName": {"name": "staticcall", "nodeType": "YulIdentifier", "src": "4655:10:14"}, "nodeType": "YulFunctionCall", "src": "4655:86:14"}, "variableNames": [{"name": "success", "nodeType": "YulIdentifier", "src": "4644:7:14"}]}, {"nodeType": "YulAssignment", "src": "4754:30:14", "value": {"arguments": [], "functionName": {"name": "returndatasize", "nodeType": "YulIdentifier", "src": "4768:14:14"}, "nodeType": "YulFunctionCall", "src": "4768:16:14"}, "variableNames": [{"name": "returnSize", "nodeType": "YulIdentifier", "src": "4754:10:14"}]}, {"nodeType": "YulAssignment", "src": "4797:26:14", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "4818:4:14", "type": "", "value": "0x00"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "4812:5:14"}, "nodeType": "YulFunctionCall", "src": "4812:11:14"}, "variableNames": [{"name": "returnValue", "nodeType": "YulIdentifier", "src": "4797:11:14"}]}]}, "evmVersion": "london", "externalReferences": [{"declaration": 2600, "isOffset": false, "isSlot": false, "src": "4673:7:14", "valueSize": 1}, {"declaration": 2608, "isOffset": false, "isSlot": false, "src": "4686:13:14", "valueSize": 1}, {"declaration": 2608, "isOffset": false, "isSlot": false, "src": "4714:13:14", "valueSize": 1}, {"declaration": 2621, "isOffset": false, "isSlot": false, "src": "4754:10:14", "valueSize": 1}, {"declaration": 2624, "isOffset": false, "isSlot": false, "src": "4797:11:14", "valueSize": 1}, {"declaration": 2618, "isOffset": false, "isSlot": false, "src": "4644:7:14", "valueSize": 1}], "id": 2626, "nodeType": "InlineAssembly", "src": "4621:212:14"}, {"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2635, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2627, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2618, "src": "4850:7:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2628, "name": "returnSize", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2621, "src": "4861:10:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"hexValue": "30783230", "id": 2629, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4875:4:14", "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "0x20"}, "src": "4861:18:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4850:29:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2632, "name": "returnValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2624, "src": "4883:11:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2633, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4897:1:14", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4883:15:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4850:48:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2606, "id": 2636, "nodeType": "Return", "src": "4843:55:14"}]}, "documentation": {"id": 2598, "nodeType": "StructuredDocumentation", "src": "3599:652:14", "text": " @notice Query if a contract implements an interface, does not check ERC165 support\n @param account The address of the contract to query for support of an interface\n @param interfaceId The interface identifier, as specified in ERC-165\n @return true if the contract at account indicates support of the interface with\n identifier interfaceId, false otherwise\n @dev Assumes that account contains a contract that supports ERC165, otherwise\n the behavior of this method is undefined. This precondition can be checked\n with {supportsERC165}.\n Interface identification is specified in ERC-165."}, "id": 2638, "implemented": true, "kind": "function", "modifiers": [], "name": "_supportsERC165Interface", "nameLocation": "4265:24:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2603, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2600, "mutability": "mutable", "name": "account", "nameLocation": "4298:7:14", "nodeType": "VariableDeclaration", "scope": 2638, "src": "4290:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2599, "name": "address", "nodeType": "ElementaryTypeName", "src": "4290:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2602, "mutability": "mutable", "name": "interfaceId", "nameLocation": "4314:11:14", "nodeType": "VariableDeclaration", "scope": 2638, "src": "4307:18:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 2601, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4307:6:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "4289:37:14"}, "returnParameters": {"id": 2606, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2605, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2638, "src": "4349:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2604, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4349:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4348:6:14"}, "scope": 2639, "src": "4256:649:14", "stateMutability": "view", "virtual": false, "visibility": "private"}], "scope": 2640, "src": "460:4447:14", "usedErrors": []}], "src": "121:4787:14"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "ERC165Upgradeable": [2683], "IERC165Upgradeable": [2695], "Initializable": [282]}, "id": 2684, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2641, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "99:23:15"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", "file": "./IERC165Upgradeable.sol", "id": 2642, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2684, "sourceUnit": 2696, "src": "124:34:15", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../../proxy/utils/Initializable.sol", "id": 2643, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2684, "sourceUnit": 283, "src": "159:45:15", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 2645, "name": "Initializable", "nameLocations": ["822:13:15"], "nodeType": "IdentifierPath", "referencedDeclaration": 282, "src": "822:13:15"}, "id": 2646, "nodeType": "InheritanceSpecifier", "src": "822:13:15"}, {"baseName": {"id": 2647, "name": "IERC165Upgradeable", "nameLocations": ["837:18:15"], "nodeType": "IdentifierPath", "referencedDeclaration": 2695, "src": "837:18:15"}, "id": 2648, "nodeType": "InheritanceSpecifier", "src": "837:18:15"}], "canonicalName": "ERC165Upgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2644, "nodeType": "StructuredDocumentation", "src": "206:576:15", "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."}, "fullyImplemented": true, "id": 2683, "linearizedBaseContracts": [2683, 2695, 282], "name": "ERC165Upgradeable", "nameLocation": "801:17:15", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2653, "nodeType": "Block", "src": "913:7:15", "statements": []}, "id": 2654, "implemented": true, "kind": "function", "modifiers": [{"id": 2651, "kind": "modifierInvocation", "modifierName": {"id": 2650, "name": "onlyInitializing", "nameLocations": ["896:16:15"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "896:16:15"}, "nodeType": "ModifierInvocation", "src": "896:16:15"}], "name": "__ERC165_init", "nameLocation": "871:13:15", "nodeType": "FunctionDefinition", "parameters": {"id": 2649, "nodeType": "ParameterList", "parameters": [], "src": "884:2:15"}, "returnParameters": {"id": 2652, "nodeType": "ParameterList", "parameters": [], "src": "913:0:15"}, "scope": 2683, "src": "862:58:15", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2659, "nodeType": "Block", "src": "987:7:15", "statements": []}, "id": 2660, "implemented": true, "kind": "function", "modifiers": [{"id": 2657, "kind": "modifierInvocation", "modifierName": {"id": 2656, "name": "onlyInitializing", "nameLocations": ["970:16:15"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "970:16:15"}, "nodeType": "ModifierInvocation", "src": "970:16:15"}], "name": "__ERC165_init_unchained", "nameLocation": "935:23:15", "nodeType": "FunctionDefinition", "parameters": {"id": 2655, "nodeType": "ParameterList", "parameters": [], "src": "958:2:15"}, "returnParameters": {"id": 2658, "nodeType": "ParameterList", "parameters": [], "src": "987:0:15"}, "scope": 2683, "src": "926:68:15", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"baseFunctions": [2694], "body": {"id": 2676, "nodeType": "Block", "src": "1151:75:15", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 2674, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2669, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2663, "src": "1168:11:15", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 2671, "name": "IERC165Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2695, "src": "1188:18:15", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$2695_$", "typeString": "type(contract IERC165Upgradeable)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$2695_$", "typeString": "type(contract IERC165Upgradeable)"}], "id": 2670, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1183:4:15", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2672, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1183:24:15", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC165Upgradeable_$2695", "typeString": "type(contract IERC165Upgradeable)"}}, "id": 2673, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1208:11:15", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1183:36:15", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "1168:51:15", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2668, "id": 2675, "nodeType": "Return", "src": "1161:58:15"}]}, "documentation": {"id": 2661, "nodeType": "StructuredDocumentation", "src": "999:56:15", "text": " @dev See {IERC165-supportsInterface}."}, "functionSelector": "01ffc9a7", "id": 2677, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "1069:17:15", "nodeType": "FunctionDefinition", "overrides": {"id": 2665, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1127:8:15"}, "parameters": {"id": 2664, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2663, "mutability": "mutable", "name": "interfaceId", "nameLocation": "1094:11:15", "nodeType": "VariableDeclaration", "scope": 2677, "src": "1087:18:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 2662, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1087:6:15", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "1086:20:15"}, "returnParameters": {"id": 2668, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2667, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2677, "src": "1145:4:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2666, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1145:4:15", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1144:6:15"}, "scope": 2683, "src": "1060:166:15", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"constant": false, "documentation": {"id": 2678, "nodeType": "StructuredDocumentation", "src": "1232:254:15", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 2682, "mutability": "mutable", "name": "__gap", "nameLocation": "1511:5:15", "nodeType": "VariableDeclaration", "scope": 2683, "src": "1491:25:15", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage", "typeString": "uint256[50]"}, "typeName": {"baseType": {"id": 2679, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1491:7:15", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2681, "length": {"hexValue": "3530", "id": 2680, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1499:2:15", "typeDescriptions": {"typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50"}, "value": "50"}, "nodeType": "ArrayTypeName", "src": "1491:11:15", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", "typeString": "uint256[50]"}}, "visibility": "private"}], "scope": 2684, "src": "783:736:15", "usedErrors": []}], "src": "99:1421:15"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", "exportedSymbols": {"IERC165Upgradeable": [2695]}, "id": 2696, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2685, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "100:23:16"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC165Upgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2686, "nodeType": "StructuredDocumentation", "src": "125:279:16", "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\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": 2695, "linearizedBaseContracts": [2695], "name": "IERC165Upgradeable", "nameLocation": "415:18:16", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 2687, "nodeType": "StructuredDocumentation", "src": "440:340:16", "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[EIP 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": 2694, "implemented": false, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "794:17:16", "nodeType": "FunctionDefinition", "parameters": {"id": 2690, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2689, "mutability": "mutable", "name": "interfaceId", "nameLocation": "819:11:16", "nodeType": "VariableDeclaration", "scope": 2694, "src": "812:18:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 2688, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "812:6:16", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "811:20:16"}, "returnParameters": {"id": 2693, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2692, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2694, "src": "855:4:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2691, "name": "bool", "nodeType": "ElementaryTypeName", "src": "855:4:16", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "854:6:16"}, "scope": 2695, "src": "785:76:16", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 2696, "src": "405:458:16", "usedErrors": []}], "src": "100:764:16"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/access/Ownable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/access/Ownable.sol", "exportedSymbols": {"Context": [5047], "Ownable": [2808]}, "id": 2809, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2697, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "102:23:17"}, {"absolutePath": "@openzeppelin/contracts/utils/Context.sol", "file": "../utils/Context.sol", "id": 2698, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2809, "sourceUnit": 5048, "src": "127:30:17", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 2700, "name": "Context", "nameLocations": ["683:7:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 5047, "src": "683:7:17"}, "id": 2701, "nodeType": "InheritanceSpecifier", "src": "683:7:17"}], "canonicalName": "Ownable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2699, "nodeType": "StructuredDocumentation", "src": "159:494:17", "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."}, "fullyImplemented": true, "id": 2808, "linearizedBaseContracts": [2808, 5047], "name": "Ownable", "nameLocation": "672:7:17", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 2703, "mutability": "mutable", "name": "_owner", "nameLocation": "713:6:17", "nodeType": "VariableDeclaration", "scope": 2808, "src": "697:22:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2702, "name": "address", "nodeType": "ElementaryTypeName", "src": "697:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "private"}, {"anonymous": false, "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "id": 2709, "name": "OwnershipTransferred", "nameLocation": "732:20:17", "nodeType": "EventDefinition", "parameters": {"id": 2708, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2705, "indexed": true, "mutability": "mutable", "name": "previousOwner", "nameLocation": "769:13:17", "nodeType": "VariableDeclaration", "scope": 2709, "src": "753:29:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2704, "name": "address", "nodeType": "ElementaryTypeName", "src": "753:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2707, "indexed": true, "mutability": "mutable", "name": "newOwner", "nameLocation": "800:8:17", "nodeType": "VariableDeclaration", "scope": 2709, "src": "784:24:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2706, "name": "address", "nodeType": "ElementaryTypeName", "src": "784:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "752:57:17"}, "src": "726:84:17"}, {"body": {"id": 2718, "nodeType": "Block", "src": "926:49:17", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 2714, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "955:10:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2715, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "955:12:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2713, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2807, "src": "936:18:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2716, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "936:32:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2717, "nodeType": "ExpressionStatement", "src": "936:32:17"}]}, "documentation": {"id": 2710, "nodeType": "StructuredDocumentation", "src": "816:91:17", "text": " @dev Initializes the contract setting the deployer as the initial owner."}, "id": 2719, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 2711, "nodeType": "ParameterList", "parameters": [], "src": "923:2:17"}, "returnParameters": {"id": 2712, "nodeType": "ParameterList", "parameters": [], "src": "926:0:17"}, "scope": 2808, "src": "912:63:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2726, "nodeType": "Block", "src": "1084:41:17", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2722, "name": "_checkOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2750, "src": "1094:11:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$__$", "typeString": "function () view"}}, "id": 2723, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1094:13:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2724, "nodeType": "ExpressionStatement", "src": "1094:13:17"}, {"id": 2725, "nodeType": "PlaceholderStatement", "src": "1117:1:17"}]}, "documentation": {"id": 2720, "nodeType": "StructuredDocumentation", "src": "981:77:17", "text": " @dev Throws if called by any account other than the owner."}, "id": 2727, "name": "onlyOwner", "nameLocation": "1072:9:17", "nodeType": "ModifierDefinition", "parameters": {"id": 2721, "nodeType": "ParameterList", "parameters": [], "src": "1081:2:17"}, "src": "1063:62:17", "virtual": false, "visibility": "internal"}, {"body": {"id": 2735, "nodeType": "Block", "src": "1256:30:17", "statements": [{"expression": {"id": 2733, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2703, "src": "1273:6:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2732, "id": 2734, "nodeType": "Return", "src": "1266:13:17"}]}, "documentation": {"id": 2728, "nodeType": "StructuredDocumentation", "src": "1131:65:17", "text": " @dev Returns the address of the current owner."}, "functionSelector": "8da5cb5b", "id": 2736, "implemented": true, "kind": "function", "modifiers": [], "name": "owner", "nameLocation": "1210:5:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2729, "nodeType": "ParameterList", "parameters": [], "src": "1215:2:17"}, "returnParameters": {"id": 2732, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2731, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2736, "src": "1247:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2730, "name": "address", "nodeType": "ElementaryTypeName", "src": "1247:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1246:9:17"}, "scope": 2808, "src": "1201:85:17", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 2749, "nodeType": "Block", "src": "1404:85:17", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2745, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2741, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2736, "src": "1422:5:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2742, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1422:7:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2743, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "1433:10:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2744, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1433:12:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1422:23:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", "id": 2746, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1447:34:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", "typeString": "literal_string \"Ownable: caller is not the owner\""}, "value": "Ownable: caller is not the owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", "typeString": "literal_string \"Ownable: caller is not the owner\""}], "id": 2740, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1414:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2747, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1414:68:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2748, "nodeType": "ExpressionStatement", "src": "1414:68:17"}]}, "documentation": {"id": 2737, "nodeType": "StructuredDocumentation", "src": "1292:62:17", "text": " @dev Throws if the sender is not the owner."}, "id": 2750, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOwner", "nameLocation": "1368:11:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2738, "nodeType": "ParameterList", "parameters": [], "src": "1379:2:17"}, "returnParameters": {"id": 2739, "nodeType": "ParameterList", "parameters": [], "src": "1404:0:17"}, "scope": 2808, "src": "1359:130:17", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 2763, "nodeType": "Block", "src": "1885:47:17", "statements": [{"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 2759, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1922:1:17", "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": 2758, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1914:7:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2757, "name": "address", "nodeType": "ElementaryTypeName", "src": "1914:7:17", "typeDescriptions": {}}}, "id": 2760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1914:10:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2756, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2807, "src": "1895:18:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2761, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1895:30:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2762, "nodeType": "ExpressionStatement", "src": "1895:30:17"}]}, "documentation": {"id": 2751, "nodeType": "StructuredDocumentation", "src": "1495:331:17", "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."}, "functionSelector": "715018a6", "id": 2764, "implemented": true, "kind": "function", "modifiers": [{"id": 2754, "kind": "modifierInvocation", "modifierName": {"id": 2753, "name": "onlyOwner", "nameLocations": ["1875:9:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 2727, "src": "1875:9:17"}, "nodeType": "ModifierInvocation", "src": "1875:9:17"}], "name": "renounceOwnership", "nameLocation": "1840:17:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2752, "nodeType": "ParameterList", "parameters": [], "src": "1857:2:17"}, "returnParameters": {"id": 2755, "nodeType": "ParameterList", "parameters": [], "src": "1885:0:17"}, "scope": 2808, "src": "1831:101:17", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 2786, "nodeType": "Block", "src": "2151:128:17", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2778, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2773, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2767, "src": "2169:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2776, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2189:1:17", "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": 2775, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2181:7:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2774, "name": "address", "nodeType": "ElementaryTypeName", "src": "2181:7:17", "typeDescriptions": {}}}, "id": 2777, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2181:10:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2169:22:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", "id": 2779, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2193:40:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", "typeString": "literal_string \"Ownable: new owner is the zero address\""}, "value": "Ownable: new owner is the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", "typeString": "literal_string \"Ownable: new owner is the zero address\""}], "id": 2772, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2161:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2780, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2161:73:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2781, "nodeType": "ExpressionStatement", "src": "2161:73:17"}, {"expression": {"arguments": [{"id": 2783, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2767, "src": "2263:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2782, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2807, "src": "2244:18:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2784, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2244:28:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2785, "nodeType": "ExpressionStatement", "src": "2244:28:17"}]}, "documentation": {"id": 2765, "nodeType": "StructuredDocumentation", "src": "1938:138:17", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."}, "functionSelector": "f2fde38b", "id": 2787, "implemented": true, "kind": "function", "modifiers": [{"id": 2770, "kind": "modifierInvocation", "modifierName": {"id": 2769, "name": "onlyOwner", "nameLocations": ["2141:9:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 2727, "src": "2141:9:17"}, "nodeType": "ModifierInvocation", "src": "2141:9:17"}], "name": "transferOwnership", "nameLocation": "2090:17:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2768, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2767, "mutability": "mutable", "name": "newOwner", "nameLocation": "2116:8:17", "nodeType": "VariableDeclaration", "scope": 2787, "src": "2108:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2766, "name": "address", "nodeType": "ElementaryTypeName", "src": "2108:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2107:18:17"}, "returnParameters": {"id": 2771, "nodeType": "ParameterList", "parameters": [], "src": "2151:0:17"}, "scope": 2808, "src": "2081:198:17", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 2806, "nodeType": "Block", "src": "2496:124:17", "statements": [{"assignments": [2794], "declarations": [{"constant": false, "id": 2794, "mutability": "mutable", "name": "oldOwner", "nameLocation": "2514:8:17", "nodeType": "VariableDeclaration", "scope": 2806, "src": "2506:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2793, "name": "address", "nodeType": "ElementaryTypeName", "src": "2506:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 2796, "initialValue": {"id": 2795, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2703, "src": "2525:6:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2506:25:17"}, {"expression": {"id": 2799, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2797, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2703, "src": "2541:6:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2798, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2790, "src": "2550:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2541:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2800, "nodeType": "ExpressionStatement", "src": "2541:17:17"}, {"eventCall": {"arguments": [{"id": 2802, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2794, "src": "2594:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2803, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2790, "src": "2604:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2801, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2709, "src": "2573:20:17", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 2804, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2573:40:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2805, "nodeType": "EmitStatement", "src": "2568:45:17"}]}, "documentation": {"id": 2788, "nodeType": "StructuredDocumentation", "src": "2285:143:17", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."}, "id": 2807, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOwnership", "nameLocation": "2442:18:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2791, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2790, "mutability": "mutable", "name": "newOwner", "nameLocation": "2469:8:17", "nodeType": "VariableDeclaration", "scope": 2807, "src": "2461:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2789, "name": "address", "nodeType": "ElementaryTypeName", "src": "2461:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2460:18:17"}, "returnParameters": {"id": 2792, "nodeType": "ParameterList", "parameters": [], "src": "2496:0:17"}, "scope": 2808, "src": "2433:187:17", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}], "scope": 2809, "src": "654:1968:17", "usedErrors": []}], "src": "102:2521:17"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/proxy/Clones.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/proxy/Clones.sol", "exportedSymbols": {"Clones": [2888]}, "id": 2889, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2810, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "100:23:18"}, {"abstract": false, "baseContracts": [], "canonicalName": "Clones", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2811, "nodeType": "StructuredDocumentation", "src": "125:629:18", "text": " @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n deploying minimal proxy contracts, also known as \"clones\".\n > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n deterministic method.\n _Available since v3.4._"}, "fullyImplemented": true, "id": 2888, "linearizedBaseContracts": [2888], "name": "Clones", "nameLocation": "763:6:18", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2830, "nodeType": "Block", "src": "1048:483:18", "statements": [{"AST": {"nodeType": "YulBlock", "src": "1110:348:18", "statements": [{"nodeType": "YulVariableDeclaration", "src": "1124:22:18", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "1141:4:18", "type": "", "value": "0x40"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "1135:5:18"}, "nodeType": "YulFunctionCall", "src": "1135:11:18"}, "variables": [{"name": "ptr", "nodeType": "YulTypedName", "src": "1128:3:18", "type": ""}]}, {"expression": {"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "1166:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "1171:66:18", "type": "", "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "1159:6:18"}, "nodeType": "YulFunctionCall", "src": "1159:79:18"}, "nodeType": "YulExpressionStatement", "src": "1159:79:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "1262:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "1267:4:18", "type": "", "value": "0x14"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "1258:3:18"}, "nodeType": "YulFunctionCall", "src": "1258:14:18"}, {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "1278:4:18", "type": "", "value": "0x60"}, {"name": "implementation", "nodeType": "YulIdentifier", "src": "1284:14:18"}], "functionName": {"name": "shl", "nodeType": "YulIdentifier", "src": "1274:3:18"}, "nodeType": "YulFunctionCall", "src": "1274:25:18"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "1251:6:18"}, "nodeType": "YulFunctionCall", "src": "1251:49:18"}, "nodeType": "YulExpressionStatement", "src": "1251:49:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "1324:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "1329:4:18", "type": "", "value": "0x28"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "1320:3:18"}, "nodeType": "YulFunctionCall", "src": "1320:14:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "1336:66:18", "type": "", "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "1313:6:18"}, "nodeType": "YulFunctionCall", "src": "1313:90:18"}, "nodeType": "YulExpressionStatement", "src": "1313:90:18"}, {"nodeType": "YulAssignment", "src": "1416:32:18", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "1435:1:18", "type": "", "value": "0"}, {"name": "ptr", "nodeType": "YulIdentifier", "src": "1438:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "1443:4:18", "type": "", "value": "0x37"}], "functionName": {"name": "create", "nodeType": "YulIdentifier", "src": "1428:6:18"}, "nodeType": "YulFunctionCall", "src": "1428:20:18"}, "variableNames": [{"name": "instance", "nodeType": "YulIdentifier", "src": "1416:8:18"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 2814, "isOffset": false, "isSlot": false, "src": "1284:14:18", "valueSize": 1}, {"declaration": 2817, "isOffset": false, "isSlot": false, "src": "1416:8:18", "valueSize": 1}], "id": 2819, "nodeType": "InlineAssembly", "src": "1101:357:18"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2826, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2821, "name": "instance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2817, "src": "1475:8:18", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2824, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1495:1:18", "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": 2823, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1487:7:18", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2822, "name": "address", "nodeType": "ElementaryTypeName", "src": "1487:7:18", "typeDescriptions": {}}}, "id": 2825, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1487:10:18", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1475:22:18", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "455243313136373a20637265617465206661696c6564", "id": 2827, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1499:24:18", "typeDescriptions": {"typeIdentifier": "t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335", "typeString": "literal_string \"ERC1167: create failed\""}, "value": "ERC1167: create failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335", "typeString": "literal_string \"ERC1167: create failed\""}], "id": 2820, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1467:7:18", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2828, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1467:57:18", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2829, "nodeType": "ExpressionStatement", "src": "1467:57:18"}]}, "documentation": {"id": 2812, "nodeType": "StructuredDocumentation", "src": "776:192:18", "text": " @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create opcode, which should never revert."}, "id": 2831, "implemented": true, "kind": "function", "modifiers": [], "name": "clone", "nameLocation": "982:5:18", "nodeType": "FunctionDefinition", "parameters": {"id": 2815, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2814, "mutability": "mutable", "name": "implementation", "nameLocation": "996:14:18", "nodeType": "VariableDeclaration", "scope": 2831, "src": "988:22:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2813, "name": "address", "nodeType": "ElementaryTypeName", "src": "988:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "987:24:18"}, "returnParameters": {"id": 2818, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2817, "mutability": "mutable", "name": "instance", "nameLocation": "1038:8:18", "nodeType": "VariableDeclaration", "scope": 2831, "src": "1030:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2816, "name": "address", "nodeType": "ElementaryTypeName", "src": "1030:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1029:18:18"}, "scope": 2888, "src": "973:558:18", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2852, "nodeType": "Block", "src": "2008:491:18", "statements": [{"AST": {"nodeType": "YulBlock", "src": "2070:355:18", "statements": [{"nodeType": "YulVariableDeclaration", "src": "2084:22:18", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "2101:4:18", "type": "", "value": "0x40"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "2095:5:18"}, "nodeType": "YulFunctionCall", "src": "2095:11:18"}, "variables": [{"name": "ptr", "nodeType": "YulTypedName", "src": "2088:3:18", "type": ""}]}, {"expression": {"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "2126:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2131:66:18", "type": "", "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "2119:6:18"}, "nodeType": "YulFunctionCall", "src": "2119:79:18"}, "nodeType": "YulExpressionStatement", "src": "2119:79:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "2222:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2227:4:18", "type": "", "value": "0x14"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "2218:3:18"}, "nodeType": "YulFunctionCall", "src": "2218:14:18"}, {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "2238:4:18", "type": "", "value": "0x60"}, {"name": "implementation", "nodeType": "YulIdentifier", "src": "2244:14:18"}], "functionName": {"name": "shl", "nodeType": "YulIdentifier", "src": "2234:3:18"}, "nodeType": "YulFunctionCall", "src": "2234:25:18"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "2211:6:18"}, "nodeType": "YulFunctionCall", "src": "2211:49:18"}, "nodeType": "YulExpressionStatement", "src": "2211:49:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "2284:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2289:4:18", "type": "", "value": "0x28"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "2280:3:18"}, "nodeType": "YulFunctionCall", "src": "2280:14:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2296:66:18", "type": "", "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "2273:6:18"}, "nodeType": "YulFunctionCall", "src": "2273:90:18"}, "nodeType": "YulExpressionStatement", "src": "2273:90:18"}, {"nodeType": "YulAssignment", "src": "2376:39:18", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "2396:1:18", "type": "", "value": "0"}, {"name": "ptr", "nodeType": "YulIdentifier", "src": "2399:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2404:4:18", "type": "", "value": "0x37"}, {"name": "salt", "nodeType": "YulIdentifier", "src": "2410:4:18"}], "functionName": {"name": "create2", "nodeType": "YulIdentifier", "src": "2388:7:18"}, "nodeType": "YulFunctionCall", "src": "2388:27:18"}, "variableNames": [{"name": "instance", "nodeType": "YulIdentifier", "src": "2376:8:18"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 2834, "isOffset": false, "isSlot": false, "src": "2244:14:18", "valueSize": 1}, {"declaration": 2839, "isOffset": false, "isSlot": false, "src": "2376:8:18", "valueSize": 1}, {"declaration": 2836, "isOffset": false, "isSlot": false, "src": "2410:4:18", "valueSize": 1}], "id": 2841, "nodeType": "InlineAssembly", "src": "2061:364:18"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2848, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2843, "name": "instance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2839, "src": "2442:8:18", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2846, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2462:1:18", "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": 2845, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2454:7:18", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2844, "name": "address", "nodeType": "ElementaryTypeName", "src": "2454:7:18", "typeDescriptions": {}}}, "id": 2847, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2454:10:18", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2442:22:18", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "455243313136373a2063726561746532206661696c6564", "id": 2849, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2466:25:18", "typeDescriptions": {"typeIdentifier": "t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73", "typeString": "literal_string \"ERC1167: create2 failed\""}, "value": "ERC1167: create2 failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73", "typeString": "literal_string \"ERC1167: create2 failed\""}], "id": 2842, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2434:7:18", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2850, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2434:58:18", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2851, "nodeType": "ExpressionStatement", "src": "2434:58:18"}]}, "documentation": {"id": 2832, "nodeType": "StructuredDocumentation", "src": "1537:364:18", "text": " @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create2 opcode and a `salt` to deterministically deploy\n the clone. Using the same `implementation` and `salt` multiple time will revert, since\n the clones cannot be deployed twice at the same address."}, "id": 2853, "implemented": true, "kind": "function", "modifiers": [], "name": "cloneDeterministic", "nameLocation": "1915:18:18", "nodeType": "FunctionDefinition", "parameters": {"id": 2837, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2834, "mutability": "mutable", "name": "implementation", "nameLocation": "1942:14:18", "nodeType": "VariableDeclaration", "scope": 2853, "src": "1934:22:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2833, "name": "address", "nodeType": "ElementaryTypeName", "src": "1934:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2836, "mutability": "mutable", "name": "salt", "nameLocation": "1966:4:18", "nodeType": "VariableDeclaration", "scope": 2853, "src": "1958:12:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2835, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1958:7:18", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "1933:38:18"}, "returnParameters": {"id": 2840, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2839, "mutability": "mutable", "name": "instance", "nameLocation": "1998:8:18", "nodeType": "VariableDeclaration", "scope": 2853, "src": "1990:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2838, "name": "address", "nodeType": "ElementaryTypeName", "src": "1990:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1989:18:18"}, "scope": 2888, "src": "1906:593:18", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2866, "nodeType": "Block", "src": "2774:582:18", "statements": [{"AST": {"nodeType": "YulBlock", "src": "2836:514:18", "statements": [{"nodeType": "YulVariableDeclaration", "src": "2850:22:18", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "2867:4:18", "type": "", "value": "0x40"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "2861:5:18"}, "nodeType": "YulFunctionCall", "src": "2861:11:18"}, "variables": [{"name": "ptr", "nodeType": "YulTypedName", "src": "2854:3:18", "type": ""}]}, {"expression": {"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "2892:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2897:66:18", "type": "", "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "2885:6:18"}, "nodeType": "YulFunctionCall", "src": "2885:79:18"}, "nodeType": "YulExpressionStatement", "src": "2885:79:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "2988:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2993:4:18", "type": "", "value": "0x14"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "2984:3:18"}, "nodeType": "YulFunctionCall", "src": "2984:14:18"}, {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "3004:4:18", "type": "", "value": "0x60"}, {"name": "implementation", "nodeType": "YulIdentifier", "src": "3010:14:18"}], "functionName": {"name": "shl", "nodeType": "YulIdentifier", "src": "3000:3:18"}, "nodeType": "YulFunctionCall", "src": "3000:25:18"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "2977:6:18"}, "nodeType": "YulFunctionCall", "src": "2977:49:18"}, "nodeType": "YulExpressionStatement", "src": "2977:49:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "3050:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3055:4:18", "type": "", "value": "0x28"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "3046:3:18"}, "nodeType": "YulFunctionCall", "src": "3046:14:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3062:66:18", "type": "", "value": "0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "3039:6:18"}, "nodeType": "YulFunctionCall", "src": "3039:90:18"}, "nodeType": "YulExpressionStatement", "src": "3039:90:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "3153:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3158:4:18", "type": "", "value": "0x38"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "3149:3:18"}, "nodeType": "YulFunctionCall", "src": "3149:14:18"}, {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "3169:4:18", "type": "", "value": "0x60"}, {"name": "deployer", "nodeType": "YulIdentifier", "src": "3175:8:18"}], "functionName": {"name": "shl", "nodeType": "YulIdentifier", "src": "3165:3:18"}, "nodeType": "YulFunctionCall", "src": "3165:19:18"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "3142:6:18"}, "nodeType": "YulFunctionCall", "src": "3142:43:18"}, "nodeType": "YulExpressionStatement", "src": "3142:43:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "3209:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3214:4:18", "type": "", "value": "0x4c"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "3205:3:18"}, "nodeType": "YulFunctionCall", "src": "3205:14:18"}, {"name": "salt", "nodeType": "YulIdentifier", "src": "3221:4:18"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "3198:6:18"}, "nodeType": "YulFunctionCall", "src": "3198:28:18"}, "nodeType": "YulExpressionStatement", "src": "3198:28:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "3250:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3255:4:18", "type": "", "value": "0x6c"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "3246:3:18"}, "nodeType": "YulFunctionCall", "src": "3246:14:18"}, {"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "3272:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3277:4:18", "type": "", "value": "0x37"}], "functionName": {"name": "keccak256", "nodeType": "YulIdentifier", "src": "3262:9:18"}, "nodeType": "YulFunctionCall", "src": "3262:20:18"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "3239:6:18"}, "nodeType": "YulFunctionCall", "src": "3239:44:18"}, "nodeType": "YulExpressionStatement", "src": "3239:44:18"}, {"nodeType": "YulAssignment", "src": "3296:44:18", "value": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "3323:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3328:4:18", "type": "", "value": "0x37"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "3319:3:18"}, "nodeType": "YulFunctionCall", "src": "3319:14:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3335:4:18", "type": "", "value": "0x55"}], "functionName": {"name": "keccak256", "nodeType": "YulIdentifier", "src": "3309:9:18"}, "nodeType": "YulFunctionCall", "src": "3309:31:18"}, "variableNames": [{"name": "predicted", "nodeType": "YulIdentifier", "src": "3296:9:18"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 2860, "isOffset": false, "isSlot": false, "src": "3175:8:18", "valueSize": 1}, {"declaration": 2856, "isOffset": false, "isSlot": false, "src": "3010:14:18", "valueSize": 1}, {"declaration": 2863, "isOffset": false, "isSlot": false, "src": "3296:9:18", "valueSize": 1}, {"declaration": 2858, "isOffset": false, "isSlot": false, "src": "3221:4:18", "valueSize": 1}], "id": 2865, "nodeType": "InlineAssembly", "src": "2827:523:18"}]}, "documentation": {"id": 2854, "nodeType": "StructuredDocumentation", "src": "2505:99:18", "text": " @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."}, "id": 2867, "implemented": true, "kind": "function", "modifiers": [], "name": "predictDeterministicAddress", "nameLocation": "2618:27:18", "nodeType": "FunctionDefinition", "parameters": {"id": 2861, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2856, "mutability": "mutable", "name": "implementation", "nameLocation": "2663:14:18", "nodeType": "VariableDeclaration", "scope": 2867, "src": "2655:22:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2855, "name": "address", "nodeType": "ElementaryTypeName", "src": "2655:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2858, "mutability": "mutable", "name": "salt", "nameLocation": "2695:4:18", "nodeType": "VariableDeclaration", "scope": 2867, "src": "2687:12:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2857, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2687:7:18", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 2860, "mutability": "mutable", "name": "deployer", "nameLocation": "2717:8:18", "nodeType": "VariableDeclaration", "scope": 2867, "src": "2709:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2859, "name": "address", "nodeType": "ElementaryTypeName", "src": "2709:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2645:86:18"}, "returnParameters": {"id": 2864, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2863, "mutability": "mutable", "name": "predicted", "nameLocation": "2763:9:18", "nodeType": "VariableDeclaration", "scope": 2867, "src": "2755:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2862, "name": "address", "nodeType": "ElementaryTypeName", "src": "2755:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2754:19:18"}, "scope": 2888, "src": "2609:747:18", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2886, "nodeType": "Block", "src": "3611:88:18", "statements": [{"expression": {"arguments": [{"id": 2878, "name": "implementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2870, "src": "3656:14:18", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2879, "name": "salt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2872, "src": "3672:4:18", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"arguments": [{"id": 2882, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3686:4:18", "typeDescriptions": {"typeIdentifier": "t_contract$_Clones_$2888", "typeString": "library Clones"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_Clones_$2888", "typeString": "library Clones"}], "id": 2881, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3678:7:18", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2880, "name": "address", "nodeType": "ElementaryTypeName", "src": "3678:7:18", "typeDescriptions": {}}}, "id": 2883, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3678:13:18", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2877, "name": "predictDeterministicAddress", "nodeType": "Identifier", "overloadedDeclarations": [2867, 2887], "referencedDeclaration": 2867, "src": "3628:27:18", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$returns$_t_address_$", "typeString": "function (address,bytes32,address) pure returns (address)"}}, "id": 2884, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3628:64:18", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2876, "id": 2885, "nodeType": "Return", "src": "3621:71:18"}]}, "documentation": {"id": 2868, "nodeType": "StructuredDocumentation", "src": "3362:99:18", "text": " @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."}, "id": 2887, "implemented": true, "kind": "function", "modifiers": [], "name": "predictDeterministicAddress", "nameLocation": "3475:27:18", "nodeType": "FunctionDefinition", "parameters": {"id": 2873, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2870, "mutability": "mutable", "name": "implementation", "nameLocation": "3511:14:18", "nodeType": "VariableDeclaration", "scope": 2887, "src": "3503:22:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2869, "name": "address", "nodeType": "ElementaryTypeName", "src": "3503:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2872, "mutability": "mutable", "name": "salt", "nameLocation": "3535:4:18", "nodeType": "VariableDeclaration", "scope": 2887, "src": "3527:12:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2871, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3527:7:18", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3502:38:18"}, "returnParameters": {"id": 2876, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2875, "mutability": "mutable", "name": "predicted", "nameLocation": "3596:9:18", "nodeType": "VariableDeclaration", "scope": 2887, "src": "3588:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2874, "name": "address", "nodeType": "ElementaryTypeName", "src": "3588:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3587:19:18"}, "scope": 2888, "src": "3466:233:18", "stateMutability": "view", "virtual": false, "visibility": "internal"}], "scope": 2889, "src": "755:2946:18", "usedErrors": []}], "src": "100:3602:18"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "exportedSymbols": {"Context": [5047], "ERC20": [3474], "IERC20": [3552], "IERC20Metadata": [3577]}, "id": 3475, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2890, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "105:23:19"}, {"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", "id": 2891, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3475, "sourceUnit": 3553, "src": "130:22:19", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", "file": "./extensions/IERC20Metadata.sol", "id": 2892, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3475, "sourceUnit": 3578, "src": "153:41:19", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/utils/Context.sol", "file": "../../utils/Context.sol", "id": 2893, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3475, "sourceUnit": 5048, "src": "195:33:19", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 2895, "name": "Context", "nameLocations": ["1421:7:19"], "nodeType": "IdentifierPath", "referencedDeclaration": 5047, "src": "1421:7:19"}, "id": 2896, "nodeType": "InheritanceSpecifier", "src": "1421:7:19"}, {"baseName": {"id": 2897, "name": "IERC20", "nameLocations": ["1430:6:19"], "nodeType": "IdentifierPath", "referencedDeclaration": 3552, "src": "1430:6:19"}, "id": 2898, "nodeType": "InheritanceSpecifier", "src": "1430:6:19"}, {"baseName": {"id": 2899, "name": "IERC20Metadata", "nameLocations": ["1438:14:19"], "nodeType": "IdentifierPath", "referencedDeclaration": 3577, "src": "1438:14:19"}, "id": 2900, "nodeType": "InheritanceSpecifier", "src": "1438:14:19"}], "canonicalName": "ERC20", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2894, "nodeType": "StructuredDocumentation", "src": "230:1172:19", "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 For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\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 ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."}, "fullyImplemented": true, "id": 3474, "linearizedBaseContracts": [3474, 3577, 3552, 5047], "name": "ERC20", "nameLocation": "1412:5:19", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 2904, "mutability": "mutable", "name": "_balances", "nameLocation": "1495:9:19", "nodeType": "VariableDeclaration", "scope": 3474, "src": "1459:45:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "typeName": {"id": 2903, "keyType": {"id": 2901, "name": "address", "nodeType": "ElementaryTypeName", "src": "1467:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1459:27:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "valueType": {"id": 2902, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1478:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, "visibility": "private"}, {"constant": false, "id": 2910, "mutability": "mutable", "name": "_allowances", "nameLocation": "1567:11:19", "nodeType": "VariableDeclaration", "scope": 3474, "src": "1511:67:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))"}, "typeName": {"id": 2909, "keyType": {"id": 2905, "name": "address", "nodeType": "ElementaryTypeName", "src": "1519:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1511:47:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))"}, "valueType": {"id": 2908, "keyType": {"id": 2906, "name": "address", "nodeType": "ElementaryTypeName", "src": "1538:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1530:27:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "valueType": {"id": 2907, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1549:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}}, "visibility": "private"}, {"constant": false, "id": 2912, "mutability": "mutable", "name": "_totalSupply", "nameLocation": "1601:12:19", "nodeType": "VariableDeclaration", "scope": 3474, "src": "1585:28:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2911, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1585:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"constant": false, "id": 2914, "mutability": "mutable", "name": "_name", "nameLocation": "1635:5:19", "nodeType": "VariableDeclaration", "scope": 3474, "src": "1620:20:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 2913, "name": "string", "nodeType": "ElementaryTypeName", "src": "1620:6:19", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"constant": false, "id": 2916, "mutability": "mutable", "name": "_symbol", "nameLocation": "1661:7:19", "nodeType": "VariableDeclaration", "scope": 3474, "src": "1646:22:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 2915, "name": "string", "nodeType": "ElementaryTypeName", "src": "1646:6:19", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"body": {"id": 2932, "nodeType": "Block", "src": "2034:57:19", "statements": [{"expression": {"id": 2926, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2924, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2914, "src": "2044:5:19", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2925, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2919, "src": "2052:5:19", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "2044:13:19", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 2927, "nodeType": "ExpressionStatement", "src": "2044:13:19"}, {"expression": {"id": 2930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2928, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2916, "src": "2067:7:19", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2929, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2921, "src": "2077:7:19", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "2067:17:19", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 2931, "nodeType": "ExpressionStatement", "src": "2067:17:19"}]}, "documentation": {"id": 2917, "nodeType": "StructuredDocumentation", "src": "1675:298:19", "text": " @dev Sets the values for {name} and {symbol}.\n The default value of {decimals} is 18. To select a different value for\n {decimals} you should overload it.\n All two of these values are immutable: they can only be set once during\n construction."}, "id": 2933, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 2922, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2919, "mutability": "mutable", "name": "name_", "nameLocation": "2004:5:19", "nodeType": "VariableDeclaration", "scope": 2933, "src": "1990:19:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2918, "name": "string", "nodeType": "ElementaryTypeName", "src": "1990:6:19", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 2921, "mutability": "mutable", "name": "symbol_", "nameLocation": "2025:7:19", "nodeType": "VariableDeclaration", "scope": 2933, "src": "2011:21:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2920, "name": "string", "nodeType": "ElementaryTypeName", "src": "2011:6:19", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1989:44:19"}, "returnParameters": {"id": 2923, "nodeType": "ParameterList", "parameters": [], "src": "2034:0:19"}, "scope": 3474, "src": "1978:113:19", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"baseFunctions": [3564], "body": {"id": 2942, "nodeType": "Block", "src": "2225:29:19", "statements": [{"expression": {"id": 2940, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2914, "src": "2242:5:19", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 2939, "id": 2941, "nodeType": "Return", "src": "2235:12:19"}]}, "documentation": {"id": 2934, "nodeType": "StructuredDocumentation", "src": "2097:54:19", "text": " @dev Returns the name of the token."}, "functionSelector": "06fdde03", "id": 2943, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "2165:4:19", "nodeType": "FunctionDefinition", "overrides": {"id": 2936, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2192:8:19"}, "parameters": {"id": 2935, "nodeType": "ParameterList", "parameters": [], "src": "2169:2:19"}, "returnParameters": {"id": 2939, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2938, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2943, "src": "2210:13:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2937, "name": "string", "nodeType": "ElementaryTypeName", "src": "2210:6:19", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2209:15:19"}, "scope": 3474, "src": "2156:98:19", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [3570], "body": {"id": 2952, "nodeType": "Block", "src": "2438:31:19", "statements": [{"expression": {"id": 2950, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2916, "src": "2455:7:19", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 2949, "id": 2951, "nodeType": "Return", "src": "2448:14:19"}]}, "documentation": {"id": 2944, "nodeType": "StructuredDocumentation", "src": "2260:102:19", "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."}, "functionSelector": "95d89b41", "id": 2953, "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "2376:6:19", "nodeType": "FunctionDefinition", "overrides": {"id": 2946, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2405:8:19"}, "parameters": {"id": 2945, "nodeType": "ParameterList", "parameters": [], "src": "2382:2:19"}, "returnParameters": {"id": 2949, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2948, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2953, "src": "2423:13:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2947, "name": "string", "nodeType": "ElementaryTypeName", "src": "2423:6:19", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2422:15:19"}, "scope": 3474, "src": "2367:102:19", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [3576], "body": {"id": 2962, "nodeType": "Block", "src": "3158:26:19", "statements": [{"expression": {"hexValue": "3138", "id": 2960, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3175:2:19", "typeDescriptions": {"typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18"}, "value": "18"}, "functionReturnParameters": 2959, "id": 2961, "nodeType": "Return", "src": "3168:9:19"}]}, "documentation": {"id": 2954, "nodeType": "StructuredDocumentation", "src": "2475:613:19", "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 value {ERC20} uses, unless this function is\n 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": 2963, "implemented": true, "kind": "function", "modifiers": [], "name": "decimals", "nameLocation": "3102:8:19", "nodeType": "FunctionDefinition", "overrides": {"id": 2956, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3133:8:19"}, "parameters": {"id": 2955, "nodeType": "ParameterList", "parameters": [], "src": "3110:2:19"}, "returnParameters": {"id": 2959, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2958, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2963, "src": "3151:5:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2957, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3151:5:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "3150:7:19"}, "scope": 3474, "src": "3093:91:19", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [3501], "body": {"id": 2972, "nodeType": "Block", "src": "3314:36:19", "statements": [{"expression": {"id": 2970, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2912, "src": "3331:12:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2969, "id": 2971, "nodeType": "Return", "src": "3324:19:19"}]}, "documentation": {"id": 2964, "nodeType": "StructuredDocumentation", "src": "3190:49:19", "text": " @dev See {IERC20-totalSupply}."}, "functionSelector": "18160ddd", "id": 2973, "implemented": true, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "3253:11:19", "nodeType": "FunctionDefinition", "overrides": {"id": 2966, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3287:8:19"}, "parameters": {"id": 2965, "nodeType": "ParameterList", "parameters": [], "src": "3264:2:19"}, "returnParameters": {"id": 2969, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2968, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2973, "src": "3305:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2967, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3305:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3304:9:19"}, "scope": 3474, "src": "3244:106:19", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [3509], "body": {"id": 2986, "nodeType": "Block", "src": "3491:42:19", "statements": [{"expression": {"baseExpression": {"id": 2982, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "3508:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 2984, "indexExpression": {"id": 2983, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2976, "src": "3518:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3508:18:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2981, "id": 2985, "nodeType": "Return", "src": "3501:25:19"}]}, "documentation": {"id": 2974, "nodeType": "StructuredDocumentation", "src": "3356:47:19", "text": " @dev See {IERC20-balanceOf}."}, "functionSelector": "70a08231", "id": 2987, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "3417:9:19", "nodeType": "FunctionDefinition", "overrides": {"id": 2978, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3464:8:19"}, "parameters": {"id": 2977, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2976, "mutability": "mutable", "name": "account", "nameLocation": "3435:7:19", "nodeType": "VariableDeclaration", "scope": 2987, "src": "3427:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2975, "name": "address", "nodeType": "ElementaryTypeName", "src": "3427:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3426:17:19"}, "returnParameters": {"id": 2981, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2980, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2987, "src": "3482:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2979, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3482:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3481:9:19"}, "scope": 3474, "src": "3408:125:19", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [3519], "body": {"id": 3011, "nodeType": "Block", "src": "3814:104:19", "statements": [{"assignments": [2999], "declarations": [{"constant": false, "id": 2999, "mutability": "mutable", "name": "owner", "nameLocation": "3832:5:19", "nodeType": "VariableDeclaration", "scope": 3011, "src": "3824:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2998, "name": "address", "nodeType": "ElementaryTypeName", "src": "3824:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3002, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 3000, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "3840:10:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3001, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3840:12:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "3824:28:19"}, {"expression": {"arguments": [{"id": 3004, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2999, "src": "3872:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3005, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2990, "src": "3879:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3006, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2992, "src": "3883:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3003, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3235, "src": "3862:9:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3007, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3862:28:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3008, "nodeType": "ExpressionStatement", "src": "3862:28:19"}, {"expression": {"hexValue": "74727565", "id": 3009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3907:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 2997, "id": 3010, "nodeType": "Return", "src": "3900:11:19"}]}, "documentation": {"id": 2988, "nodeType": "StructuredDocumentation", "src": "3539:185:19", "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `amount`."}, "functionSelector": "a9059cbb", "id": 3012, "implemented": true, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "3738:8:19", "nodeType": "FunctionDefinition", "overrides": {"id": 2994, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3790:8:19"}, "parameters": {"id": 2993, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2990, "mutability": "mutable", "name": "to", "nameLocation": "3755:2:19", "nodeType": "VariableDeclaration", "scope": 3012, "src": "3747:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2989, "name": "address", "nodeType": "ElementaryTypeName", "src": "3747:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2992, "mutability": "mutable", "name": "amount", "nameLocation": "3767:6:19", "nodeType": "VariableDeclaration", "scope": 3012, "src": "3759:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2991, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3759:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3746:28:19"}, "returnParameters": {"id": 2997, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2996, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3012, "src": "3808:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2995, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3808:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "3807:6:19"}, "scope": 3474, "src": "3729:189:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [3529], "body": {"id": 3029, "nodeType": "Block", "src": "4074:51:19", "statements": [{"expression": {"baseExpression": {"baseExpression": {"id": 3023, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2910, "src": "4091:11:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))"}}, "id": 3025, "indexExpression": {"id": 3024, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3015, "src": "4103:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4091:18:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3027, "indexExpression": {"id": 3026, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3017, "src": "4110:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4091:27:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 3022, "id": 3028, "nodeType": "Return", "src": "4084:34:19"}]}, "documentation": {"id": 3013, "nodeType": "StructuredDocumentation", "src": "3924:47:19", "text": " @dev See {IERC20-allowance}."}, "functionSelector": "dd62ed3e", "id": 3030, "implemented": true, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "3985:9:19", "nodeType": "FunctionDefinition", "overrides": {"id": 3019, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4047:8:19"}, "parameters": {"id": 3018, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3015, "mutability": "mutable", "name": "owner", "nameLocation": "4003:5:19", "nodeType": "VariableDeclaration", "scope": 3030, "src": "3995:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3014, "name": "address", "nodeType": "ElementaryTypeName", "src": "3995:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3017, "mutability": "mutable", "name": "spender", "nameLocation": "4018:7:19", "nodeType": "VariableDeclaration", "scope": 3030, "src": "4010:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3016, "name": "address", "nodeType": "ElementaryTypeName", "src": "4010:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3994:32:19"}, "returnParameters": {"id": 3022, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3021, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3030, "src": "4065:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3020, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4065:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4064:9:19"}, "scope": 3474, "src": "3976:149:19", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [3539], "body": {"id": 3054, "nodeType": "Block", "src": "4522:108:19", "statements": [{"assignments": [3042], "declarations": [{"constant": false, "id": 3042, "mutability": "mutable", "name": "owner", "nameLocation": "4540:5:19", "nodeType": "VariableDeclaration", "scope": 3054, "src": "4532:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3041, "name": "address", "nodeType": "ElementaryTypeName", "src": "4532:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3045, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 3043, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "4548:10:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3044, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4548:12:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "4532:28:19"}, {"expression": {"arguments": [{"id": 3047, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3042, "src": "4579:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3048, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3033, "src": "4586:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3049, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3035, "src": "4595:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3046, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3408, "src": "4570:8:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3050, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4570:32:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3051, "nodeType": "ExpressionStatement", "src": "4570:32:19"}, {"expression": {"hexValue": "74727565", "id": 3052, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4619:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 3040, "id": 3053, "nodeType": "Return", "src": "4612:11:19"}]}, "documentation": {"id": 3031, "nodeType": "StructuredDocumentation", "src": "4131:297:19", "text": " @dev See {IERC20-approve}.\n NOTE: If `amount` 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": 3055, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "4442:7:19", "nodeType": "FunctionDefinition", "overrides": {"id": 3037, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4498:8:19"}, "parameters": {"id": 3036, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3033, "mutability": "mutable", "name": "spender", "nameLocation": "4458:7:19", "nodeType": "VariableDeclaration", "scope": 3055, "src": "4450:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3032, "name": "address", "nodeType": "ElementaryTypeName", "src": "4450:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3035, "mutability": "mutable", "name": "amount", "nameLocation": "4475:6:19", "nodeType": "VariableDeclaration", "scope": 3055, "src": "4467:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3034, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4467:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4449:33:19"}, "returnParameters": {"id": 3040, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3039, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3055, "src": "4516:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3038, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4516:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4515:6:19"}, "scope": 3474, "src": "4433:197:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [3551], "body": {"id": 3087, "nodeType": "Block", "src": "5325:153:19", "statements": [{"assignments": [3069], "declarations": [{"constant": false, "id": 3069, "mutability": "mutable", "name": "spender", "nameLocation": "5343:7:19", "nodeType": "VariableDeclaration", "scope": 3087, "src": "5335:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3068, "name": "address", "nodeType": "ElementaryTypeName", "src": "5335:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3072, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 3070, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "5353:10:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3071, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5353:12:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "5335:30:19"}, {"expression": {"arguments": [{"id": 3074, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3058, "src": "5391:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3075, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3069, "src": "5397:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3076, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3062, "src": "5406:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3073, "name": "_spendAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3451, "src": "5375:15:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3077, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5375:38:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3078, "nodeType": "ExpressionStatement", "src": "5375:38:19"}, {"expression": {"arguments": [{"id": 3080, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3058, "src": "5433:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3081, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3060, "src": "5439:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3082, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3062, "src": "5443:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3079, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3235, "src": "5423:9:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3083, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5423:27:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3084, "nodeType": "ExpressionStatement", "src": "5423:27:19"}, {"expression": {"hexValue": "74727565", "id": 3085, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5467:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 3067, "id": 3086, "nodeType": "Return", "src": "5460:11:19"}]}, "documentation": {"id": 3056, "nodeType": "StructuredDocumentation", "src": "4636:551:19", "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\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 `amount`.\n - the caller must have allowance for ``from``'s tokens of at least\n `amount`."}, "functionSelector": "23b872dd", "id": 3088, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "5201:12:19", "nodeType": "FunctionDefinition", "overrides": {"id": 3064, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5301:8:19"}, "parameters": {"id": 3063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3058, "mutability": "mutable", "name": "from", "nameLocation": "5231:4:19", "nodeType": "VariableDeclaration", "scope": 3088, "src": "5223:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3057, "name": "address", "nodeType": "ElementaryTypeName", "src": "5223:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3060, "mutability": "mutable", "name": "to", "nameLocation": "5253:2:19", "nodeType": "VariableDeclaration", "scope": 3088, "src": "5245:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3059, "name": "address", "nodeType": "ElementaryTypeName", "src": "5245:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3062, "mutability": "mutable", "name": "amount", "nameLocation": "5273:6:19", "nodeType": "VariableDeclaration", "scope": 3088, "src": "5265:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3061, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5265:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5213:72:19"}, "returnParameters": {"id": 3067, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3066, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3088, "src": "5319:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3065, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5319:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "5318:6:19"}, "scope": 3474, "src": "5192:286:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 3116, "nodeType": "Block", "src": "5967:140:19", "statements": [{"assignments": [3099], "declarations": [{"constant": false, "id": 3099, "mutability": "mutable", "name": "owner", "nameLocation": "5985:5:19", "nodeType": "VariableDeclaration", "scope": 3116, "src": "5977:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3098, "name": "address", "nodeType": "ElementaryTypeName", "src": "5977:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3102, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 3100, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "5993:10:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3101, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5993:12:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "5977:28:19"}, {"expression": {"arguments": [{"id": 3104, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3099, "src": "6024:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3105, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3091, "src": "6031:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 3107, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3099, "src": "6050:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3108, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3091, "src": "6057:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 3106, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3030, "src": "6040:9:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view returns (uint256)"}}, "id": 3109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6040:25:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 3110, "name": "addedValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3093, "src": "6068:10:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6040:38:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3103, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3408, "src": "6015:8:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3112, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6015:64:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3113, "nodeType": "ExpressionStatement", "src": "6015:64:19"}, {"expression": {"hexValue": "74727565", "id": 3114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6096:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 3097, "id": 3115, "nodeType": "Return", "src": "6089:11:19"}]}, "documentation": {"id": 3089, "nodeType": "StructuredDocumentation", "src": "5484:384:19", "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."}, "functionSelector": "39509351", "id": 3117, "implemented": true, "kind": "function", "modifiers": [], "name": "increaseAllowance", "nameLocation": "5882:17:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3094, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3091, "mutability": "mutable", "name": "spender", "nameLocation": "5908:7:19", "nodeType": "VariableDeclaration", "scope": 3117, "src": "5900:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3090, "name": "address", "nodeType": "ElementaryTypeName", "src": "5900:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3093, "mutability": "mutable", "name": "addedValue", "nameLocation": "5925:10:19", "nodeType": "VariableDeclaration", "scope": 3117, "src": "5917:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3092, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5917:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5899:37:19"}, "returnParameters": {"id": 3097, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3096, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3117, "src": "5961:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3095, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5961:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "5960:6:19"}, "scope": 3474, "src": "5873:234:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 3157, "nodeType": "Block", "src": "6693:328:19", "statements": [{"assignments": [3128], "declarations": [{"constant": false, "id": 3128, "mutability": "mutable", "name": "owner", "nameLocation": "6711:5:19", "nodeType": "VariableDeclaration", "scope": 3157, "src": "6703:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3127, "name": "address", "nodeType": "ElementaryTypeName", "src": "6703:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3131, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 3129, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "6719:10:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3130, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6719:12:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "6703:28:19"}, {"assignments": [3133], "declarations": [{"constant": false, "id": 3133, "mutability": "mutable", "name": "currentAllowance", "nameLocation": "6749:16:19", "nodeType": "VariableDeclaration", "scope": 3157, "src": "6741:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3132, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6741:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 3138, "initialValue": {"arguments": [{"id": 3135, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3128, "src": "6778:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3136, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3120, "src": "6785:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 3134, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3030, "src": "6768:9:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view returns (uint256)"}}, "id": 3137, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6768:25:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "6741:52:19"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3140, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3133, "src": "6811:16:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 3141, "name": "subtractedValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3122, "src": "6831:15:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6811:35:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", "id": 3143, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6848:39:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", "typeString": "literal_string \"ERC20: decreased allowance below zero\""}, "value": "ERC20: decreased allowance below zero"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", "typeString": "literal_string \"ERC20: decreased allowance below zero\""}], "id": 3139, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6803:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3144, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6803:85:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3145, "nodeType": "ExpressionStatement", "src": "6803:85:19"}, {"id": 3154, "nodeType": "UncheckedBlock", "src": "6898:95:19", "statements": [{"expression": {"arguments": [{"id": 3147, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3128, "src": "6931:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3148, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3120, "src": "6938:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3151, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3149, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3133, "src": "6947:16:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 3150, "name": "subtractedValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3122, "src": "6966:15:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6947:34:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3146, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3408, "src": "6922:8:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3152, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6922:60:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3153, "nodeType": "ExpressionStatement", "src": "6922:60:19"}]}, {"expression": {"hexValue": "74727565", "id": 3155, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7010:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 3126, "id": 3156, "nodeType": "Return", "src": "7003:11:19"}]}, "documentation": {"id": 3118, "nodeType": "StructuredDocumentation", "src": "6113:476:19", "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."}, "functionSelector": "a457c2d7", "id": 3158, "implemented": true, "kind": "function", "modifiers": [], "name": "decreaseAllowance", "nameLocation": "6603:17:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3123, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3120, "mutability": "mutable", "name": "spender", "nameLocation": "6629:7:19", "nodeType": "VariableDeclaration", "scope": 3158, "src": "6621:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3119, "name": "address", "nodeType": "ElementaryTypeName", "src": "6621:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3122, "mutability": "mutable", "name": "subtractedValue", "nameLocation": "6646:15:19", "nodeType": "VariableDeclaration", "scope": 3158, "src": "6638:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3121, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6638:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6620:42:19"}, "returnParameters": {"id": 3126, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3125, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3158, "src": "6687:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3124, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6687:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "6686:6:19"}, "scope": 3474, "src": "6594:427:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 3234, "nodeType": "Block", "src": "7583:543:19", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3169, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3161, "src": "7601:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7617:1:19", "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": 3171, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7609:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3170, "name": "address", "nodeType": "ElementaryTypeName", "src": "7609:7:19", "typeDescriptions": {}}}, "id": 3173, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7609:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7601:18:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", "id": 3175, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7621:39:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", "typeString": "literal_string \"ERC20: transfer from the zero address\""}, "value": "ERC20: transfer from the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", "typeString": "literal_string \"ERC20: transfer from the zero address\""}], "id": 3168, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7593:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3176, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7593:68:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3177, "nodeType": "ExpressionStatement", "src": "7593:68:19"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3179, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, "src": "7679:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3182, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7693:1:19", "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": 3181, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7685:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3180, "name": "address", "nodeType": "ElementaryTypeName", "src": "7685:7:19", "typeDescriptions": {}}}, "id": 3183, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7685:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7679:16:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", "id": 3185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7697:37:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", "typeString": "literal_string \"ERC20: transfer to the zero address\""}, "value": "ERC20: transfer to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", "typeString": "literal_string \"ERC20: transfer to the zero address\""}], "id": 3178, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7671:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3186, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7671:64:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3187, "nodeType": "ExpressionStatement", "src": "7671:64:19"}, {"expression": {"arguments": [{"id": 3189, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3161, "src": "7767:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3190, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, "src": "7773:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3191, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3165, "src": "7777:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3188, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3462, "src": "7746:20:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3192, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7746:38:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3193, "nodeType": "ExpressionStatement", "src": "7746:38:19"}, {"assignments": [3195], "declarations": [{"constant": false, "id": 3195, "mutability": "mutable", "name": "fromBalance", "nameLocation": "7803:11:19", "nodeType": "VariableDeclaration", "scope": 3234, "src": "7795:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3194, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7795:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 3199, "initialValue": {"baseExpression": {"id": 3196, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "7817:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3198, "indexExpression": {"id": 3197, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3161, "src": "7827:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7817:15:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "7795:37:19"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3201, "name": "fromBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3195, "src": "7850:11:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 3202, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3165, "src": "7865:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7850:21:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", "id": 3204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7873:40:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""}, "value": "ERC20: transfer amount exceeds balance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""}], "id": 3200, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7842:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3205, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7842:72:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3206, "nodeType": "ExpressionStatement", "src": "7842:72:19"}, {"id": 3215, "nodeType": "UncheckedBlock", "src": "7924:73:19", "statements": [{"expression": {"id": 3213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 3207, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "7948:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3209, "indexExpression": {"id": 3208, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3161, "src": "7958:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7948:15:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3210, "name": "fromBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3195, "src": "7966:11:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 3211, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3165, "src": "7980:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7966:20:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7948:38:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3214, "nodeType": "ExpressionStatement", "src": "7948:38:19"}]}, {"expression": {"id": 3220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 3216, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "8006:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3218, "indexExpression": {"id": 3217, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, "src": "8016:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8006:13:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 3219, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3165, "src": "8023:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8006:23:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3221, "nodeType": "ExpressionStatement", "src": "8006:23:19"}, {"eventCall": {"arguments": [{"id": 3223, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3161, "src": "8054:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3224, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, "src": "8060:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3225, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3165, "src": "8064:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3222, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3486, "src": "8045:8:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3226, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8045:26:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3227, "nodeType": "EmitStatement", "src": "8040:31:19"}, {"expression": {"arguments": [{"id": 3229, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3161, "src": "8102:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3230, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, "src": "8108:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3231, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3165, "src": "8112:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3228, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3473, "src": "8082:19:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3232, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8082:37:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3233, "nodeType": "ExpressionStatement", "src": "8082:37:19"}]}, "documentation": {"id": 3159, "nodeType": "StructuredDocumentation", "src": "7027:443:19", "text": " @dev Moves `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 Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`."}, "id": 3235, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nameLocation": "7484:9:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3166, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3161, "mutability": "mutable", "name": "from", "nameLocation": "7511:4:19", "nodeType": "VariableDeclaration", "scope": 3235, "src": "7503:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3160, "name": "address", "nodeType": "ElementaryTypeName", "src": "7503:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3163, "mutability": "mutable", "name": "to", "nameLocation": "7533:2:19", "nodeType": "VariableDeclaration", "scope": 3235, "src": "7525:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3162, "name": "address", "nodeType": "ElementaryTypeName", "src": "7525:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3165, "mutability": "mutable", "name": "amount", "nameLocation": "7553:6:19", "nodeType": "VariableDeclaration", "scope": 3235, "src": "7545:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3164, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7545:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7493:72:19"}, "returnParameters": {"id": 3167, "nodeType": "ParameterList", "parameters": [], "src": "7583:0:19"}, "scope": 3474, "src": "7475:651:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 3290, "nodeType": "Block", "src": "8467:324:19", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3244, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3238, "src": "8485:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3247, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8504:1:19", "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": 3246, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8496:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3245, "name": "address", "nodeType": "ElementaryTypeName", "src": "8496:7:19", "typeDescriptions": {}}}, "id": 3248, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8496:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "8485:21:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", "id": 3250, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8508:33:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", "typeString": "literal_string \"ERC20: mint to the zero address\""}, "value": "ERC20: mint to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", "typeString": "literal_string \"ERC20: mint to the zero address\""}], "id": 3243, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8477:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3251, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8477:65:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3252, "nodeType": "ExpressionStatement", "src": "8477:65:19"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 3256, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8582:1:19", "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": 3255, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8574:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3254, "name": "address", "nodeType": "ElementaryTypeName", "src": "8574:7:19", "typeDescriptions": {}}}, "id": 3257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8574:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3258, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3238, "src": "8586:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3259, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3240, "src": "8595:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3253, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3462, "src": "8553:20:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3260, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8553:49:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3261, "nodeType": "ExpressionStatement", "src": "8553:49:19"}, {"expression": {"id": 3264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3262, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2912, "src": "8613:12:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 3263, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3240, "src": "8629:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8613:22:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3265, "nodeType": "ExpressionStatement", "src": "8613:22:19"}, {"expression": {"id": 3270, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 3266, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "8645:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3268, "indexExpression": {"id": 3267, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3238, "src": "8655:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8645:18:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 3269, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3240, "src": "8667:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8645:28:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3271, "nodeType": "ExpressionStatement", "src": "8645:28:19"}, {"eventCall": {"arguments": [{"arguments": [{"hexValue": "30", "id": 3275, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8705:1:19", "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": 3274, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8697:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3273, "name": "address", "nodeType": "ElementaryTypeName", "src": "8697:7:19", "typeDescriptions": {}}}, "id": 3276, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8697:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3277, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3238, "src": "8709:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3278, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3240, "src": "8718:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3272, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3486, "src": "8688:8:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3279, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8688:37:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3280, "nodeType": "EmitStatement", "src": "8683:42:19"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 3284, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8764:1:19", "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": 3283, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8756:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3282, "name": "address", "nodeType": "ElementaryTypeName", "src": "8756:7:19", "typeDescriptions": {}}}, "id": 3285, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8756:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3286, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3238, "src": "8768:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3287, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3240, "src": "8777:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3281, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3473, "src": "8736:19:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3288, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8736:48:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3289, "nodeType": "ExpressionStatement", "src": "8736:48:19"}]}, "documentation": {"id": 3236, "nodeType": "StructuredDocumentation", "src": "8132:265:19", "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address."}, "id": 3291, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nameLocation": "8411:5:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3241, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3238, "mutability": "mutable", "name": "account", "nameLocation": "8425:7:19", "nodeType": "VariableDeclaration", "scope": 3291, "src": "8417:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3237, "name": "address", "nodeType": "ElementaryTypeName", "src": "8417:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3240, "mutability": "mutable", "name": "amount", "nameLocation": "8442:6:19", "nodeType": "VariableDeclaration", "scope": 3291, "src": "8434:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3239, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8434:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "8416:33:19"}, "returnParameters": {"id": 3242, "nodeType": "ParameterList", "parameters": [], "src": "8467:0:19"}, "scope": 3474, "src": "8402:389:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 3362, "nodeType": "Block", "src": "9176:511:19", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3300, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3294, "src": "9194:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9213:1:19", "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": 3302, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9205:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3301, "name": "address", "nodeType": "ElementaryTypeName", "src": "9205:7:19", "typeDescriptions": {}}}, "id": 3304, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9205:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9194:21:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", "id": 3306, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9217:35:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", "typeString": "literal_string \"ERC20: burn from the zero address\""}, "value": "ERC20: burn from the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", "typeString": "literal_string \"ERC20: burn from the zero address\""}], "id": 3299, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9186:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9186:67:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3308, "nodeType": "ExpressionStatement", "src": "9186:67:19"}, {"expression": {"arguments": [{"id": 3310, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3294, "src": "9285:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 3313, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9302:1:19", "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": 3312, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9294:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3311, "name": "address", "nodeType": "ElementaryTypeName", "src": "9294:7:19", "typeDescriptions": {}}}, "id": 3314, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9294:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3315, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3296, "src": "9306:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3309, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3462, "src": "9264:20:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3316, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9264:49:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3317, "nodeType": "ExpressionStatement", "src": "9264:49:19"}, {"assignments": [3319], "declarations": [{"constant": false, "id": 3319, "mutability": "mutable", "name": "accountBalance", "nameLocation": "9332:14:19", "nodeType": "VariableDeclaration", "scope": 3362, "src": "9324:22:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3318, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9324:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 3323, "initialValue": {"baseExpression": {"id": 3320, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "9349:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3322, "indexExpression": {"id": 3321, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3294, "src": "9359:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9349:18:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "9324:43:19"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3325, "name": "accountBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3319, "src": "9385:14:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 3326, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3296, "src": "9403:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9385:24:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", "id": 3328, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9411:36:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", "typeString": "literal_string \"ERC20: burn amount exceeds balance\""}, "value": "ERC20: burn amount exceeds balance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", "typeString": "literal_string \"ERC20: burn amount exceeds balance\""}], "id": 3324, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9377:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9377:71:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3330, "nodeType": "ExpressionStatement", "src": "9377:71:19"}, {"id": 3339, "nodeType": "UncheckedBlock", "src": "9458:79:19", "statements": [{"expression": {"id": 3337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 3331, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "9482:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3333, "indexExpression": {"id": 3332, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3294, "src": "9492:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9482:18:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3334, "name": "accountBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3319, "src": "9503:14:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 3335, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3296, "src": "9520:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9503:23:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9482:44:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3338, "nodeType": "ExpressionStatement", "src": "9482:44:19"}]}, {"expression": {"id": 3342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3340, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2912, "src": "9546:12:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 3341, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3296, "src": "9562:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9546:22:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3343, "nodeType": "ExpressionStatement", "src": "9546:22:19"}, {"eventCall": {"arguments": [{"id": 3345, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3294, "src": "9593:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 3348, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9610:1:19", "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": 3347, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9602:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3346, "name": "address", "nodeType": "ElementaryTypeName", "src": "9602:7:19", "typeDescriptions": {}}}, "id": 3349, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9602:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3350, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3296, "src": "9614:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3344, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3486, "src": "9584:8:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3351, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9584:37:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3352, "nodeType": "EmitStatement", "src": "9579:42:19"}, {"expression": {"arguments": [{"id": 3354, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3294, "src": "9652:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 3357, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9669:1:19", "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": 3356, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9661:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3355, "name": "address", "nodeType": "ElementaryTypeName", "src": "9661:7:19", "typeDescriptions": {}}}, "id": 3358, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9661:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3359, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3296, "src": "9673:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3353, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3473, "src": "9632:19:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3360, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9632:48:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3361, "nodeType": "ExpressionStatement", "src": "9632:48:19"}]}, "documentation": {"id": 3292, "nodeType": "StructuredDocumentation", "src": "8797:309:19", "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."}, "id": 3363, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "9120:5:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3297, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3294, "mutability": "mutable", "name": "account", "nameLocation": "9134:7:19", "nodeType": "VariableDeclaration", "scope": 3363, "src": "9126:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3293, "name": "address", "nodeType": "ElementaryTypeName", "src": "9126:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3296, "mutability": "mutable", "name": "amount", "nameLocation": "9151:6:19", "nodeType": "VariableDeclaration", "scope": 3363, "src": "9143:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3295, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9143:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "9125:33:19"}, "returnParameters": {"id": 3298, "nodeType": "ParameterList", "parameters": [], "src": "9176:0:19"}, "scope": 3474, "src": "9111:576:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 3407, "nodeType": "Block", "src": "10223:257:19", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3374, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3366, "src": "10241:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10258:1:19", "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": 3376, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10250:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3375, "name": "address", "nodeType": "ElementaryTypeName", "src": "10250:7:19", "typeDescriptions": {}}}, "id": 3378, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10250:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10241:19:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", "id": 3380, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10262:38:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", "typeString": "literal_string \"ERC20: approve from the zero address\""}, "value": "ERC20: approve from the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", "typeString": "literal_string \"ERC20: approve from the zero address\""}], "id": 3373, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10233:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3381, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10233:68:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3382, "nodeType": "ExpressionStatement", "src": "10233:68:19"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3389, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3384, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3368, "src": "10319:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3387, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10338:1:19", "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": 3386, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10330:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3385, "name": "address", "nodeType": "ElementaryTypeName", "src": "10330:7:19", "typeDescriptions": {}}}, "id": 3388, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10330:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10319:21:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", "id": 3390, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10342:36:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", "typeString": "literal_string \"ERC20: approve to the zero address\""}, "value": "ERC20: approve to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", "typeString": "literal_string \"ERC20: approve to the zero address\""}], "id": 3383, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10311:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3391, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10311:68:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3392, "nodeType": "ExpressionStatement", "src": "10311:68:19"}, {"expression": {"id": 3399, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"baseExpression": {"id": 3393, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2910, "src": "10390:11:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))"}}, "id": 3396, "indexExpression": {"id": 3394, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3366, "src": "10402:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10390:18:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3397, "indexExpression": {"id": 3395, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3368, "src": "10409:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10390:27:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 3398, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3370, "src": "10420:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10390:36:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3400, "nodeType": "ExpressionStatement", "src": "10390:36:19"}, {"eventCall": {"arguments": [{"id": 3402, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3366, "src": "10450:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3403, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3368, "src": "10457:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3404, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3370, "src": "10466:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3401, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3495, "src": "10441:8:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3405, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10441:32:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3406, "nodeType": "EmitStatement", "src": "10436:37:19"}]}, "documentation": {"id": 3364, "nodeType": "StructuredDocumentation", "src": "9693:412:19", "text": " @dev Sets `amount` 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."}, "id": 3408, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nameLocation": "10119:8:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3371, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3366, "mutability": "mutable", "name": "owner", "nameLocation": "10145:5:19", "nodeType": "VariableDeclaration", "scope": 3408, "src": "10137:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3365, "name": "address", "nodeType": "ElementaryTypeName", "src": "10137:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3368, "mutability": "mutable", "name": "spender", "nameLocation": "10168:7:19", "nodeType": "VariableDeclaration", "scope": 3408, "src": "10160:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3367, "name": "address", "nodeType": "ElementaryTypeName", "src": "10160:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3370, "mutability": "mutable", "name": "amount", "nameLocation": "10193:6:19", "nodeType": "VariableDeclaration", "scope": 3408, "src": "10185:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3369, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10185:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10127:78:19"}, "returnParameters": {"id": 3372, "nodeType": "ParameterList", "parameters": [], "src": "10223:0:19"}, "scope": 3474, "src": "10110:370:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 3450, "nodeType": "Block", "src": "10881:321:19", "statements": [{"assignments": [3419], "declarations": [{"constant": false, "id": 3419, "mutability": "mutable", "name": "currentAllowance", "nameLocation": "10899:16:19", "nodeType": "VariableDeclaration", "scope": 3450, "src": "10891:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3418, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10891:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 3424, "initialValue": {"arguments": [{"id": 3421, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3411, "src": "10928:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3422, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3413, "src": "10935:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 3420, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3030, "src": "10918:9:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view returns (uint256)"}}, "id": 3423, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10918:25:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "10891:52:19"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3431, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3425, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3419, "src": "10957:16:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"arguments": [{"id": 3428, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10982:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 3427, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10982:7:19", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}], "id": 3426, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "10977:4:19", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 3429, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10977:13:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint256", "typeString": "type(uint256)"}}, "id": 3430, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "10991:3:19", "memberName": "max", "nodeType": "MemberAccess", "src": "10977:17:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10957:37:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3449, "nodeType": "IfStatement", "src": "10953:243:19", "trueBody": {"id": 3448, "nodeType": "Block", "src": "10996:200:19", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3435, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3433, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3419, "src": "11018:16:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 3434, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3415, "src": "11038:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11018:26:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365", "id": 3436, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11046:31:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe", "typeString": "literal_string \"ERC20: insufficient allowance\""}, "value": "ERC20: insufficient allowance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe", "typeString": "literal_string \"ERC20: insufficient allowance\""}], "id": 3432, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11010:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3437, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11010:68:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3438, "nodeType": "ExpressionStatement", "src": "11010:68:19"}, {"id": 3447, "nodeType": "UncheckedBlock", "src": "11092:94:19", "statements": [{"expression": {"arguments": [{"id": 3440, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3411, "src": "11129:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3441, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3413, "src": "11136:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3444, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3442, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3419, "src": "11145:16:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 3443, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3415, "src": "11164:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11145:25:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3439, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3408, "src": "11120:8:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3445, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11120:51:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3446, "nodeType": "ExpressionStatement", "src": "11120:51:19"}]}]}}]}, "documentation": {"id": 3409, "nodeType": "StructuredDocumentation", "src": "10486:270:19", "text": " @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event."}, "id": 3451, "implemented": true, "kind": "function", "modifiers": [], "name": "_spendAllowance", "nameLocation": "10770:15:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3416, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3411, "mutability": "mutable", "name": "owner", "nameLocation": "10803:5:19", "nodeType": "VariableDeclaration", "scope": 3451, "src": "10795:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3410, "name": "address", "nodeType": "ElementaryTypeName", "src": "10795:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3413, "mutability": "mutable", "name": "spender", "nameLocation": "10826:7:19", "nodeType": "VariableDeclaration", "scope": 3451, "src": "10818:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3412, "name": "address", "nodeType": "ElementaryTypeName", "src": "10818:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3415, "mutability": "mutable", "name": "amount", "nameLocation": "10851:6:19", "nodeType": "VariableDeclaration", "scope": 3451, "src": "10843:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3414, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10843:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10785:78:19"}, "returnParameters": {"id": 3417, "nodeType": "ParameterList", "parameters": [], "src": "10881:0:19"}, "scope": 3474, "src": "10761:441:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 3461, "nodeType": "Block", "src": "11905:2:19", "statements": []}, "documentation": {"id": 3452, "nodeType": "StructuredDocumentation", "src": "11208:573:19", "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."}, "id": 3462, "implemented": true, "kind": "function", "modifiers": [], "name": "_beforeTokenTransfer", "nameLocation": "11795:20:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3459, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3454, "mutability": "mutable", "name": "from", "nameLocation": "11833:4:19", "nodeType": "VariableDeclaration", "scope": 3462, "src": "11825:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3453, "name": "address", "nodeType": "ElementaryTypeName", "src": "11825:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3456, "mutability": "mutable", "name": "to", "nameLocation": "11855:2:19", "nodeType": "VariableDeclaration", "scope": 3462, "src": "11847:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3455, "name": "address", "nodeType": "ElementaryTypeName", "src": "11847:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3458, "mutability": "mutable", "name": "amount", "nameLocation": "11875:6:19", "nodeType": "VariableDeclaration", "scope": 3462, "src": "11867:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3457, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11867:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "11815:72:19"}, "returnParameters": {"id": 3460, "nodeType": "ParameterList", "parameters": [], "src": "11905:0:19"}, "scope": 3474, "src": "11786:121:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 3472, "nodeType": "Block", "src": "12613:2:19", "statements": []}, "documentation": {"id": 3463, "nodeType": "StructuredDocumentation", "src": "11913:577:19", "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."}, "id": 3473, "implemented": true, "kind": "function", "modifiers": [], "name": "_afterTokenTransfer", "nameLocation": "12504:19:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3470, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3465, "mutability": "mutable", "name": "from", "nameLocation": "12541:4:19", "nodeType": "VariableDeclaration", "scope": 3473, "src": "12533:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3464, "name": "address", "nodeType": "ElementaryTypeName", "src": "12533:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3467, "mutability": "mutable", "name": "to", "nameLocation": "12563:2:19", "nodeType": "VariableDeclaration", "scope": 3473, "src": "12555:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3466, "name": "address", "nodeType": "ElementaryTypeName", "src": "12555:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3469, "mutability": "mutable", "name": "amount", "nameLocation": "12583:6:19", "nodeType": "VariableDeclaration", "scope": 3473, "src": "12575:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3468, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12575:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "12523:72:19"}, "returnParameters": {"id": 3471, "nodeType": "ParameterList", "parameters": [], "src": "12613:0:19"}, "scope": 3474, "src": "12495:120:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}], "scope": 3475, "src": "1403:11214:19", "usedErrors": []}], "src": "105:12513:19"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [3552]}, "id": 3553, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3476, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:20"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 3477, "nodeType": "StructuredDocumentation", "src": "131:70:20", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 3552, "linearizedBaseContracts": [3552], "name": "IERC20", "nameLocation": "212:6:20", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 3478, "nodeType": "StructuredDocumentation", "src": "225:158:20", "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": 3486, "name": "Transfer", "nameLocation": "394:8:20", "nodeType": "EventDefinition", "parameters": {"id": 3485, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3480, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:20", "nodeType": "VariableDeclaration", "scope": 3486, "src": "403:20:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3479, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3482, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:20", "nodeType": "VariableDeclaration", "scope": 3486, "src": "425:18:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3481, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3484, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:20", "nodeType": "VariableDeclaration", "scope": 3486, "src": "445:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3483, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:20"}, "src": "388:72:20"}, {"anonymous": false, "documentation": {"id": 3487, "nodeType": "StructuredDocumentation", "src": "466:148:20", "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": 3495, "name": "Approval", "nameLocation": "625:8:20", "nodeType": "EventDefinition", "parameters": {"id": 3494, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3489, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:20", "nodeType": "VariableDeclaration", "scope": 3495, "src": "634:21:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3488, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3491, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:20", "nodeType": "VariableDeclaration", "scope": 3495, "src": "657:23:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3490, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3493, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:20", "nodeType": "VariableDeclaration", "scope": 3495, "src": "682:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3492, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:20"}, "src": "619:78:20"}, {"documentation": {"id": 3496, "nodeType": "StructuredDocumentation", "src": "703:66:20", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 3501, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:20", "nodeType": "FunctionDefinition", "parameters": {"id": 3497, "nodeType": "ParameterList", "parameters": [], "src": "794:2:20"}, "returnParameters": {"id": 3500, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3499, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3501, "src": "820:7:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3498, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:20"}, "scope": 3552, "src": "774:55:20", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3502, "nodeType": "StructuredDocumentation", "src": "835:72:20", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 3509, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:20", "nodeType": "FunctionDefinition", "parameters": {"id": 3505, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3504, "mutability": "mutable", "name": "account", "nameLocation": "939:7:20", "nodeType": "VariableDeclaration", "scope": 3509, "src": "931:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3503, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:20"}, "returnParameters": {"id": 3508, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3507, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3509, "src": "971:7:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3506, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:20"}, "scope": 3552, "src": "912:68:20", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3510, "nodeType": "StructuredDocumentation", "src": "986:202:20", "text": " @dev Moves `amount` 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": 3519, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:20", "nodeType": "FunctionDefinition", "parameters": {"id": 3515, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3512, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:20", "nodeType": "VariableDeclaration", "scope": 3519, "src": "1211:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3511, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3514, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:20", "nodeType": "VariableDeclaration", "scope": 3519, "src": "1223:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3513, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:20"}, "returnParameters": {"id": 3518, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3517, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3519, "src": "1257:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3516, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:20"}, "scope": 3552, "src": "1193:70:20", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3520, "nodeType": "StructuredDocumentation", "src": "1269:264:20", "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": 3529, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:20", "nodeType": "FunctionDefinition", "parameters": {"id": 3525, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3522, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:20", "nodeType": "VariableDeclaration", "scope": 3529, "src": "1557:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3521, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3524, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:20", "nodeType": "VariableDeclaration", "scope": 3529, "src": "1572:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3523, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:20"}, "returnParameters": {"id": 3528, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3527, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3529, "src": "1612:7:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3526, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:20"}, "scope": 3552, "src": "1538:83:20", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3530, "nodeType": "StructuredDocumentation", "src": "1627:642:20", "text": " @dev Sets `amount` as the allowance of `spender` over the 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": 3539, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:20", "nodeType": "FunctionDefinition", "parameters": {"id": 3535, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3532, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:20", "nodeType": "VariableDeclaration", "scope": 3539, "src": "2291:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3531, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3534, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:20", "nodeType": "VariableDeclaration", "scope": 3539, "src": "2308:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3533, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:20"}, "returnParameters": {"id": 3538, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3537, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3539, "src": "2342:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3536, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:20"}, "scope": 3552, "src": "2274:74:20", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3540, "nodeType": "StructuredDocumentation", "src": "2354:287:20", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` 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": 3551, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:20", "nodeType": "FunctionDefinition", "parameters": {"id": 3547, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3542, "mutability": "mutable", "name": "from", "nameLocation": "2685:4:20", "nodeType": "VariableDeclaration", "scope": 3551, "src": "2677:12:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3541, "name": "address", "nodeType": "ElementaryTypeName", "src": "2677:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3544, "mutability": "mutable", "name": "to", "nameLocation": "2707:2:20", "nodeType": "VariableDeclaration", "scope": 3551, "src": "2699:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3543, "name": "address", "nodeType": "ElementaryTypeName", "src": "2699:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3546, "mutability": "mutable", "name": "amount", "nameLocation": "2727:6:20", "nodeType": "VariableDeclaration", "scope": 3551, "src": "2719:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3545, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2719:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:72:20"}, "returnParameters": {"id": 3550, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3549, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3551, "src": "2758:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3548, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2758:4:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2757:6:20"}, "scope": 3552, "src": "2646:118:20", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 3553, "src": "202:2564:20", "usedErrors": []}], "src": "106:2661:20"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", "exportedSymbols": {"IERC20": [3552], "IERC20Metadata": [3577]}, "id": 3578, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3554, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "110:23:21"}, {"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "../IERC20.sol", "id": 3555, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3578, "sourceUnit": 3553, "src": "135:23:21", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3557, "name": "IERC20", "nameLocations": ["305:6:21"], "nodeType": "IdentifierPath", "referencedDeclaration": 3552, "src": "305:6:21"}, "id": 3558, "nodeType": "InheritanceSpecifier", "src": "305:6:21"}], "canonicalName": "IERC20Metadata", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 3556, "nodeType": "StructuredDocumentation", "src": "160:116:21", "text": " @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"}, "fullyImplemented": false, "id": 3577, "linearizedBaseContracts": [3577, 3552], "name": "IERC20Metadata", "nameLocation": "287:14:21", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 3559, "nodeType": "StructuredDocumentation", "src": "318:54:21", "text": " @dev Returns the name of the token."}, "functionSelector": "06fdde03", "id": 3564, "implemented": false, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "386:4:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3560, "nodeType": "ParameterList", "parameters": [], "src": "390:2:21"}, "returnParameters": {"id": 3563, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3562, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3564, "src": "416:13:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3561, "name": "string", "nodeType": "ElementaryTypeName", "src": "416:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "415:15:21"}, "scope": 3577, "src": "377:54:21", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3565, "nodeType": "StructuredDocumentation", "src": "437:56:21", "text": " @dev Returns the symbol of the token."}, "functionSelector": "95d89b41", "id": 3570, "implemented": false, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "507:6:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3566, "nodeType": "ParameterList", "parameters": [], "src": "513:2:21"}, "returnParameters": {"id": 3569, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3568, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3570, "src": "539:13:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3567, "name": "string", "nodeType": "ElementaryTypeName", "src": "539:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "538:15:21"}, "scope": 3577, "src": "498:56:21", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3571, "nodeType": "StructuredDocumentation", "src": "560:65:21", "text": " @dev Returns the decimals places of the token."}, "functionSelector": "313ce567", "id": 3576, "implemented": false, "kind": "function", "modifiers": [], "name": "decimals", "nameLocation": "639:8:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3572, "nodeType": "ParameterList", "parameters": [], "src": "647:2:21"}, "returnParameters": {"id": 3575, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3574, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3576, "src": "673:5:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 3573, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "673:5:21", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "672:7:21"}, "scope": 3577, "src": "630:50:21", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 3578, "src": "277:405:21", "usedErrors": []}], "src": "110:573:21"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol", "exportedSymbols": {"Address": [5025], "Context": [5047], "ERC165": [5297], "ERC721": [4444], "IERC165": [5309], "IERC721": [4560], "IERC721Metadata": [4730], "IERC721Receiver": [4578], "Strings": [5273]}, "id": 4445, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3579, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "107:23:22"}, {"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", "file": "./IERC721.sol", "id": 3580, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 4561, "src": "132:23:22", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", "file": "./IERC721Receiver.sol", "id": 3581, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 4579, "src": "156:31:22", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", "file": "./extensions/IERC721Metadata.sol", "id": 3582, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 4731, "src": "188:42:22", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/utils/Address.sol", "file": "../../utils/Address.sol", "id": 3583, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 5026, "src": "231:33:22", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/utils/Context.sol", "file": "../../utils/Context.sol", "id": 3584, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 5048, "src": "265:33:22", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/utils/Strings.sol", "file": "../../utils/Strings.sol", "id": 3585, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 5274, "src": "299:33:22", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol", "file": "../../utils/introspection/ERC165.sol", "id": 3586, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 5298, "src": "333:46:22", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3588, "name": "Context", "nameLocations": ["647:7:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 5047, "src": "647:7:22"}, "id": 3589, "nodeType": "InheritanceSpecifier", "src": "647:7:22"}, {"baseName": {"id": 3590, "name": "ERC165", "nameLocations": ["656:6:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 5297, "src": "656:6:22"}, "id": 3591, "nodeType": "InheritanceSpecifier", "src": "656:6:22"}, {"baseName": {"id": 3592, "name": "IERC721", "nameLocations": ["664:7:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 4560, "src": "664:7:22"}, "id": 3593, "nodeType": "InheritanceSpecifier", "src": "664:7:22"}, {"baseName": {"id": 3594, "name": "IERC721Metadata", "nameLocations": ["673:15:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 4730, "src": "673:15:22"}, "id": 3595, "nodeType": "InheritanceSpecifier", "src": "673:15:22"}], "canonicalName": "ERC721", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 3587, "nodeType": "StructuredDocumentation", "src": "381:246:22", "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."}, "fullyImplemented": true, "id": 4444, "linearizedBaseContracts": [4444, 4730, 4560, 5297, 5309, 5047], "name": "ERC721", "nameLocation": "637:6:22", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 3598, "libraryName": {"id": 3596, "name": "Address", "nameLocations": ["701:7:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 5025, "src": "701:7:22"}, "nodeType": "UsingForDirective", "src": "695:26:22", "typeName": {"id": 3597, "name": "address", "nodeType": "ElementaryTypeName", "src": "713:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, {"global": false, "id": 3601, "libraryName": {"id": 3599, "name": "Strings", "nameLocations": ["732:7:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 5273, "src": "732:7:22"}, "nodeType": "UsingForDirective", "src": "726:26:22", "typeName": {"id": 3600, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "744:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"constant": false, "id": 3603, "mutability": "mutable", "name": "_name", "nameLocation": "791:5:22", "nodeType": "VariableDeclaration", "scope": 4444, "src": "776:20:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 3602, "name": "string", "nodeType": "ElementaryTypeName", "src": "776:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"constant": false, "id": 3605, "mutability": "mutable", "name": "_symbol", "nameLocation": "838:7:22", "nodeType": "VariableDeclaration", "scope": 4444, "src": "823:22:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 3604, "name": "string", "nodeType": "ElementaryTypeName", "src": "823:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"constant": false, "id": 3609, "mutability": "mutable", "name": "_owners", "nameLocation": "934:7:22", "nodeType": "VariableDeclaration", "scope": 4444, "src": "898:43:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "typeName": {"id": 3608, "keyType": {"id": 3606, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "906:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "898:27:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "valueType": {"id": 3607, "name": "address", "nodeType": "ElementaryTypeName", "src": "917:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "private"}, {"constant": false, "id": 3613, "mutability": "mutable", "name": "_balances", "nameLocation": "1028:9:22", "nodeType": "VariableDeclaration", "scope": 4444, "src": "992:45:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "typeName": {"id": 3612, "keyType": {"id": 3610, "name": "address", "nodeType": "ElementaryTypeName", "src": "1000:7:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "992:27:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "valueType": {"id": 3611, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1011:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, "visibility": "private"}, {"constant": false, "id": 3617, "mutability": "mutable", "name": "_tokenApprovals", "nameLocation": "1129:15:22", "nodeType": "VariableDeclaration", "scope": 4444, "src": "1093:51:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "typeName": {"id": 3616, "keyType": {"id": 3614, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1101:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "1093:27:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "valueType": {"id": 3615, "name": "address", "nodeType": "ElementaryTypeName", "src": "1112:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "private"}, {"constant": false, "id": 3623, "mutability": "mutable", "name": "_operatorApprovals", "nameLocation": "1252:18:22", "nodeType": "VariableDeclaration", "scope": 4444, "src": "1199:71:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}, "typeName": {"id": 3622, "keyType": {"id": 3618, "name": "address", "nodeType": "ElementaryTypeName", "src": "1207:7:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1199:44:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}, "valueType": {"id": 3621, "keyType": {"id": 3619, "name": "address", "nodeType": "ElementaryTypeName", "src": "1226:7:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1218:24:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}, "valueType": {"id": 3620, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1237:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}}}, "visibility": "private"}, {"body": {"id": 3639, "nodeType": "Block", "src": "1446:57:22", "statements": [{"expression": {"id": 3633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3631, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3603, "src": "1456:5:22", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 3632, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3626, "src": "1464:5:22", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1456:13:22", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 3634, "nodeType": "ExpressionStatement", "src": "1456:13:22"}, {"expression": {"id": 3637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3635, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3605, "src": "1479:7:22", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 3636, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3628, "src": "1489:7:22", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1479:17:22", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 3638, "nodeType": "ExpressionStatement", "src": "1479:17:22"}]}, "documentation": {"id": 3624, "nodeType": "StructuredDocumentation", "src": "1277:108:22", "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."}, "id": 3640, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 3629, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3626, "mutability": "mutable", "name": "name_", "nameLocation": "1416:5:22", "nodeType": "VariableDeclaration", "scope": 3640, "src": "1402:19:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3625, "name": "string", "nodeType": "ElementaryTypeName", "src": "1402:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 3628, "mutability": "mutable", "name": "symbol_", "nameLocation": "1437:7:22", "nodeType": "VariableDeclaration", "scope": 3640, "src": "1423:21:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3627, "name": "string", "nodeType": "ElementaryTypeName", "src": "1423:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1401:44:22"}, "returnParameters": {"id": 3630, "nodeType": "ParameterList", "parameters": [], "src": "1446:0:22"}, "scope": 4444, "src": "1390:113:22", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"baseFunctions": [5296, 5308], "body": {"id": 3670, "nodeType": "Block", "src": "1678:192:22", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 3668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 3663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 3656, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3651, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3643, "src": "1707:11:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 3653, "name": "IERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4560, "src": "1727:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721_$4560_$", "typeString": "type(contract IERC721)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC721_$4560_$", "typeString": "type(contract IERC721)"}], "id": 3652, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1722:4:22", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 3654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1722:13:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$4560", "typeString": "type(contract IERC721)"}}, "id": 3655, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1736:11:22", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1722:25:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "1707:40:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 3662, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3657, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3643, "src": "1763:11:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 3659, "name": "IERC721Metadata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4730, "src": "1783:15:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$4730_$", "typeString": "type(contract IERC721Metadata)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$4730_$", "typeString": "type(contract IERC721Metadata)"}], "id": 3658, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1778:4:22", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 3660, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1778:21:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$4730", "typeString": "type(contract IERC721Metadata)"}}, "id": 3661, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1800:11:22", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1778:33:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "1763:48:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1707:104:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 3666, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3643, "src": "1851:11:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"id": 3664, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "1827:5:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_ERC721_$4444_$", "typeString": "type(contract super ERC721)"}}, "id": 3665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1833:17:22", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 5296, "src": "1827:23:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function (bytes4) view returns (bool)"}}, "id": 3667, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1827:36:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1707:156:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 3650, "id": 3669, "nodeType": "Return", "src": "1688:175:22"}]}, "documentation": {"id": 3641, "nodeType": "StructuredDocumentation", "src": "1509:56:22", "text": " @dev See {IERC165-supportsInterface}."}, "functionSelector": "01ffc9a7", "id": 3671, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "1579:17:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3647, "nodeType": "OverrideSpecifier", "overrides": [{"id": 3645, "name": "ERC165", "nameLocations": ["1646:6:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 5297, "src": "1646:6:22"}, {"id": 3646, "name": "IERC165", "nameLocations": ["1654:7:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 5309, "src": "1654:7:22"}], "src": "1637:25:22"}, "parameters": {"id": 3644, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3643, "mutability": "mutable", "name": "interfaceId", "nameLocation": "1604:11:22", "nodeType": "VariableDeclaration", "scope": 3671, "src": "1597:18:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 3642, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1597:6:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "1596:20:22"}, "returnParameters": {"id": 3650, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3649, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3671, "src": "1672:4:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3648, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1672:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1671:6:22"}, "scope": 4444, "src": "1570:300:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4485], "body": {"id": 3694, "nodeType": "Block", "src": "2010:123:22", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3686, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3681, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3674, "src": "2028:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3684, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2045:1:22", "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": 3683, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2037:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3682, "name": "address", "nodeType": "ElementaryTypeName", "src": "2037:7:22", "typeDescriptions": {}}}, "id": 3685, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2037:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2028:19:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572", "id": 3687, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2049:43:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159", "typeString": "literal_string \"ERC721: address zero is not a valid owner\""}, "value": "ERC721: address zero is not a valid owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159", "typeString": "literal_string \"ERC721: address zero is not a valid owner\""}], "id": 3680, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2020:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3688, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2020:73:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3689, "nodeType": "ExpressionStatement", "src": "2020:73:22"}, {"expression": {"baseExpression": {"id": 3690, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3613, "src": "2110:9:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3692, "indexExpression": {"id": 3691, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3674, "src": "2120:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2110:16:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 3679, "id": 3693, "nodeType": "Return", "src": "2103:23:22"}]}, "documentation": {"id": 3672, "nodeType": "StructuredDocumentation", "src": "1876:48:22", "text": " @dev See {IERC721-balanceOf}."}, "functionSelector": "70a08231", "id": 3695, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "1938:9:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3676, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1983:8:22"}, "parameters": {"id": 3675, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3674, "mutability": "mutable", "name": "owner", "nameLocation": "1956:5:22", "nodeType": "VariableDeclaration", "scope": 3695, "src": "1948:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3673, "name": "address", "nodeType": "ElementaryTypeName", "src": "1948:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1947:15:22"}, "returnParameters": {"id": 3679, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3678, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3695, "src": "2001:7:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3677, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2001:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2000:9:22"}, "scope": 4444, "src": "1929:204:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4493], "body": {"id": 3722, "nodeType": "Block", "src": "2271:137:22", "statements": [{"assignments": [3705], "declarations": [{"constant": false, "id": 3705, "mutability": "mutable", "name": "owner", "nameLocation": "2289:5:22", "nodeType": "VariableDeclaration", "scope": 3722, "src": "2281:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3704, "name": "address", "nodeType": "ElementaryTypeName", "src": "2281:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3709, "initialValue": {"baseExpression": {"id": 3706, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "2297:7:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 3708, "indexExpression": {"id": 3707, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3698, "src": "2305:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2297:16:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2281:32:22"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3716, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3711, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3705, "src": "2331:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3714, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2348:1:22", "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": 3713, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2340:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3712, "name": "address", "nodeType": "ElementaryTypeName", "src": "2340:7:22", "typeDescriptions": {}}}, "id": 3715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2340:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2331:19:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20696e76616c696420746f6b656e204944", "id": 3717, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2352:26:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}, "value": "ERC721: invalid token ID"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}], "id": 3710, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2323:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3718, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2323:56:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3719, "nodeType": "ExpressionStatement", "src": "2323:56:22"}, {"expression": {"id": 3720, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3705, "src": "2396:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 3703, "id": 3721, "nodeType": "Return", "src": "2389:12:22"}]}, "documentation": {"id": 3696, "nodeType": "StructuredDocumentation", "src": "2139:46:22", "text": " @dev See {IERC721-ownerOf}."}, "functionSelector": "6352211e", "id": 3723, "implemented": true, "kind": "function", "modifiers": [], "name": "ownerOf", "nameLocation": "2199:7:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3700, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2244:8:22"}, "parameters": {"id": 3699, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3698, "mutability": "mutable", "name": "tokenId", "nameLocation": "2215:7:22", "nodeType": "VariableDeclaration", "scope": 3723, "src": "2207:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3697, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2207:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2206:17:22"}, "returnParameters": {"id": 3703, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3702, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3723, "src": "2262:7:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3701, "name": "address", "nodeType": "ElementaryTypeName", "src": "2262:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2261:9:22"}, "scope": 4444, "src": "2190:218:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4715], "body": {"id": 3732, "nodeType": "Block", "src": "2539:29:22", "statements": [{"expression": {"id": 3730, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3603, "src": "2556:5:22", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 3729, "id": 3731, "nodeType": "Return", "src": "2549:12:22"}]}, "documentation": {"id": 3724, "nodeType": "StructuredDocumentation", "src": "2414:51:22", "text": " @dev See {IERC721Metadata-name}."}, "functionSelector": "06fdde03", "id": 3733, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "2479:4:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3726, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2506:8:22"}, "parameters": {"id": 3725, "nodeType": "ParameterList", "parameters": [], "src": "2483:2:22"}, "returnParameters": {"id": 3729, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3728, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3733, "src": "2524:13:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3727, "name": "string", "nodeType": "ElementaryTypeName", "src": "2524:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2523:15:22"}, "scope": 4444, "src": "2470:98:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4721], "body": {"id": 3742, "nodeType": "Block", "src": "2703:31:22", "statements": [{"expression": {"id": 3740, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3605, "src": "2720:7:22", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 3739, "id": 3741, "nodeType": "Return", "src": "2713:14:22"}]}, "documentation": {"id": 3734, "nodeType": "StructuredDocumentation", "src": "2574:53:22", "text": " @dev See {IERC721Metadata-symbol}."}, "functionSelector": "95d89b41", "id": 3743, "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "2641:6:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3736, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2670:8:22"}, "parameters": {"id": 3735, "nodeType": "ParameterList", "parameters": [], "src": "2647:2:22"}, "returnParameters": {"id": 3739, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3738, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3743, "src": "2688:13:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3737, "name": "string", "nodeType": "ElementaryTypeName", "src": "2688:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2687:15:22"}, "scope": 4444, "src": "2632:102:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4729], "body": {"id": 3781, "nodeType": "Block", "src": "2888:188:22", "statements": [{"expression": {"arguments": [{"id": 3753, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3746, "src": "2913:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3752, "name": "_requireMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4359, "src": "2898:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view"}}, "id": 3754, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2898:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3755, "nodeType": "ExpressionStatement", "src": "2898:23:22"}, {"assignments": [3757], "declarations": [{"constant": false, "id": 3757, "mutability": "mutable", "name": "baseURI", "nameLocation": "2946:7:22", "nodeType": "VariableDeclaration", "scope": 3781, "src": "2932:21:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3756, "name": "string", "nodeType": "ElementaryTypeName", "src": "2932:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 3760, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 3758, "name": "_baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3791, "src": "2956:8:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", "typeString": "function () view returns (string memory)"}}, "id": 3759, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2956:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2932:34:22"}, {"expression": {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3767, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 3763, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3757, "src": "2989:7:22", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3762, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2983:5:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 3761, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2983:5:22", "typeDescriptions": {}}}, "id": 3764, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2983:14:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3765, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2998:6:22", "memberName": "length", "nodeType": "MemberAccess", "src": "2983:21:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3007:1:22", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2983:25:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"hexValue": "", "id": 3778, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3067:2:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}, "id": 3779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "2983:86:22", "trueExpression": {"arguments": [{"arguments": [{"id": 3772, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3757, "src": "3035:7:22", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 3773, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3746, "src": "3044:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3052:8:22", "memberName": "toString", "nodeType": "MemberAccess", "referencedDeclaration": 5135, "src": "3044:16:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$", "typeString": "function (uint256) pure returns (string memory)"}}, "id": 3775, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3044:18:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "expression": {"id": 3770, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "3018:3:22", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 3771, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "3022:12:22", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "3018:16:22", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 3776, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3018:45:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 3769, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3011:6:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 3768, "name": "string", "nodeType": "ElementaryTypeName", "src": "3011:6:22", "typeDescriptions": {}}}, "id": 3777, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3011:53:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 3751, "id": 3780, "nodeType": "Return", "src": "2976:93:22"}]}, "documentation": {"id": 3744, "nodeType": "StructuredDocumentation", "src": "2740:55:22", "text": " @dev See {IERC721Metadata-tokenURI}."}, "functionSelector": "c87b56dd", "id": 3782, "implemented": true, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "2809:8:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3748, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2855:8:22"}, "parameters": {"id": 3747, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3746, "mutability": "mutable", "name": "tokenId", "nameLocation": "2826:7:22", "nodeType": "VariableDeclaration", "scope": 3782, "src": "2818:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3745, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2818:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2817:17:22"}, "returnParameters": {"id": 3751, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3750, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3782, "src": "2873:13:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3749, "name": "string", "nodeType": "ElementaryTypeName", "src": "2873:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2872:15:22"}, "scope": 4444, "src": "2800:276:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 3790, "nodeType": "Block", "src": "3384:26:22", "statements": [{"expression": {"hexValue": "", "id": 3788, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3401:2:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}, "functionReturnParameters": 3787, "id": 3789, "nodeType": "Return", "src": "3394:9:22"}]}, "documentation": {"id": 3783, "nodeType": "StructuredDocumentation", "src": "3082:231:22", "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."}, "id": 3791, "implemented": true, "kind": "function", "modifiers": [], "name": "_baseURI", "nameLocation": "3327:8:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3784, "nodeType": "ParameterList", "parameters": [], "src": "3335:2:22"}, "returnParameters": {"id": 3787, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3786, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3791, "src": "3369:13:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3785, "name": "string", "nodeType": "ElementaryTypeName", "src": "3369:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3368:15:22"}, "scope": 4444, "src": "3318:92:22", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"baseFunctions": [4533], "body": {"id": 3833, "nodeType": "Block", "src": "3537:337:22", "statements": [{"assignments": [3801], "declarations": [{"constant": false, "id": 3801, "mutability": "mutable", "name": "owner", "nameLocation": "3555:5:22", "nodeType": "VariableDeclaration", "scope": 3833, "src": "3547:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3800, "name": "address", "nodeType": "ElementaryTypeName", "src": "3547:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3806, "initialValue": {"arguments": [{"id": 3804, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3796, "src": "3578:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 3802, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4444, "src": "3563:6:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721_$4444_$", "typeString": "type(contract ERC721)"}}, "id": 3803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3570:7:22", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 3723, "src": "3563:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 3805, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3563:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "3547:39:22"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3810, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3808, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3794, "src": "3604:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 3809, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3801, "src": "3610:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3604:11:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572", "id": 3811, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3617:35:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", "typeString": "literal_string \"ERC721: approval to current owner\""}, "value": "ERC721: approval to current owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", "typeString": "literal_string \"ERC721: approval to current owner\""}], "id": 3807, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3596:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3812, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3596:57:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3813, "nodeType": "ExpressionStatement", "src": "3596:57:22"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 3824, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 3815, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "3685:10:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3816, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3685:12:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 3817, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3801, "src": "3701:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3685:21:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 3820, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3801, "src": "3727:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [], "expression": {"argumentTypes": [], "id": 3821, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "3734:10:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3822, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3734:12:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 3819, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3887, "src": "3710:16:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)"}}, "id": 3823, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3710:37:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3685:62:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c", "id": 3825, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3761:64:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304", "typeString": "literal_string \"ERC721: approve caller is not token owner nor approved for all\""}, "value": "ERC721: approve caller is not token owner nor approved for all"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304", "typeString": "literal_string \"ERC721: approve caller is not token owner nor approved for all\""}], "id": 3814, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3664:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3826, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3664:171:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3827, "nodeType": "ExpressionStatement", "src": "3664:171:22"}, {"expression": {"arguments": [{"id": 3829, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3794, "src": "3855:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3830, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3796, "src": "3859:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3828, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4313, "src": "3846:8:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 3831, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3846:21:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3832, "nodeType": "ExpressionStatement", "src": "3846:21:22"}]}, "documentation": {"id": 3792, "nodeType": "StructuredDocumentation", "src": "3416:46:22", "text": " @dev See {IERC721-approve}."}, "functionSelector": "095ea7b3", "id": 3834, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "3476:7:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3798, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3528:8:22"}, "parameters": {"id": 3797, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3794, "mutability": "mutable", "name": "to", "nameLocation": "3492:2:22", "nodeType": "VariableDeclaration", "scope": 3834, "src": "3484:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3793, "name": "address", "nodeType": "ElementaryTypeName", "src": "3484:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3796, "mutability": "mutable", "name": "tokenId", "nameLocation": "3504:7:22", "nodeType": "VariableDeclaration", "scope": 3834, "src": "3496:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3795, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3496:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3483:29:22"}, "returnParameters": {"id": 3799, "nodeType": "ParameterList", "parameters": [], "src": "3537:0:22"}, "scope": 4444, "src": "3467:407:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [4549], "body": {"id": 3851, "nodeType": "Block", "src": "4020:82:22", "statements": [{"expression": {"arguments": [{"id": 3844, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3837, "src": "4045:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3843, "name": "_requireMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4359, "src": "4030:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view"}}, "id": 3845, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4030:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3846, "nodeType": "ExpressionStatement", "src": "4030:23:22"}, {"expression": {"baseExpression": {"id": 3847, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3617, "src": "4071:15:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 3849, "indexExpression": {"id": 3848, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3837, "src": "4087:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4071:24:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 3842, "id": 3850, "nodeType": "Return", "src": "4064:31:22"}]}, "documentation": {"id": 3835, "nodeType": "StructuredDocumentation", "src": "3880:50:22", "text": " @dev See {IERC721-getApproved}."}, "functionSelector": "081812fc", "id": 3852, "implemented": true, "kind": "function", "modifiers": [], "name": "getApproved", "nameLocation": "3944:11:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3839, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3993:8:22"}, "parameters": {"id": 3838, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3837, "mutability": "mutable", "name": "tokenId", "nameLocation": "3964:7:22", "nodeType": "VariableDeclaration", "scope": 3852, "src": "3956:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3836, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3956:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3955:17:22"}, "returnParameters": {"id": 3842, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3841, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3852, "src": "4011:7:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3840, "name": "address", "nodeType": "ElementaryTypeName", "src": "4011:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4010:9:22"}, "scope": 4444, "src": "3935:167:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4541], "body": {"id": 3868, "nodeType": "Block", "src": "4253:69:22", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 3862, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "4282:10:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3863, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4282:12:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3864, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3855, "src": "4296:8:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3865, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3857, "src": "4306:8:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 3861, "name": "_setApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4345, "src": "4263:18:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)"}}, "id": 3866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4263:52:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3867, "nodeType": "ExpressionStatement", "src": "4263:52:22"}]}, "documentation": {"id": 3853, "nodeType": "StructuredDocumentation", "src": "4108:56:22", "text": " @dev See {IERC721-setApprovalForAll}."}, "functionSelector": "a22cb465", "id": 3869, "implemented": true, "kind": "function", "modifiers": [], "name": "setApprovalForAll", "nameLocation": "4178:17:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3859, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4244:8:22"}, "parameters": {"id": 3858, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3855, "mutability": "mutable", "name": "operator", "nameLocation": "4204:8:22", "nodeType": "VariableDeclaration", "scope": 3869, "src": "4196:16:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3854, "name": "address", "nodeType": "ElementaryTypeName", "src": "4196:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3857, "mutability": "mutable", "name": "approved", "nameLocation": "4219:8:22", "nodeType": "VariableDeclaration", "scope": 3869, "src": "4214:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3856, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4214:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4195:33:22"}, "returnParameters": {"id": 3860, "nodeType": "ParameterList", "parameters": [], "src": "4253:0:22"}, "scope": 4444, "src": "4169:153:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [4559], "body": {"id": 3886, "nodeType": "Block", "src": "4491:59:22", "statements": [{"expression": {"baseExpression": {"baseExpression": {"id": 3880, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3623, "src": "4508:18:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}}, "id": 3882, "indexExpression": {"id": 3881, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3872, "src": "4527:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4508:25:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 3884, "indexExpression": {"id": 3883, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "4534:8:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4508:35:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 3879, "id": 3885, "nodeType": "Return", "src": "4501:42:22"}]}, "documentation": {"id": 3870, "nodeType": "StructuredDocumentation", "src": "4328:55:22", "text": " @dev See {IERC721-isApprovedForAll}."}, "functionSelector": "e985e9c5", "id": 3887, "implemented": true, "kind": "function", "modifiers": [], "name": "isApprovedForAll", "nameLocation": "4397:16:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3876, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4467:8:22"}, "parameters": {"id": 3875, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3872, "mutability": "mutable", "name": "owner", "nameLocation": "4422:5:22", "nodeType": "VariableDeclaration", "scope": 3887, "src": "4414:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3871, "name": "address", "nodeType": "ElementaryTypeName", "src": "4414:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3874, "mutability": "mutable", "name": "operator", "nameLocation": "4437:8:22", "nodeType": "VariableDeclaration", "scope": 3887, "src": "4429:16:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3873, "name": "address", "nodeType": "ElementaryTypeName", "src": "4429:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4413:33:22"}, "returnParameters": {"id": 3879, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3878, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3887, "src": "4485:4:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3877, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4485:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4484:6:22"}, "scope": 4444, "src": "4388:162:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4525], "body": {"id": 3913, "nodeType": "Block", "src": "4731:208:22", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 3900, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "4820:10:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3901, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4820:12:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3902, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3894, "src": "4834:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3899, "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4044, "src": "4801:18:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)"}}, "id": 3903, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4801:41:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564", "id": 3904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4844:48:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}, "value": "ERC721: caller is not token owner nor approved"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}], "id": 3898, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4793:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3905, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4793:100:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3906, "nodeType": "ExpressionStatement", "src": "4793:100:22"}, {"expression": {"arguments": [{"id": 3908, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3890, "src": "4914:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3909, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3892, "src": "4920:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3910, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3894, "src": "4924:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3907, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4289, "src": "4904:9:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3911, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4904:28:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3912, "nodeType": "ExpressionStatement", "src": "4904:28:22"}]}, "documentation": {"id": 3888, "nodeType": "StructuredDocumentation", "src": "4556:51:22", "text": " @dev See {IERC721-transferFrom}."}, "functionSelector": "23b872dd", "id": 3914, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "4621:12:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3896, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4722:8:22"}, "parameters": {"id": 3895, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3890, "mutability": "mutable", "name": "from", "nameLocation": "4651:4:22", "nodeType": "VariableDeclaration", "scope": 3914, "src": "4643:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3889, "name": "address", "nodeType": "ElementaryTypeName", "src": "4643:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3892, "mutability": "mutable", "name": "to", "nameLocation": "4673:2:22", "nodeType": "VariableDeclaration", "scope": 3914, "src": "4665:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3891, "name": "address", "nodeType": "ElementaryTypeName", "src": "4665:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3894, "mutability": "mutable", "name": "tokenId", "nameLocation": "4693:7:22", "nodeType": "VariableDeclaration", "scope": 3914, "src": "4685:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3893, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4685:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4633:73:22"}, "returnParameters": {"id": 3897, "nodeType": "ParameterList", "parameters": [], "src": "4731:0:22"}, "scope": 4444, "src": "4612:327:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [4515], "body": {"id": 3932, "nodeType": "Block", "src": "5128:56:22", "statements": [{"expression": {"arguments": [{"id": 3926, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3917, "src": "5155:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3927, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3919, "src": "5161:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3928, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3921, "src": "5165:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "", "id": 3929, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5174:2:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "id": 3925, "name": "safeTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [3933, 3963], "referencedDeclaration": 3963, "src": "5138:16:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)"}}, "id": 3930, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5138:39:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3931, "nodeType": "ExpressionStatement", "src": "5138:39:22"}]}, "documentation": {"id": 3915, "nodeType": "StructuredDocumentation", "src": "4945:55:22", "text": " @dev See {IERC721-safeTransferFrom}."}, "functionSelector": "42842e0e", "id": 3933, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "5014:16:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3923, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5119:8:22"}, "parameters": {"id": 3922, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3917, "mutability": "mutable", "name": "from", "nameLocation": "5048:4:22", "nodeType": "VariableDeclaration", "scope": 3933, "src": "5040:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3916, "name": "address", "nodeType": "ElementaryTypeName", "src": "5040:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3919, "mutability": "mutable", "name": "to", "nameLocation": "5070:2:22", "nodeType": "VariableDeclaration", "scope": 3933, "src": "5062:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3918, "name": "address", "nodeType": "ElementaryTypeName", "src": "5062:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3921, "mutability": "mutable", "name": "tokenId", "nameLocation": "5090:7:22", "nodeType": "VariableDeclaration", "scope": 3933, "src": "5082:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3920, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5082:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5030:73:22"}, "returnParameters": {"id": 3924, "nodeType": "ParameterList", "parameters": [], "src": "5128:0:22"}, "scope": 4444, "src": "5005:179:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [4505], "body": {"id": 3962, "nodeType": "Block", "src": "5400:165:22", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 3948, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "5437:10:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3949, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5437:12:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3950, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3940, "src": "5451:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3947, "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4044, "src": "5418:18:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)"}}, "id": 3951, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5418:41:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564", "id": 3952, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5461:48:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}, "value": "ERC721: caller is not token owner nor approved"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}], "id": 3946, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5410:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3953, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5410:100:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3954, "nodeType": "ExpressionStatement", "src": "5410:100:22"}, {"expression": {"arguments": [{"id": 3956, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3936, "src": "5534:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3957, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3938, "src": "5540:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3958, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3940, "src": "5544:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 3959, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3942, "src": "5553:4:22", "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"}], "id": 3955, "name": "_safeTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3992, "src": "5520:13:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)"}}, "id": 3960, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5520:38:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3961, "nodeType": "ExpressionStatement", "src": "5520:38:22"}]}, "documentation": {"id": 3934, "nodeType": "StructuredDocumentation", "src": "5190:55:22", "text": " @dev See {IERC721-safeTransferFrom}."}, "functionSelector": "b88d4fde", "id": 3963, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "5259:16:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3944, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5391:8:22"}, "parameters": {"id": 3943, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3936, "mutability": "mutable", "name": "from", "nameLocation": "5293:4:22", "nodeType": "VariableDeclaration", "scope": 3963, "src": "5285:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3935, "name": "address", "nodeType": "ElementaryTypeName", "src": "5285:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3938, "mutability": "mutable", "name": "to", "nameLocation": "5315:2:22", "nodeType": "VariableDeclaration", "scope": 3963, "src": "5307:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3937, "name": "address", "nodeType": "ElementaryTypeName", "src": "5307:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3940, "mutability": "mutable", "name": "tokenId", "nameLocation": "5335:7:22", "nodeType": "VariableDeclaration", "scope": 3963, "src": "5327:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3939, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5327:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 3942, "mutability": "mutable", "name": "data", "nameLocation": "5365:4:22", "nodeType": "VariableDeclaration", "scope": 3963, "src": "5352:17:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3941, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5352:5:22", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5275:100:22"}, "returnParameters": {"id": 3945, "nodeType": "ParameterList", "parameters": [], "src": "5400:0:22"}, "scope": 4444, "src": "5250:315:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 3991, "nodeType": "Block", "src": "6566:165:22", "statements": [{"expression": {"arguments": [{"id": 3976, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3966, "src": "6586:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3977, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3968, "src": "6592:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3978, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3970, "src": "6596:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3975, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4289, "src": "6576:9:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3979, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6576:28:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3980, "nodeType": "ExpressionStatement", "src": "6576:28:22"}, {"expression": {"arguments": [{"arguments": [{"id": 3983, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3966, "src": "6645:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3984, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3968, "src": "6651:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3985, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3970, "src": "6655:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 3986, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3972, "src": "6664:4:22", "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"}], "id": 3982, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4421, "src": "6622:22:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)"}}, "id": 3987, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6622:47:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 3988, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6671:52:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}, "value": "ERC721: transfer to non ERC721Receiver implementer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}], "id": 3981, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6614:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3989, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6614:110:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3990, "nodeType": "ExpressionStatement", "src": "6614:110:22"}]}, "documentation": {"id": 3964, "nodeType": "StructuredDocumentation", "src": "5571:850:22", "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "id": 3992, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeTransfer", "nameLocation": "6435:13:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3973, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3966, "mutability": "mutable", "name": "from", "nameLocation": "6466:4:22", "nodeType": "VariableDeclaration", "scope": 3992, "src": "6458:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3965, "name": "address", "nodeType": "ElementaryTypeName", "src": "6458:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3968, "mutability": "mutable", "name": "to", "nameLocation": "6488:2:22", "nodeType": "VariableDeclaration", "scope": 3992, "src": "6480:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3967, "name": "address", "nodeType": "ElementaryTypeName", "src": "6480:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3970, "mutability": "mutable", "name": "tokenId", "nameLocation": "6508:7:22", "nodeType": "VariableDeclaration", "scope": 3992, "src": "6500:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3969, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6500:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 3972, "mutability": "mutable", "name": "data", "nameLocation": "6538:4:22", "nodeType": "VariableDeclaration", "scope": 3992, "src": "6525:17:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3971, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6525:5:22", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6448:100:22"}, "returnParameters": {"id": 3974, "nodeType": "ParameterList", "parameters": [], "src": "6566:0:22"}, "scope": 4444, "src": "6426:305:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4009, "nodeType": "Block", "src": "7105:54:22", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 4000, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "7122:7:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 4002, "indexExpression": {"id": 4001, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3995, "src": "7130:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7122:16:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 4005, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7150:1:22", "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": 4004, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7142:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4003, "name": "address", "nodeType": "ElementaryTypeName", "src": "7142:7:22", "typeDescriptions": {}}}, "id": 4006, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7142:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7122:30:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 3999, "id": 4008, "nodeType": "Return", "src": "7115:37:22"}]}, "documentation": {"id": 3993, "nodeType": "StructuredDocumentation", "src": "6737:292:22", "text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."}, "id": 4010, "implemented": true, "kind": "function", "modifiers": [], "name": "_exists", "nameLocation": "7043:7:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3996, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3995, "mutability": "mutable", "name": "tokenId", "nameLocation": "7059:7:22", "nodeType": "VariableDeclaration", "scope": 4010, "src": "7051:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3994, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7051:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7050:17:22"}, "returnParameters": {"id": 3999, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3998, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4010, "src": "7099:4:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3997, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7099:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "7098:6:22"}, "scope": 4444, "src": "7034:125:22", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 4043, "nodeType": "Block", "src": "7416:162:22", "statements": [{"assignments": [4021], "declarations": [{"constant": false, "id": 4021, "mutability": "mutable", "name": "owner", "nameLocation": "7434:5:22", "nodeType": "VariableDeclaration", "scope": 4043, "src": "7426:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4020, "name": "address", "nodeType": "ElementaryTypeName", "src": "7426:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 4026, "initialValue": {"arguments": [{"id": 4024, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4015, "src": "7457:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 4022, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4444, "src": "7442:6:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721_$4444_$", "typeString": "type(contract ERC721)"}}, "id": 4023, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7449:7:22", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 3723, "src": "7442:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 4025, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7442:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "7426:39:22"}, {"expression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 4040, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 4034, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 4027, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4013, "src": "7483:7:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 4028, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4021, "src": "7494:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7483:16:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 4031, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4021, "src": "7520:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4032, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4013, "src": "7527:7:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 4030, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3887, "src": "7503:16:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)"}}, "id": 4033, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7503:32:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7483:52:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4039, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 4036, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4015, "src": "7551:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4035, "name": "getApproved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3852, "src": "7539:11:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 4037, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7539:20:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 4038, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4013, "src": "7563:7:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7539:31:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7483:87:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 4041, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "7482:89:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 4019, "id": 4042, "nodeType": "Return", "src": "7475:96:22"}]}, "documentation": {"id": 4011, "nodeType": "StructuredDocumentation", "src": "7165:147:22", "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."}, "id": 4044, "implemented": true, "kind": "function", "modifiers": [], "name": "_isApprovedOrOwner", "nameLocation": "7326:18:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4016, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4013, "mutability": "mutable", "name": "spender", "nameLocation": "7353:7:22", "nodeType": "VariableDeclaration", "scope": 4044, "src": "7345:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4012, "name": "address", "nodeType": "ElementaryTypeName", "src": "7345:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4015, "mutability": "mutable", "name": "tokenId", "nameLocation": "7370:7:22", "nodeType": "VariableDeclaration", "scope": 4044, "src": "7362:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4014, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7362:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7344:34:22"}, "returnParameters": {"id": 4019, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4018, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4044, "src": "7410:4:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4017, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7410:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "7409:6:22"}, "scope": 4444, "src": "7317:261:22", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 4058, "nodeType": "Block", "src": "7973:43:22", "statements": [{"expression": {"arguments": [{"id": 4053, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4047, "src": "7993:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4054, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4049, "src": "7997:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "", "id": 4055, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8006:2:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "id": 4052, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [4059, 4088], "referencedDeclaration": 4088, "src": "7983:9:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,uint256,bytes memory)"}}, "id": 4056, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7983:26:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4057, "nodeType": "ExpressionStatement", "src": "7983:26:22"}]}, "documentation": {"id": 4045, "nodeType": "StructuredDocumentation", "src": "7584:319:22", "text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "id": 4059, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "7917:9:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4047, "mutability": "mutable", "name": "to", "nameLocation": "7935:2:22", "nodeType": "VariableDeclaration", "scope": 4059, "src": "7927:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4046, "name": "address", "nodeType": "ElementaryTypeName", "src": "7927:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4049, "mutability": "mutable", "name": "tokenId", "nameLocation": "7947:7:22", "nodeType": "VariableDeclaration", "scope": 4059, "src": "7939:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7939:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7926:29:22"}, "returnParameters": {"id": 4051, "nodeType": "ParameterList", "parameters": [], "src": "7973:0:22"}, "scope": 4444, "src": "7908:108:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4087, "nodeType": "Block", "src": "8351:195:22", "statements": [{"expression": {"arguments": [{"id": 4070, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4062, "src": "8367:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4071, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4064, "src": "8371:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4069, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4154, "src": "8361:5:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 4072, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8361:18:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4073, "nodeType": "ExpressionStatement", "src": "8361:18:22"}, {"expression": {"arguments": [{"arguments": [{"arguments": [{"hexValue": "30", "id": 4078, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8441:1:22", "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": 4077, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8433:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4076, "name": "address", "nodeType": "ElementaryTypeName", "src": "8433:7:22", "typeDescriptions": {}}}, "id": 4079, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8433:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4080, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4062, "src": "8445:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4081, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4064, "src": "8449:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 4082, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4066, "src": "8458:4:22", "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"}], "id": 4075, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4421, "src": "8410:22:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)"}}, "id": 4083, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8410:53:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 4084, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8477:52:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}, "value": "ERC721: transfer to non ERC721Receiver implementer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}], "id": 4074, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8389:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4085, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8389:150:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4086, "nodeType": "ExpressionStatement", "src": "8389:150:22"}]}, "documentation": {"id": 4060, "nodeType": "StructuredDocumentation", "src": "8022:210:22", "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."}, "id": 4088, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "8246:9:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4067, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4062, "mutability": "mutable", "name": "to", "nameLocation": "8273:2:22", "nodeType": "VariableDeclaration", "scope": 4088, "src": "8265:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4061, "name": "address", "nodeType": "ElementaryTypeName", "src": "8265:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4064, "mutability": "mutable", "name": "tokenId", "nameLocation": "8293:7:22", "nodeType": "VariableDeclaration", "scope": 4088, "src": "8285:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4063, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8285:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 4066, "mutability": "mutable", "name": "data", "nameLocation": "8323:4:22", "nodeType": "VariableDeclaration", "scope": 4088, "src": "8310:17:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4065, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8310:5:22", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "8255:78:22"}, "returnParameters": {"id": 4068, "nodeType": "ParameterList", "parameters": [], "src": "8351:0:22"}, "scope": 4444, "src": "8237:309:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4153, "nodeType": "Block", "src": "8929:366:22", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 4097, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4091, "src": "8947:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 4100, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8961:1:22", "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": 4099, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8953:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4098, "name": "address", "nodeType": "ElementaryTypeName", "src": "8953:7:22", "typeDescriptions": {}}}, "id": 4101, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8953:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "8947:16:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373", "id": 4103, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8965:34:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", "typeString": "literal_string \"ERC721: mint to the zero address\""}, "value": "ERC721: mint to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", "typeString": "literal_string \"ERC721: mint to the zero address\""}], "id": 4096, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8939:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4104, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8939:61:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4105, "nodeType": "ExpressionStatement", "src": "8939:61:22"}, {"expression": {"arguments": [{"id": 4110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "9018:17:22", "subExpression": {"arguments": [{"id": 4108, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4093, "src": "9027:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4107, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4010, "src": "9019:7:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)"}}, "id": 4109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9019:16:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564", "id": 4111, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9037:30:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", "typeString": "literal_string \"ERC721: token already minted\""}, "value": "ERC721: token already minted"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", "typeString": "literal_string \"ERC721: token already minted\""}], "id": 4106, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9010:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4112, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9010:58:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4113, "nodeType": "ExpressionStatement", "src": "9010:58:22"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 4117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9108:1:22", "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": 4116, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9100:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4115, "name": "address", "nodeType": "ElementaryTypeName", "src": "9100:7:22", "typeDescriptions": {}}}, "id": 4118, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9100:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4119, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4091, "src": "9112:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4120, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4093, "src": "9116:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4114, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4432, "src": "9079:20:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4121, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9079:45:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4122, "nodeType": "ExpressionStatement", "src": "9079:45:22"}, {"expression": {"id": 4127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4123, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3613, "src": "9135:9:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 4125, "indexExpression": {"id": 4124, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4091, "src": "9145:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9135:13:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 4126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9152:1:22", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9135:18:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4128, "nodeType": "ExpressionStatement", "src": "9135:18:22"}, {"expression": {"id": 4133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4129, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "9163:7:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 4131, "indexExpression": {"id": 4130, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4093, "src": "9171:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9163:16:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 4132, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4091, "src": "9182:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9163:21:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4134, "nodeType": "ExpressionStatement", "src": "9163:21:22"}, {"eventCall": {"arguments": [{"arguments": [{"hexValue": "30", "id": 4138, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9217:1:22", "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": 4137, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9209:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4136, "name": "address", "nodeType": "ElementaryTypeName", "src": "9209:7:22", "typeDescriptions": {}}}, "id": 4139, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9209:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4140, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4091, "src": "9221:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4141, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4093, "src": "9225:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4135, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4459, "src": "9200:8:22", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4142, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9200:33:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4143, "nodeType": "EmitStatement", "src": "9195:38:22"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 4147, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9272:1:22", "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": 4146, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9264:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4145, "name": "address", "nodeType": "ElementaryTypeName", "src": "9264:7:22", "typeDescriptions": {}}}, "id": 4148, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9264:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4149, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4091, "src": "9276:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4150, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4093, "src": "9280:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4144, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4443, "src": "9244:19:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4151, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9244:44:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4152, "nodeType": "ExpressionStatement", "src": "9244:44:22"}]}, "documentation": {"id": 4089, "nodeType": "StructuredDocumentation", "src": "8552:311:22", "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."}, "id": 4154, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nameLocation": "8877:5:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4094, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4091, "mutability": "mutable", "name": "to", "nameLocation": "8891:2:22", "nodeType": "VariableDeclaration", "scope": 4154, "src": "8883:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4090, "name": "address", "nodeType": "ElementaryTypeName", "src": "8883:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4093, "mutability": "mutable", "name": "tokenId", "nameLocation": "8903:7:22", "nodeType": "VariableDeclaration", "scope": 4154, "src": "8895:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4092, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8895:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "8882:29:22"}, "returnParameters": {"id": 4095, "nodeType": "ParameterList", "parameters": [], "src": "8929:0:22"}, "scope": 4444, "src": "8868:427:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4213, "nodeType": "Block", "src": "9561:357:22", "statements": [{"assignments": [4161], "declarations": [{"constant": false, "id": 4161, "mutability": "mutable", "name": "owner", "nameLocation": "9579:5:22", "nodeType": "VariableDeclaration", "scope": 4213, "src": "9571:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4160, "name": "address", "nodeType": "ElementaryTypeName", "src": "9571:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 4166, "initialValue": {"arguments": [{"id": 4164, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4157, "src": "9602:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 4162, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4444, "src": "9587:6:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721_$4444_$", "typeString": "type(contract ERC721)"}}, "id": 4163, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9594:7:22", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 3723, "src": "9587:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 4165, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9587:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "9571:39:22"}, {"expression": {"arguments": [{"id": 4168, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4161, "src": "9642:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 4171, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9657:1:22", "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": 4170, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9649:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4169, "name": "address", "nodeType": "ElementaryTypeName", "src": "9649:7:22", "typeDescriptions": {}}}, "id": 4172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9649:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4173, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4157, "src": "9661:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4167, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4432, "src": "9621:20:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4174, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9621:48:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4175, "nodeType": "ExpressionStatement", "src": "9621:48:22"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 4179, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9724:1:22", "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": 4178, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9716:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4177, "name": "address", "nodeType": "ElementaryTypeName", "src": "9716:7:22", "typeDescriptions": {}}}, "id": 4180, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9716:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4181, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4157, "src": "9728:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4176, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4313, "src": "9707:8:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 4182, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9707:29:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4183, "nodeType": "ExpressionStatement", "src": "9707:29:22"}, {"expression": {"id": 4188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4184, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3613, "src": "9747:9:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 4186, "indexExpression": {"id": 4185, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4161, "src": "9757:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9747:16:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"hexValue": "31", "id": 4187, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9767:1:22", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9747:21:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4189, "nodeType": "ExpressionStatement", "src": "9747:21:22"}, {"expression": {"id": 4193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "9778:23:22", "subExpression": {"baseExpression": {"id": 4190, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "9785:7:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 4192, "indexExpression": {"id": 4191, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4157, "src": "9793:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9785:16:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4194, "nodeType": "ExpressionStatement", "src": "9778:23:22"}, {"eventCall": {"arguments": [{"id": 4196, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4161, "src": "9826:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 4199, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9841:1:22", "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": 4198, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9833:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4197, "name": "address", "nodeType": "ElementaryTypeName", "src": "9833:7:22", "typeDescriptions": {}}}, "id": 4200, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9833:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4201, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4157, "src": "9845:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4195, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4459, "src": "9817:8:22", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9817:36:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4203, "nodeType": "EmitStatement", "src": "9812:41:22"}, {"expression": {"arguments": [{"id": 4205, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4161, "src": "9884:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 4208, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9899:1:22", "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": 4207, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9891:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4206, "name": "address", "nodeType": "ElementaryTypeName", "src": "9891:7:22", "typeDescriptions": {}}}, "id": 4209, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9891:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4210, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4157, "src": "9903:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4204, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4443, "src": "9864:19:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4211, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9864:47:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4212, "nodeType": "ExpressionStatement", "src": "9864:47:22"}]}, "documentation": {"id": 4155, "nodeType": "StructuredDocumentation", "src": "9301:206:22", "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."}, "id": 4214, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "9521:5:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4158, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4157, "mutability": "mutable", "name": "tokenId", "nameLocation": "9535:7:22", "nodeType": "VariableDeclaration", "scope": 4214, "src": "9527:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4156, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9527:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "9526:17:22"}, "returnParameters": {"id": 4159, "nodeType": "ParameterList", "parameters": [], "src": "9561:0:22"}, "scope": 4444, "src": "9512:406:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4288, "nodeType": "Block", "src": "10351:496:22", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 4227, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4221, "src": "10384:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 4225, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4444, "src": "10369:6:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721_$4444_$", "typeString": "type(contract ERC721)"}}, "id": 4226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10376:7:22", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 3723, "src": "10369:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 4228, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10369:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 4229, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4217, "src": "10396:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10369:31:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572", "id": 4231, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10402:39:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48", "typeString": "literal_string \"ERC721: transfer from incorrect owner\""}, "value": "ERC721: transfer from incorrect owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48", "typeString": "literal_string \"ERC721: transfer from incorrect owner\""}], "id": 4224, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10361:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4232, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10361:81:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4233, "nodeType": "ExpressionStatement", "src": "10361:81:22"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 4235, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4219, "src": "10460:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 4238, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10474:1:22", "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": 4237, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10466:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4236, "name": "address", "nodeType": "ElementaryTypeName", "src": "10466:7:22", "typeDescriptions": {}}}, "id": 4239, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10466:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10460:16:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373", "id": 4241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10478:38:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", "typeString": "literal_string \"ERC721: transfer to the zero address\""}, "value": "ERC721: transfer to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", "typeString": "literal_string \"ERC721: transfer to the zero address\""}], "id": 4234, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10452:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4242, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10452:65:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4243, "nodeType": "ExpressionStatement", "src": "10452:65:22"}, {"expression": {"arguments": [{"id": 4245, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4217, "src": "10549:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4246, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4219, "src": "10555:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4247, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4221, "src": "10559:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4244, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4432, "src": "10528:20:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4248, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10528:39:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4249, "nodeType": "ExpressionStatement", "src": "10528:39:22"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 4253, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10646:1:22", "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": 4252, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10638:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4251, "name": "address", "nodeType": "ElementaryTypeName", "src": "10638:7:22", "typeDescriptions": {}}}, "id": 4254, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10638:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4255, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4221, "src": "10650:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4250, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4313, "src": "10629:8:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 4256, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10629:29:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4257, "nodeType": "ExpressionStatement", "src": "10629:29:22"}, {"expression": {"id": 4262, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4258, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3613, "src": "10669:9:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 4260, "indexExpression": {"id": 4259, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4217, "src": "10679:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10669:15:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"hexValue": "31", "id": 4261, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10688:1:22", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "10669:20:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4263, "nodeType": "ExpressionStatement", "src": "10669:20:22"}, {"expression": {"id": 4268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4264, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3613, "src": "10699:9:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 4266, "indexExpression": {"id": 4265, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4219, "src": "10709:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10699:13:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 4267, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10716:1:22", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "10699:18:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4269, "nodeType": "ExpressionStatement", "src": "10699:18:22"}, {"expression": {"id": 4274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4270, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "10727:7:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 4272, "indexExpression": {"id": 4271, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4221, "src": "10735:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10727:16:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 4273, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4219, "src": "10746:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10727:21:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4275, "nodeType": "ExpressionStatement", "src": "10727:21:22"}, {"eventCall": {"arguments": [{"id": 4277, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4217, "src": "10773:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4278, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4219, "src": "10779:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4279, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4221, "src": "10783:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4276, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4459, "src": "10764:8:22", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4280, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10764:27:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4281, "nodeType": "EmitStatement", "src": "10759:32:22"}, {"expression": {"arguments": [{"id": 4283, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4217, "src": "10822:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4284, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4219, "src": "10828:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4285, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4221, "src": "10832:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4282, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4443, "src": "10802:19:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10802:38:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4287, "nodeType": "ExpressionStatement", "src": "10802:38:22"}]}, "documentation": {"id": 4215, "nodeType": "StructuredDocumentation", "src": "9924:313:22", "text": " @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."}, "id": 4289, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nameLocation": "10251:9:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4222, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4217, "mutability": "mutable", "name": "from", "nameLocation": "10278:4:22", "nodeType": "VariableDeclaration", "scope": 4289, "src": "10270:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4216, "name": "address", "nodeType": "ElementaryTypeName", "src": "10270:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4219, "mutability": "mutable", "name": "to", "nameLocation": "10300:2:22", "nodeType": "VariableDeclaration", "scope": 4289, "src": "10292:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4218, "name": "address", "nodeType": "ElementaryTypeName", "src": "10292:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4221, "mutability": "mutable", "name": "tokenId", "nameLocation": "10320:7:22", "nodeType": "VariableDeclaration", "scope": 4289, "src": "10312:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4220, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10312:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10260:73:22"}, "returnParameters": {"id": 4223, "nodeType": "ParameterList", "parameters": [], "src": "10351:0:22"}, "scope": 4444, "src": "10242:605:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4312, "nodeType": "Block", "src": "11023:107:22", "statements": [{"expression": {"id": 4301, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4297, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3617, "src": "11033:15:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 4299, "indexExpression": {"id": 4298, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294, "src": "11049:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11033:24:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 4300, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4292, "src": "11060:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "11033:29:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4302, "nodeType": "ExpressionStatement", "src": "11033:29:22"}, {"eventCall": {"arguments": [{"arguments": [{"id": 4306, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294, "src": "11101:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 4304, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4444, "src": "11086:6:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721_$4444_$", "typeString": "type(contract ERC721)"}}, "id": 4305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11093:7:22", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 3723, "src": "11086:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 4307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11086:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4308, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4292, "src": "11111:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4309, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294, "src": "11115:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4303, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4468, "src": "11077:8:22", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4310, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11077:46:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4311, "nodeType": "EmitStatement", "src": "11072:51:22"}]}, "documentation": {"id": 4290, "nodeType": "StructuredDocumentation", "src": "10853:101:22", "text": " @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."}, "id": 4313, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nameLocation": "10968:8:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4295, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4292, "mutability": "mutable", "name": "to", "nameLocation": "10985:2:22", "nodeType": "VariableDeclaration", "scope": 4313, "src": "10977:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4291, "name": "address", "nodeType": "ElementaryTypeName", "src": "10977:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4294, "mutability": "mutable", "name": "tokenId", "nameLocation": "10997:7:22", "nodeType": "VariableDeclaration", "scope": 4313, "src": "10989:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4293, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10989:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10976:29:22"}, "returnParameters": {"id": 4296, "nodeType": "ParameterList", "parameters": [], "src": "11023:0:22"}, "scope": 4444, "src": "10959:171:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4344, "nodeType": "Block", "src": "11389:184:22", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 4324, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4316, "src": "11407:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 4325, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4318, "src": "11416:8:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "11407:17:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20617070726f766520746f2063616c6c6572", "id": 4327, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11426:27:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", "typeString": "literal_string \"ERC721: approve to caller\""}, "value": "ERC721: approve to caller"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", "typeString": "literal_string \"ERC721: approve to caller\""}], "id": 4323, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11399:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4328, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11399:55:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4329, "nodeType": "ExpressionStatement", "src": "11399:55:22"}, {"expression": {"id": 4336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"baseExpression": {"id": 4330, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3623, "src": "11464:18:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}}, "id": 4333, "indexExpression": {"id": 4331, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4316, "src": "11483:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11464:25:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 4334, "indexExpression": {"id": 4332, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4318, "src": "11490:8:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11464:35:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 4335, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4320, "src": "11502:8:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "11464:46:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 4337, "nodeType": "ExpressionStatement", "src": "11464:46:22"}, {"eventCall": {"arguments": [{"id": 4339, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4316, "src": "11540:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4340, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4318, "src": "11547:8:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4341, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4320, "src": "11557:8:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 4338, "name": "ApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4477, "src": "11525:14:22", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)"}}, "id": 4342, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11525:41:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4343, "nodeType": "EmitStatement", "src": "11520:46:22"}]}, "documentation": {"id": 4314, "nodeType": "StructuredDocumentation", "src": "11136:125:22", "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."}, "id": 4345, "implemented": true, "kind": "function", "modifiers": [], "name": "_setApprovalForAll", "nameLocation": "11275:18:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4321, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4316, "mutability": "mutable", "name": "owner", "nameLocation": "11311:5:22", "nodeType": "VariableDeclaration", "scope": 4345, "src": "11303:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4315, "name": "address", "nodeType": "ElementaryTypeName", "src": "11303:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4318, "mutability": "mutable", "name": "operator", "nameLocation": "11334:8:22", "nodeType": "VariableDeclaration", "scope": 4345, "src": "11326:16:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4317, "name": "address", "nodeType": "ElementaryTypeName", "src": "11326:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4320, "mutability": "mutable", "name": "approved", "nameLocation": "11357:8:22", "nodeType": "VariableDeclaration", "scope": 4345, "src": "11352:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4319, "name": "bool", "nodeType": "ElementaryTypeName", "src": "11352:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "11293:78:22"}, "returnParameters": {"id": 4322, "nodeType": "ParameterList", "parameters": [], "src": "11389:0:22"}, "scope": 4444, "src": "11266:307:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4358, "nodeType": "Block", "src": "11720:70:22", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 4353, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4348, "src": "11746:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4352, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4010, "src": "11738:7:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)"}}, "id": 4354, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11738:16:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20696e76616c696420746f6b656e204944", "id": 4355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11756:26:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}, "value": "ERC721: invalid token ID"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}], "id": 4351, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11730:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4356, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11730:53:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4357, "nodeType": "ExpressionStatement", "src": "11730:53:22"}]}, "documentation": {"id": 4346, "nodeType": "StructuredDocumentation", "src": "11579:73:22", "text": " @dev Reverts if the `tokenId` has not been minted yet."}, "id": 4359, "implemented": true, "kind": "function", "modifiers": [], "name": "_requireMinted", "nameLocation": "11666:14:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4349, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4348, "mutability": "mutable", "name": "tokenId", "nameLocation": "11689:7:22", "nodeType": "VariableDeclaration", "scope": 4359, "src": "11681:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4347, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11681:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "11680:17:22"}, "returnParameters": {"id": 4350, "nodeType": "ParameterList", "parameters": [], "src": "11720:0:22"}, "scope": 4444, "src": "11657:133:22", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 4420, "nodeType": "Block", "src": "12497:676:22", "statements": [{"condition": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 4373, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4364, "src": "12511:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4374, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12514:10:22", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 4748, "src": "12511:13:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address) view returns (bool)"}}, "id": 4375, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12511:15:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 4418, "nodeType": "Block", "src": "13131:36:22", "statements": [{"expression": {"hexValue": "74727565", "id": 4416, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "13152:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 4372, "id": 4417, "nodeType": "Return", "src": "13145:11:22"}]}, "id": 4419, "nodeType": "IfStatement", "src": "12507:660:22", "trueBody": {"id": 4415, "nodeType": "Block", "src": "12528:597:22", "statements": [{"clauses": [{"block": {"id": 4395, "nodeType": "Block", "src": "12642:91:22", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 4393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 4389, "name": "retval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4387, "src": "12667:6:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"expression": {"id": 4390, "name": "IERC721Receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4578, "src": "12677:15:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$4578_$", "typeString": "type(contract IERC721Receiver)"}}, "id": 4391, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "12693:16:22", "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 4577, "src": "12677:32:22", "typeDescriptions": {"typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", "typeString": "function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}}, "id": 4392, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "12710:8:22", "memberName": "selector", "nodeType": "MemberAccess", "src": "12677:41:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "12667:51:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 4372, "id": 4394, "nodeType": "Return", "src": "12660:58:22"}]}, "errorName": "", "id": 4396, "nodeType": "TryCatchClause", "parameters": {"id": 4388, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4387, "mutability": "mutable", "name": "retval", "nameLocation": "12634:6:22", "nodeType": "VariableDeclaration", "scope": 4396, "src": "12627:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4386, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "12627:6:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "12626:15:22"}, "src": "12618:115:22"}, {"block": {"id": 4412, "nodeType": "Block", "src": "12762:353:22", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 4400, "name": "reason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4398, "src": "12784:6:22", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 4401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12791:6:22", "memberName": "length", "nodeType": "MemberAccess", "src": "12784:13:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 4402, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12801:1:22", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "12784:18:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 4410, "nodeType": "Block", "src": "12911:190:22", "statements": [{"AST": {"nodeType": "YulBlock", "src": "12997:86:22", "statements": [{"expression": {"arguments": [{"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "13034:2:22", "type": "", "value": "32"}, {"name": "reason", "nodeType": "YulIdentifier", "src": "13038:6:22"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "13030:3:22"}, "nodeType": "YulFunctionCall", "src": "13030:15:22"}, {"arguments": [{"name": "reason", "nodeType": "YulIdentifier", "src": "13053:6:22"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "13047:5:22"}, "nodeType": "YulFunctionCall", "src": "13047:13:22"}], "functionName": {"name": "revert", "nodeType": "YulIdentifier", "src": "13023:6:22"}, "nodeType": "YulFunctionCall", "src": "13023:38:22"}, "nodeType": "YulExpressionStatement", "src": "13023:38:22"}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 4398, "isOffset": false, "isSlot": false, "src": "13038:6:22", "valueSize": 1}, {"declaration": 4398, "isOffset": false, "isSlot": false, "src": "13053:6:22", "valueSize": 1}], "id": 4409, "nodeType": "InlineAssembly", "src": "12988:95:22"}]}, "id": 4411, "nodeType": "IfStatement", "src": "12780:321:22", "trueBody": {"id": 4408, "nodeType": "Block", "src": "12804:101:22", "statements": [{"expression": {"arguments": [{"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 4405, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "12833:52:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}, "value": "ERC721: transfer to non ERC721Receiver implementer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}], "id": 4404, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "12826:6:22", "typeDescriptions": {"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure"}}, "id": 4406, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12826:60:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4407, "nodeType": "ExpressionStatement", "src": "12826:60:22"}]}}]}, "errorName": "", "id": 4413, "nodeType": "TryCatchClause", "parameters": {"id": 4399, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4398, "mutability": "mutable", "name": "reason", "nameLocation": "12754:6:22", "nodeType": "VariableDeclaration", "scope": 4413, "src": "12741:19:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4397, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12741:5:22", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "12740:21:22"}, "src": "12734:381:22"}], "externalCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 4380, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "12583:10:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 4381, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12583:12:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4382, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4362, "src": "12597:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4383, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4366, "src": "12603:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 4384, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4368, "src": "12612:4:22", "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": {"arguments": [{"id": 4377, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4364, "src": "12562:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 4376, "name": "IERC721Receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4578, "src": "12546:15:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$4578_$", "typeString": "type(contract IERC721Receiver)"}}, "id": 4378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12546:19:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC721Receiver_$4578", "typeString": "contract IERC721Receiver"}}, "id": 4379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12566:16:22", "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 4577, "src": "12546:36:22", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"}}, "id": 4385, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12546:71:22", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "id": 4414, "nodeType": "TryStatement", "src": "12542:573:22"}]}}]}, "documentation": {"id": 4360, "nodeType": "StructuredDocumentation", "src": "11796:541:22", "text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"}, "id": 4421, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOnERC721Received", "nameLocation": "12351:22:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4362, "mutability": "mutable", "name": "from", "nameLocation": "12391:4:22", "nodeType": "VariableDeclaration", "scope": 4421, "src": "12383:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4361, "name": "address", "nodeType": "ElementaryTypeName", "src": "12383:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4364, "mutability": "mutable", "name": "to", "nameLocation": "12413:2:22", "nodeType": "VariableDeclaration", "scope": 4421, "src": "12405:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4363, "name": "address", "nodeType": "ElementaryTypeName", "src": "12405:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4366, "mutability": "mutable", "name": "tokenId", "nameLocation": "12433:7:22", "nodeType": "VariableDeclaration", "scope": 4421, "src": "12425:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4365, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12425:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 4368, "mutability": "mutable", "name": "data", "nameLocation": "12463:4:22", "nodeType": "VariableDeclaration", "scope": 4421, "src": "12450:17:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4367, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12450:5:22", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "12373:100:22"}, "returnParameters": {"id": 4372, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4371, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4421, "src": "12491:4:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4370, "name": "bool", "nodeType": "ElementaryTypeName", "src": "12491:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "12490:6:22"}, "scope": 4444, "src": "12342:831:22", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 4431, "nodeType": "Block", "src": "13849:2:22", "statements": []}, "documentation": {"id": 4422, "nodeType": "StructuredDocumentation", "src": "13179:545:22", "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."}, "id": 4432, "implemented": true, "kind": "function", "modifiers": [], "name": "_beforeTokenTransfer", "nameLocation": "13738:20:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4429, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4424, "mutability": "mutable", "name": "from", "nameLocation": "13776:4:22", "nodeType": "VariableDeclaration", "scope": 4432, "src": "13768:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4423, "name": "address", "nodeType": "ElementaryTypeName", "src": "13768:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4426, "mutability": "mutable", "name": "to", "nameLocation": "13798:2:22", "nodeType": "VariableDeclaration", "scope": 4432, "src": "13790:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4425, "name": "address", "nodeType": "ElementaryTypeName", "src": "13790:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4428, "mutability": "mutable", "name": "tokenId", "nameLocation": "13818:7:22", "nodeType": "VariableDeclaration", "scope": 4432, "src": "13810:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4427, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13810:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "13758:73:22"}, "returnParameters": {"id": 4430, "nodeType": "ParameterList", "parameters": [], "src": "13849:0:22"}, "scope": 4444, "src": "13729:122:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4442, "nodeType": "Block", "src": "14342:2:22", "statements": []}, "documentation": {"id": 4433, "nodeType": "StructuredDocumentation", "src": "13857:361:22", "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."}, "id": 4443, "implemented": true, "kind": "function", "modifiers": [], "name": "_afterTokenTransfer", "nameLocation": "14232:19:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4440, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4435, "mutability": "mutable", "name": "from", "nameLocation": "14269:4:22", "nodeType": "VariableDeclaration", "scope": 4443, "src": "14261:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4434, "name": "address", "nodeType": "ElementaryTypeName", "src": "14261:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4437, "mutability": "mutable", "name": "to", "nameLocation": "14291:2:22", "nodeType": "VariableDeclaration", "scope": 4443, "src": "14283:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4436, "name": "address", "nodeType": "ElementaryTypeName", "src": "14283:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4439, "mutability": "mutable", "name": "tokenId", "nameLocation": "14311:7:22", "nodeType": "VariableDeclaration", "scope": 4443, "src": "14303:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4438, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14303:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "14251:73:22"}, "returnParameters": {"id": 4441, "nodeType": "ParameterList", "parameters": [], "src": "14342:0:22"}, "scope": 4444, "src": "14223:121:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}], "scope": 4445, "src": "628:13718:22", "usedErrors": []}], "src": "107:14240:22"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", "exportedSymbols": {"IERC165": [5309], "IERC721": [4560]}, "id": 4561, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 4446, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "108:23:23"}, {"absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", "file": "../../utils/introspection/IERC165.sol", "id": 4447, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4561, "sourceUnit": 5310, "src": "133:47:23", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 4449, "name": "IERC165", "nameLocations": ["271:7:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 5309, "src": "271:7:23"}, "id": 4450, "nodeType": "InheritanceSpecifier", "src": "271:7:23"}], "canonicalName": "IERC721", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 4448, "nodeType": "StructuredDocumentation", "src": "182:67:23", "text": " @dev Required interface of an ERC721 compliant contract."}, "fullyImplemented": false, "id": 4560, "linearizedBaseContracts": [4560, 5309], "name": "IERC721", "nameLocation": "260:7:23", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 4451, "nodeType": "StructuredDocumentation", "src": "285:88:23", "text": " @dev Emitted when `tokenId` token is transferred from `from` to `to`."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 4459, "name": "Transfer", "nameLocation": "384:8:23", "nodeType": "EventDefinition", "parameters": {"id": 4458, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4453, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "409:4:23", "nodeType": "VariableDeclaration", "scope": 4459, "src": "393:20:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4452, "name": "address", "nodeType": "ElementaryTypeName", "src": "393:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4455, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "431:2:23", "nodeType": "VariableDeclaration", "scope": 4459, "src": "415:18:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4454, "name": "address", "nodeType": "ElementaryTypeName", "src": "415:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4457, "indexed": true, "mutability": "mutable", "name": "tokenId", "nameLocation": "451:7:23", "nodeType": "VariableDeclaration", "scope": 4459, "src": "435:23:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4456, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "435:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "392:67:23"}, "src": "378:82:23"}, {"anonymous": false, "documentation": {"id": 4460, "nodeType": "StructuredDocumentation", "src": "466:94:23", "text": " @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 4468, "name": "Approval", "nameLocation": "571:8:23", "nodeType": "EventDefinition", "parameters": {"id": 4467, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4462, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "596:5:23", "nodeType": "VariableDeclaration", "scope": 4468, "src": "580:21:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4461, "name": "address", "nodeType": "ElementaryTypeName", "src": "580:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4464, "indexed": true, "mutability": "mutable", "name": "approved", "nameLocation": "619:8:23", "nodeType": "VariableDeclaration", "scope": 4468, "src": "603:24:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4463, "name": "address", "nodeType": "ElementaryTypeName", "src": "603:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4466, "indexed": true, "mutability": "mutable", "name": "tokenId", "nameLocation": "645:7:23", "nodeType": "VariableDeclaration", "scope": 4468, "src": "629:23:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4465, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "629:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "579:74:23"}, "src": "565:89:23"}, {"anonymous": false, "documentation": {"id": 4469, "nodeType": "StructuredDocumentation", "src": "660:117:23", "text": " @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."}, "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31", "id": 4477, "name": "ApprovalForAll", "nameLocation": "788:14:23", "nodeType": "EventDefinition", "parameters": {"id": 4476, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4471, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "819:5:23", "nodeType": "VariableDeclaration", "scope": 4477, "src": "803:21:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4470, "name": "address", "nodeType": "ElementaryTypeName", "src": "803:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4473, "indexed": true, "mutability": "mutable", "name": "operator", "nameLocation": "842:8:23", "nodeType": "VariableDeclaration", "scope": 4477, "src": "826:24:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4472, "name": "address", "nodeType": "ElementaryTypeName", "src": "826:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4475, "indexed": false, "mutability": "mutable", "name": "approved", "nameLocation": "857:8:23", "nodeType": "VariableDeclaration", "scope": 4477, "src": "852:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4474, "name": "bool", "nodeType": "ElementaryTypeName", "src": "852:4:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "802:64:23"}, "src": "782:85:23"}, {"documentation": {"id": 4478, "nodeType": "StructuredDocumentation", "src": "873:76:23", "text": " @dev Returns the number of tokens in ``owner``'s account."}, "functionSelector": "70a08231", "id": 4485, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "963:9:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4481, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4480, "mutability": "mutable", "name": "owner", "nameLocation": "981:5:23", "nodeType": "VariableDeclaration", "scope": 4485, "src": "973:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4479, "name": "address", "nodeType": "ElementaryTypeName", "src": "973:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "972:15:23"}, "returnParameters": {"id": 4484, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4483, "mutability": "mutable", "name": "balance", "nameLocation": "1019:7:23", "nodeType": "VariableDeclaration", "scope": 4485, "src": "1011:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4482, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1011:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1010:17:23"}, "scope": 4560, "src": "954:74:23", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4486, "nodeType": "StructuredDocumentation", "src": "1034:131:23", "text": " @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."}, "functionSelector": "6352211e", "id": 4493, "implemented": false, "kind": "function", "modifiers": [], "name": "ownerOf", "nameLocation": "1179:7:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4489, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4488, "mutability": "mutable", "name": "tokenId", "nameLocation": "1195:7:23", "nodeType": "VariableDeclaration", "scope": 4493, "src": "1187:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4487, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1187:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1186:17:23"}, "returnParameters": {"id": 4492, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4491, "mutability": "mutable", "name": "owner", "nameLocation": "1235:5:23", "nodeType": "VariableDeclaration", "scope": 4493, "src": "1227:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4490, "name": "address", "nodeType": "ElementaryTypeName", "src": "1227:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1226:15:23"}, "scope": 4560, "src": "1170:72:23", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4494, "nodeType": "StructuredDocumentation", "src": "1248:556:23", "text": " @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "functionSelector": "b88d4fde", "id": 4505, "implemented": false, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "1818:16:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4503, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4496, "mutability": "mutable", "name": "from", "nameLocation": "1852:4:23", "nodeType": "VariableDeclaration", "scope": 4505, "src": "1844:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4495, "name": "address", "nodeType": "ElementaryTypeName", "src": "1844:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4498, "mutability": "mutable", "name": "to", "nameLocation": "1874:2:23", "nodeType": "VariableDeclaration", "scope": 4505, "src": "1866:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4497, "name": "address", "nodeType": "ElementaryTypeName", "src": "1866:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4500, "mutability": "mutable", "name": "tokenId", "nameLocation": "1894:7:23", "nodeType": "VariableDeclaration", "scope": 4505, "src": "1886:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4499, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1886:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 4502, "mutability": "mutable", "name": "data", "nameLocation": "1926:4:23", "nodeType": "VariableDeclaration", "scope": 4505, "src": "1911:19:23", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 4501, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1911:5:23", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1834:102:23"}, "returnParameters": {"id": 4504, "nodeType": "ParameterList", "parameters": [], "src": "1945:0:23"}, "scope": 4560, "src": "1809:137:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4506, "nodeType": "StructuredDocumentation", "src": "1952:687:23", "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "functionSelector": "42842e0e", "id": 4515, "implemented": false, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "2653:16:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4513, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4508, "mutability": "mutable", "name": "from", "nameLocation": "2687:4:23", "nodeType": "VariableDeclaration", "scope": 4515, "src": "2679:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4507, "name": "address", "nodeType": "ElementaryTypeName", "src": "2679:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4510, "mutability": "mutable", "name": "to", "nameLocation": "2709:2:23", "nodeType": "VariableDeclaration", "scope": 4515, "src": "2701:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4509, "name": "address", "nodeType": "ElementaryTypeName", "src": "2701:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4512, "mutability": "mutable", "name": "tokenId", "nameLocation": "2729:7:23", "nodeType": "VariableDeclaration", "scope": 4515, "src": "2721:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4511, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2721:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2669:73:23"}, "returnParameters": {"id": 4514, "nodeType": "ParameterList", "parameters": [], "src": "2751:0:23"}, "scope": 4560, "src": "2644:108:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4516, "nodeType": "StructuredDocumentation", "src": "2758:504:23", "text": " @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 4525, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "3276:12:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4523, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4518, "mutability": "mutable", "name": "from", "nameLocation": "3306:4:23", "nodeType": "VariableDeclaration", "scope": 4525, "src": "3298:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4517, "name": "address", "nodeType": "ElementaryTypeName", "src": "3298:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4520, "mutability": "mutable", "name": "to", "nameLocation": "3328:2:23", "nodeType": "VariableDeclaration", "scope": 4525, "src": "3320:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4519, "name": "address", "nodeType": "ElementaryTypeName", "src": "3320:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4522, "mutability": "mutable", "name": "tokenId", "nameLocation": "3348:7:23", "nodeType": "VariableDeclaration", "scope": 4525, "src": "3340:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4521, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3340:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3288:73:23"}, "returnParameters": {"id": 4524, "nodeType": "ParameterList", "parameters": [], "src": "3370:0:23"}, "scope": 4560, "src": "3267:104:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4526, "nodeType": "StructuredDocumentation", "src": "3377:452:23", "text": " @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 4533, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "3843:7:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4531, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4528, "mutability": "mutable", "name": "to", "nameLocation": "3859:2:23", "nodeType": "VariableDeclaration", "scope": 4533, "src": "3851:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4527, "name": "address", "nodeType": "ElementaryTypeName", "src": "3851:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4530, "mutability": "mutable", "name": "tokenId", "nameLocation": "3871:7:23", "nodeType": "VariableDeclaration", "scope": 4533, "src": "3863:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4529, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3863:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3850:29:23"}, "returnParameters": {"id": 4532, "nodeType": "ParameterList", "parameters": [], "src": "3888:0:23"}, "scope": 4560, "src": "3834:55:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4534, "nodeType": "StructuredDocumentation", "src": "3895:309:23", "text": " @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."}, "functionSelector": "a22cb465", "id": 4541, "implemented": false, "kind": "function", "modifiers": [], "name": "setApprovalForAll", "nameLocation": "4218:17:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4539, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4536, "mutability": "mutable", "name": "operator", "nameLocation": "4244:8:23", "nodeType": "VariableDeclaration", "scope": 4541, "src": "4236:16:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4535, "name": "address", "nodeType": "ElementaryTypeName", "src": "4236:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4538, "mutability": "mutable", "name": "_approved", "nameLocation": "4259:9:23", "nodeType": "VariableDeclaration", "scope": 4541, "src": "4254:14:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4537, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4254:4:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4235:34:23"}, "returnParameters": {"id": 4540, "nodeType": "ParameterList", "parameters": [], "src": "4278:0:23"}, "scope": 4560, "src": "4209:70:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4542, "nodeType": "StructuredDocumentation", "src": "4285:139:23", "text": " @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."}, "functionSelector": "081812fc", "id": 4549, "implemented": false, "kind": "function", "modifiers": [], "name": "getApproved", "nameLocation": "4438:11:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4545, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4544, "mutability": "mutable", "name": "tokenId", "nameLocation": "4458:7:23", "nodeType": "VariableDeclaration", "scope": 4549, "src": "4450:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4543, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4450:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4449:17:23"}, "returnParameters": {"id": 4548, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4547, "mutability": "mutable", "name": "operator", "nameLocation": "4498:8:23", "nodeType": "VariableDeclaration", "scope": 4549, "src": "4490:16:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4546, "name": "address", "nodeType": "ElementaryTypeName", "src": "4490:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4489:18:23"}, "scope": 4560, "src": "4429:79:23", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4550, "nodeType": "StructuredDocumentation", "src": "4514:138:23", "text": " @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"}, "functionSelector": "e985e9c5", "id": 4559, "implemented": false, "kind": "function", "modifiers": [], "name": "isApprovedForAll", "nameLocation": "4666:16:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4555, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4552, "mutability": "mutable", "name": "owner", "nameLocation": "4691:5:23", "nodeType": "VariableDeclaration", "scope": 4559, "src": "4683:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4551, "name": "address", "nodeType": "ElementaryTypeName", "src": "4683:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4554, "mutability": "mutable", "name": "operator", "nameLocation": "4706:8:23", "nodeType": "VariableDeclaration", "scope": 4559, "src": "4698:16:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4553, "name": "address", "nodeType": "ElementaryTypeName", "src": "4698:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4682:33:23"}, "returnParameters": {"id": 4558, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4557, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4559, "src": "4739:4:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4556, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4739:4:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4738:6:23"}, "scope": 4560, "src": "4657:88:23", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 4561, "src": "250:4497:23", "usedErrors": []}], "src": "108:4640:23"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", "exportedSymbols": {"IERC721Receiver": [4578]}, "id": 4579, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 4562, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "116:23:24"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC721Receiver", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 4563, "nodeType": "StructuredDocumentation", "src": "141:152:24", "text": " @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."}, "fullyImplemented": false, "id": 4578, "linearizedBaseContracts": [4578], "name": "IERC721Receiver", "nameLocation": "304:15:24", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 4564, "nodeType": "StructuredDocumentation", "src": "326:493:24", "text": " @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}, "functionSelector": "150b7a02", "id": 4577, "implemented": false, "kind": "function", "modifiers": [], "name": "onERC721Received", "nameLocation": "833:16:24", "nodeType": "FunctionDefinition", "parameters": {"id": 4573, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4566, "mutability": "mutable", "name": "operator", "nameLocation": "867:8:24", "nodeType": "VariableDeclaration", "scope": 4577, "src": "859:16:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4565, "name": "address", "nodeType": "ElementaryTypeName", "src": "859:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4568, "mutability": "mutable", "name": "from", "nameLocation": "893:4:24", "nodeType": "VariableDeclaration", "scope": 4577, "src": "885:12:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4567, "name": "address", "nodeType": "ElementaryTypeName", "src": "885:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4570, "mutability": "mutable", "name": "tokenId", "nameLocation": "915:7:24", "nodeType": "VariableDeclaration", "scope": 4577, "src": "907:15:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4569, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "907:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 4572, "mutability": "mutable", "name": "data", "nameLocation": "947:4:24", "nodeType": "VariableDeclaration", "scope": 4577, "src": "932:19:24", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 4571, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "932:5:24", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "849:108:24"}, "returnParameters": {"id": 4576, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4575, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4577, "src": "976:6:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4574, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "976:6:24", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "975:8:24"}, "scope": 4578, "src": "824:160:24", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 4579, "src": "294:692:24", "usedErrors": []}], "src": "116:871:24"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol", "exportedSymbols": {"Address": [5025], "Context": [5047], "ERC165": [5297], "ERC721": [4444], "ERC721URIStorage": [4703], "IERC165": [5309], "IERC721": [4560], "IERC721Metadata": [4730], "IERC721Receiver": [4578], "Strings": [5273]}, "id": 4704, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 4580, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "128:23:25"}, {"absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol", "file": "../ERC721.sol", "id": 4581, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4704, "sourceUnit": 4445, "src": "153:23:25", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 4583, "name": "ERC721", "nameLocations": ["286:6:25"], "nodeType": "IdentifierPath", "referencedDeclaration": 4444, "src": "286:6:25"}, "id": 4584, "nodeType": "InheritanceSpecifier", "src": "286:6:25"}], "canonicalName": "ERC721URIStorage", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 4582, "nodeType": "StructuredDocumentation", "src": "178:69:25", "text": " @dev ERC721 token with storage based token URI management."}, "fullyImplemented": false, "id": 4703, "linearizedBaseContracts": [4703, 4444, 4730, 4560, 5297, 5309, 5047], "name": "ERC721URIStorage", "nameLocation": "266:16:25", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 4587, "libraryName": {"id": 4585, "name": "Strings", "nameLocations": ["305:7:25"], "nodeType": "IdentifierPath", "referencedDeclaration": 5273, "src": "305:7:25"}, "nodeType": "UsingForDirective", "src": "299:26:25", "typeName": {"id": 4586, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "317:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"constant": false, "id": 4591, "mutability": "mutable", "name": "_tokenURIs", "nameLocation": "405:10:25", "nodeType": "VariableDeclaration", "scope": 4703, "src": "370:45:25", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string)"}, "typeName": {"id": 4590, "keyType": {"id": 4588, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "378:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "370:26:25", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string)"}, "valueType": {"id": 4589, "name": "string", "nodeType": "ElementaryTypeName", "src": "389:6:25", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}}, "visibility": "private"}, {"baseFunctions": [3782], "body": {"id": 4649, "nodeType": "Block", "src": "570:520:25", "statements": [{"expression": {"arguments": [{"id": 4601, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4594, "src": "595:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4600, "name": "_requireMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4359, "src": "580:14:25", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view"}}, "id": 4602, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "580:23:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4603, "nodeType": "ExpressionStatement", "src": "580:23:25"}, {"assignments": [4605], "declarations": [{"constant": false, "id": 4605, "mutability": "mutable", "name": "_tokenURI", "nameLocation": "628:9:25", "nodeType": "VariableDeclaration", "scope": 4649, "src": "614:23:25", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4604, "name": "string", "nodeType": "ElementaryTypeName", "src": "614:6:25", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 4609, "initialValue": {"baseExpression": {"id": 4606, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4591, "src": "640:10:25", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 4608, "indexExpression": {"id": 4607, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4594, "src": "651:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "640:19:25", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "614:45:25"}, {"assignments": [4611], "declarations": [{"constant": false, "id": 4611, "mutability": "mutable", "name": "base", "nameLocation": "683:4:25", "nodeType": "VariableDeclaration", "scope": 4649, "src": "669:18:25", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4610, "name": "string", "nodeType": "ElementaryTypeName", "src": "669:6:25", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 4614, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 4612, "name": "_baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3791, "src": "690:8:25", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", "typeString": "function () view returns (string memory)"}}, "id": 4613, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "690:10:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "nodeType": "VariableDeclarationStatement", "src": "669:31:25"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4621, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 4617, "name": "base", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4611, "src": "779:4:25", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 4616, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "773:5:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 4615, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "773:5:25", "typeDescriptions": {}}}, "id": 4618, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "773:11:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 4619, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "785:6:25", "memberName": "length", "nodeType": "MemberAccess", "src": "773:18:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 4620, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "795:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "773:23:25", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 4625, "nodeType": "IfStatement", "src": "769:70:25", "trueBody": {"id": 4624, "nodeType": "Block", "src": "798:41:25", "statements": [{"expression": {"id": 4622, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4605, "src": "819:9:25", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 4599, "id": 4623, "nodeType": "Return", "src": "812:16:25"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 4628, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4605, "src": "947:9:25", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 4627, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "941:5:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 4626, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "941:5:25", "typeDescriptions": {}}}, "id": 4629, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "941:16:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 4630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "958:6:25", "memberName": "length", "nodeType": "MemberAccess", "src": "941:23:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 4631, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "967:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "941:27:25", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 4643, "nodeType": "IfStatement", "src": "937:106:25", "trueBody": {"id": 4642, "nodeType": "Block", "src": "970:73:25", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 4637, "name": "base", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4611, "src": "1015:4:25", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 4638, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4605, "src": "1021:9:25", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "expression": {"id": 4635, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "998:3:25", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4636, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1002:12:25", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "998:16:25", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 4639, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "998:33:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 4634, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "991:6:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 4633, "name": "string", "nodeType": "ElementaryTypeName", "src": "991:6:25", "typeDescriptions": {}}}, "id": 4640, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "991:41:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 4599, "id": 4641, "nodeType": "Return", "src": "984:48:25"}]}}, {"expression": {"arguments": [{"id": 4646, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4594, "src": "1075:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 4644, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "1060:5:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_ERC721URIStorage_$4703_$", "typeString": "type(contract super ERC721URIStorage)"}}, "id": 4645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1066:8:25", "memberName": "tokenURI", "nodeType": "MemberAccess", "referencedDeclaration": 3782, "src": "1060:14:25", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) view returns (string memory)"}}, "id": 4647, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1060:23:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 4599, "id": 4648, "nodeType": "Return", "src": "1053:30:25"}]}, "documentation": {"id": 4592, "nodeType": "StructuredDocumentation", "src": "422:55:25", "text": " @dev See {IERC721Metadata-tokenURI}."}, "functionSelector": "c87b56dd", "id": 4650, "implemented": true, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "491:8:25", "nodeType": "FunctionDefinition", "overrides": {"id": 4596, "nodeType": "OverrideSpecifier", "overrides": [], "src": "537:8:25"}, "parameters": {"id": 4595, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4594, "mutability": "mutable", "name": "tokenId", "nameLocation": "508:7:25", "nodeType": "VariableDeclaration", "scope": 4650, "src": "500:15:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4593, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "500:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "499:17:25"}, "returnParameters": {"id": 4599, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4598, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4650, "src": "555:13:25", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4597, "name": "string", "nodeType": "ElementaryTypeName", "src": "555:6:25", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "554:15:25"}, "scope": 4703, "src": "482:608:25", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 4671, "nodeType": "Block", "src": "1318:133:25", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 4660, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4653, "src": "1344:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4659, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4010, "src": "1336:7:25", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)"}}, "id": 4661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1336:16:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524337323155524953746f726167653a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e", "id": 4662, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1354:48:25", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7521de1f20ce4d7bb86b61090bad73a87315a1f4baff36cc352901c7777280c4", "typeString": "literal_string \"ERC721URIStorage: URI set of nonexistent token\""}, "value": "ERC721URIStorage: URI set of nonexistent token"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7521de1f20ce4d7bb86b61090bad73a87315a1f4baff36cc352901c7777280c4", "typeString": "literal_string \"ERC721URIStorage: URI set of nonexistent token\""}], "id": 4658, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1328:7:25", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4663, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1328:75:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4664, "nodeType": "ExpressionStatement", "src": "1328:75:25"}, {"expression": {"id": 4669, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4665, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4591, "src": "1413:10:25", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 4667, "indexExpression": {"id": 4666, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4653, "src": "1424:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1413:19:25", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 4668, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4655, "src": "1435:9:25", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1413:31:25", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 4670, "nodeType": "ExpressionStatement", "src": "1413:31:25"}]}, "documentation": {"id": 4651, "nodeType": "StructuredDocumentation", "src": "1096:136:25", "text": " @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Requirements:\n - `tokenId` must exist."}, "id": 4672, "implemented": true, "kind": "function", "modifiers": [], "name": "_setTokenURI", "nameLocation": "1246:12:25", "nodeType": "FunctionDefinition", "parameters": {"id": 4656, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4653, "mutability": "mutable", "name": "tokenId", "nameLocation": "1267:7:25", "nodeType": "VariableDeclaration", "scope": 4672, "src": "1259:15:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4652, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1259:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 4655, "mutability": "mutable", "name": "_tokenURI", "nameLocation": "1290:9:25", "nodeType": "VariableDeclaration", "scope": 4672, "src": "1276:23:25", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4654, "name": "string", "nodeType": "ElementaryTypeName", "src": "1276:6:25", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1258:42:25"}, "returnParameters": {"id": 4657, "nodeType": "ParameterList", "parameters": [], "src": "1318:0:25"}, "scope": 4703, "src": "1237:214:25", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"baseFunctions": [4214], "body": {"id": 4701, "nodeType": "Block", "src": "1727:142:25", "statements": [{"expression": {"arguments": [{"id": 4682, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4675, "src": "1749:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 4679, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "1737:5:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_ERC721URIStorage_$4703_$", "typeString": "type(contract super ERC721URIStorage)"}}, "id": 4681, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1743:5:25", "memberName": "_burn", "nodeType": "MemberAccess", "referencedDeclaration": 4214, "src": "1737:11:25", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 4683, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1737:20:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4684, "nodeType": "ExpressionStatement", "src": "1737:20:25"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4693, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"baseExpression": {"id": 4687, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4591, "src": "1778:10:25", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 4689, "indexExpression": {"id": 4688, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4675, "src": "1789:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1778:19:25", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}], "id": 4686, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1772:5:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 4685, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1772:5:25", "typeDescriptions": {}}}, "id": 4690, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1772:26:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes storage pointer"}}, "id": 4691, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1799:6:25", "memberName": "length", "nodeType": "MemberAccess", "src": "1772:33:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 4692, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1809:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1772:38:25", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 4700, "nodeType": "IfStatement", "src": "1768:95:25", "trueBody": {"id": 4699, "nodeType": "Block", "src": "1812:51:25", "statements": [{"expression": {"id": 4697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "1826:26:25", "subExpression": {"baseExpression": {"id": 4694, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4591, "src": "1833:10:25", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 4696, "indexExpression": {"id": 4695, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4675, "src": "1844:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1833:19:25", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4698, "nodeType": "ExpressionStatement", "src": "1826:26:25"}]}}]}, "documentation": {"id": 4673, "nodeType": "StructuredDocumentation", "src": "1457:207:25", "text": " @dev See {ERC721-_burn}. This override additionally checks to see if a\n token-specific URI was set for the token, and if so, it deletes the token URI from\n the storage mapping."}, "id": 4702, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "1678:5:25", "nodeType": "FunctionDefinition", "overrides": {"id": 4677, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1718:8:25"}, "parameters": {"id": 4676, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4675, "mutability": "mutable", "name": "tokenId", "nameLocation": "1692:7:25", "nodeType": "VariableDeclaration", "scope": 4702, "src": "1684:15:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4674, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1684:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1683:17:25"}, "returnParameters": {"id": 4678, "nodeType": "ParameterList", "parameters": [], "src": "1727:0:25"}, "scope": 4703, "src": "1669:200:25", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}], "scope": 4704, "src": "248:1623:25", "usedErrors": []}], "src": "128:1744:25"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", "exportedSymbols": {"IERC165": [5309], "IERC721": [4560], "IERC721Metadata": [4730]}, "id": 4731, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 4705, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "112:23:26"}, {"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", "file": "../IERC721.sol", "id": 4706, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4731, "sourceUnit": 4561, "src": "137:24:26", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 4708, "name": "IERC721", "nameLocations": ["326:7:26"], "nodeType": "IdentifierPath", "referencedDeclaration": 4560, "src": "326:7:26"}, "id": 4709, "nodeType": "InheritanceSpecifier", "src": "326:7:26"}], "canonicalName": "IERC721Metadata", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 4707, "nodeType": "StructuredDocumentation", "src": "163:133:26", "text": " @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"}, "fullyImplemented": false, "id": 4730, "linearizedBaseContracts": [4730, 4560, 5309], "name": "IERC721Metadata", "nameLocation": "307:15:26", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 4710, "nodeType": "StructuredDocumentation", "src": "340:58:26", "text": " @dev Returns the token collection name."}, "functionSelector": "06fdde03", "id": 4715, "implemented": false, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "412:4:26", "nodeType": "FunctionDefinition", "parameters": {"id": 4711, "nodeType": "ParameterList", "parameters": [], "src": "416:2:26"}, "returnParameters": {"id": 4714, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4713, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4715, "src": "442:13:26", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4712, "name": "string", "nodeType": "ElementaryTypeName", "src": "442:6:26", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "441:15:26"}, "scope": 4730, "src": "403:54:26", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4716, "nodeType": "StructuredDocumentation", "src": "463:60:26", "text": " @dev Returns the token collection symbol."}, "functionSelector": "95d89b41", "id": 4721, "implemented": false, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "537:6:26", "nodeType": "FunctionDefinition", "parameters": {"id": 4717, "nodeType": "ParameterList", "parameters": [], "src": "543:2:26"}, "returnParameters": {"id": 4720, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4719, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4721, "src": "569:13:26", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4718, "name": "string", "nodeType": "ElementaryTypeName", "src": "569:6:26", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "568:15:26"}, "scope": 4730, "src": "528:56:26", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4722, "nodeType": "StructuredDocumentation", "src": "590:90:26", "text": " @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."}, "functionSelector": "c87b56dd", "id": 4729, "implemented": false, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "694:8:26", "nodeType": "FunctionDefinition", "parameters": {"id": 4725, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4724, "mutability": "mutable", "name": "tokenId", "nameLocation": "711:7:26", "nodeType": "VariableDeclaration", "scope": 4729, "src": "703:15:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4723, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "703:7:26", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "702:17:26"}, "returnParameters": {"id": 4728, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4727, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4729, "src": "743:13:26", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4726, "name": "string", "nodeType": "ElementaryTypeName", "src": "743:6:26", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "742:15:26"}, "scope": 4730, "src": "685:73:26", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 4731, "src": "297:463:26", "usedErrors": []}], "src": "112:649:26"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Address.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/utils/Address.sol", "exportedSymbols": {"Address": [5025]}, "id": 5026, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 4732, "literals": ["solidity", "^", "0.8", ".1"], "nodeType": "PragmaDirective", "src": "101:23:27"}, {"abstract": false, "baseContracts": [], "canonicalName": "Address", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 4733, "nodeType": "StructuredDocumentation", "src": "126:67:27", "text": " @dev Collection of functions related to the address type"}, "fullyImplemented": true, "id": 5025, "linearizedBaseContracts": [5025], "name": "Address", "nameLocation": "202:7:27", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 4747, "nodeType": "Block", "src": "1241:254:27", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4745, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 4741, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4736, "src": "1465:7:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4742, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1473:4:27", "memberName": "code", "nodeType": "MemberAccess", "src": "1465:12:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 4743, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1478:6:27", "memberName": "length", "nodeType": "MemberAccess", "src": "1465:19:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 4744, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1487:1:27", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1465:23:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 4740, "id": 4746, "nodeType": "Return", "src": "1458:30:27"}]}, "documentation": {"id": 4734, "nodeType": "StructuredDocumentation", "src": "216:954:27", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="}, "id": 4748, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1184:10:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4737, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4736, "mutability": "mutable", "name": "account", "nameLocation": "1203:7:27", "nodeType": "VariableDeclaration", "scope": 4748, "src": "1195:15:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4735, "name": "address", "nodeType": "ElementaryTypeName", "src": "1195:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1194:17:27"}, "returnParameters": {"id": 4740, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4739, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4748, "src": "1235:4:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4738, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1235:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1234:6:27"}, "scope": 5025, "src": "1175:320:27", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 4781, "nodeType": "Block", "src": "2483:241:27", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4763, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 4759, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2509:4:27", "typeDescriptions": {"typeIdentifier": "t_contract$_Address_$5025", "typeString": "library Address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_Address_$5025", "typeString": "library Address"}], "id": 4758, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2501:7:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4757, "name": "address", "nodeType": "ElementaryTypeName", "src": "2501:7:27", "typeDescriptions": {}}}, "id": 4760, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2501:13:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4761, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2515:7:27", "memberName": "balance", "nodeType": "MemberAccess", "src": "2501:21:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 4762, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4753, "src": "2526:6:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2501:31:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", "id": 4764, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2534:31:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", "typeString": "literal_string \"Address: insufficient balance\""}, "value": "Address: insufficient balance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", "typeString": "literal_string \"Address: insufficient balance\""}], "id": 4756, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2493:7:27", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4765, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2493:73:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4766, "nodeType": "ExpressionStatement", "src": "2493:73:27"}, {"assignments": [4768, null], "declarations": [{"constant": false, "id": 4768, "mutability": "mutable", "name": "success", "nameLocation": "2583:7:27", "nodeType": "VariableDeclaration", "scope": 4781, "src": "2578:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4767, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2578:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, null], "id": 4775, "initialValue": {"arguments": [{"hexValue": "", "id": 4773, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2626:2:27", "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": 4769, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4751, "src": "2596:9:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "id": 4770, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2606:4:27", "memberName": "call", "nodeType": "MemberAccess", "src": "2596:14:27", "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": 4772, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{"id": 4771, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4753, "src": "2618:6:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "src": "2596:29:27", "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": 4774, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2596:33:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "2577:52:27"}, {"expression": {"arguments": [{"id": 4777, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4768, "src": "2647:7:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", "id": 4778, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2656:60:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""}, "value": "Address: unable to send value, recipient may have reverted"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""}], "id": 4776, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2639:7:27", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4779, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2639:78:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4780, "nodeType": "ExpressionStatement", "src": "2639:78:27"}]}, "documentation": {"id": 4749, "nodeType": "StructuredDocumentation", "src": "1501:906:27", "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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."}, "id": 4782, "implemented": true, "kind": "function", "modifiers": [], "name": "sendValue", "nameLocation": "2421:9:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4754, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4751, "mutability": "mutable", "name": "recipient", "nameLocation": "2447:9:27", "nodeType": "VariableDeclaration", "scope": 4782, "src": "2431:25:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}, "typeName": {"id": 4750, "name": "address", "nodeType": "ElementaryTypeName", "src": "2431:15:27", "stateMutability": "payable", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "visibility": "internal"}, {"constant": false, "id": 4753, "mutability": "mutable", "name": "amount", "nameLocation": "2466:6:27", "nodeType": "VariableDeclaration", "scope": 4782, "src": "2458:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4752, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2458:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2430:43:27"}, "returnParameters": {"id": 4755, "nodeType": "ParameterList", "parameters": [], "src": "2483:0:27"}, "scope": 5025, "src": "2412:312:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 4798, "nodeType": "Block", "src": "3555:84:27", "statements": [{"expression": {"arguments": [{"id": 4793, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4785, "src": "3585:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4794, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4787, "src": "3593:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", "id": 4795, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3599:32:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", "typeString": "literal_string \"Address: low-level call failed\""}, "value": "Address: low-level call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", "typeString": "literal_string \"Address: low-level call failed\""}], "id": 4792, "name": "functionCall", "nodeType": "Identifier", "overloadedDeclarations": [4799, 4819], "referencedDeclaration": 4819, "src": "3572:12:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"}}, "id": 4796, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3572:60:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4791, "id": 4797, "nodeType": "Return", "src": "3565:67:27"}]}, "documentation": {"id": 4783, "nodeType": "StructuredDocumentation", "src": "2730:731:27", "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, it is bubbled up by this\n function (like regular Solidity function calls).\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.\n _Available since v3.1._"}, "id": 4799, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCall", "nameLocation": "3475:12:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4788, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4785, "mutability": "mutable", "name": "target", "nameLocation": "3496:6:27", "nodeType": "VariableDeclaration", "scope": 4799, "src": "3488:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4784, "name": "address", "nodeType": "ElementaryTypeName", "src": "3488:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4787, "mutability": "mutable", "name": "data", "nameLocation": "3517:4:27", "nodeType": "VariableDeclaration", "scope": 4799, "src": "3504:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4786, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3504:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3487:35:27"}, "returnParameters": {"id": 4791, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4790, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4799, "src": "3541:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4789, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3541:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3540:14:27"}, "scope": 5025, "src": "3466:173:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 4818, "nodeType": "Block", "src": "4008:76:27", "statements": [{"expression": {"arguments": [{"id": 4812, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4802, "src": "4047:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4813, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4804, "src": "4055:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "30", "id": 4814, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4061:1:27", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"id": 4815, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4806, "src": "4064:12:27", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "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"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 4811, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [4839, 4889], "referencedDeclaration": 4889, "src": "4025:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 4816, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4025:52:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4810, "id": 4817, "nodeType": "Return", "src": "4018:59:27"}]}, "documentation": {"id": 4800, "nodeType": "StructuredDocumentation", "src": "3645:211:27", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"}, "id": 4819, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCall", "nameLocation": "3870:12:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4807, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4802, "mutability": "mutable", "name": "target", "nameLocation": "3900:6:27", "nodeType": "VariableDeclaration", "scope": 4819, "src": "3892:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4801, "name": "address", "nodeType": "ElementaryTypeName", "src": "3892:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4804, "mutability": "mutable", "name": "data", "nameLocation": "3929:4:27", "nodeType": "VariableDeclaration", "scope": 4819, "src": "3916:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4803, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3916:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 4806, "mutability": "mutable", "name": "errorMessage", "nameLocation": "3957:12:27", "nodeType": "VariableDeclaration", "scope": 4819, "src": "3943:26:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4805, "name": "string", "nodeType": "ElementaryTypeName", "src": "3943:6:27", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3882:93:27"}, "returnParameters": {"id": 4810, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4809, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4819, "src": "3994:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4808, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3994:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3993:14:27"}, "scope": 5025, "src": "3861:223:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 4838, "nodeType": "Block", "src": "4589:111:27", "statements": [{"expression": {"arguments": [{"id": 4832, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4822, "src": "4628:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4833, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4824, "src": "4636:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 4834, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4826, "src": "4642:5:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", "id": 4835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4649:43:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", "typeString": "literal_string \"Address: low-level call with value failed\""}, "value": "Address: low-level call with value failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", "typeString": "literal_string \"Address: low-level call with value failed\""}], "id": 4831, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [4839, 4889], "referencedDeclaration": 4889, "src": "4606:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 4836, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4606:87:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4830, "id": 4837, "nodeType": "Return", "src": "4599:94:27"}]}, "documentation": {"id": 4820, "nodeType": "StructuredDocumentation", "src": "4090:351:27", "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`.\n _Available since v3.1._"}, "id": 4839, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCallWithValue", "nameLocation": "4455:21:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4827, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4822, "mutability": "mutable", "name": "target", "nameLocation": "4494:6:27", "nodeType": "VariableDeclaration", "scope": 4839, "src": "4486:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4821, "name": "address", "nodeType": "ElementaryTypeName", "src": "4486:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4824, "mutability": "mutable", "name": "data", "nameLocation": "4523:4:27", "nodeType": "VariableDeclaration", "scope": 4839, "src": "4510:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4823, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4510:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 4826, "mutability": "mutable", "name": "value", "nameLocation": "4545:5:27", "nodeType": "VariableDeclaration", "scope": 4839, "src": "4537:13:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4825, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4537:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4476:80:27"}, "returnParameters": {"id": 4830, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4829, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4839, "src": "4575:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4828, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4575:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "4574:14:27"}, "scope": 5025, "src": "4446:254:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 4888, "nodeType": "Block", "src": "5127:320:27", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4860, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 4856, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "5153:4:27", "typeDescriptions": {"typeIdentifier": "t_contract$_Address_$5025", "typeString": "library Address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_Address_$5025", "typeString": "library Address"}], "id": 4855, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5145:7:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4854, "name": "address", "nodeType": "ElementaryTypeName", "src": "5145:7:27", "typeDescriptions": {}}}, "id": 4857, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5145:13:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4858, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5159:7:27", "memberName": "balance", "nodeType": "MemberAccess", "src": "5145:21:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 4859, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4846, "src": "5170:5:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5145:30:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", "id": 4861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5177:40:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", "typeString": "literal_string \"Address: insufficient balance for call\""}, "value": "Address: insufficient balance for call"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", "typeString": "literal_string \"Address: insufficient balance for call\""}], "id": 4853, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5137:7:27", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4862, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5137:81:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4863, "nodeType": "ExpressionStatement", "src": "5137:81:27"}, {"expression": {"arguments": [{"arguments": [{"id": 4866, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4842, "src": "5247:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 4865, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4748, "src": "5236:10:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 4867, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5236:18:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", "id": 4868, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5256:31:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", "typeString": "literal_string \"Address: call to non-contract\""}, "value": "Address: call to non-contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", "typeString": "literal_string \"Address: call to non-contract\""}], "id": 4864, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5228:7:27", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4869, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5228:60:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4870, "nodeType": "ExpressionStatement", "src": "5228:60:27"}, {"assignments": [4872, 4874], "declarations": [{"constant": false, "id": 4872, "mutability": "mutable", "name": "success", "nameLocation": "5305:7:27", "nodeType": "VariableDeclaration", "scope": 4888, "src": "5300:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4871, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5300:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 4874, "mutability": "mutable", "name": "returndata", "nameLocation": "5327:10:27", "nodeType": "VariableDeclaration", "scope": 4888, "src": "5314:23:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4873, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5314:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 4881, "initialValue": {"arguments": [{"id": 4879, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4844, "src": "5367:4:27", "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": 4875, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4842, "src": "5341:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5348:4:27", "memberName": "call", "nodeType": "MemberAccess", "src": "5341:11:27", "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": 4878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{"id": 4877, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4846, "src": "5360:5:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "src": "5341:25:27", "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": 4880, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5341:31:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "5299:73:27"}, {"expression": {"arguments": [{"id": 4883, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4872, "src": "5406:7:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 4884, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4874, "src": "5415:10:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 4885, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4848, "src": "5427:12:27", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 4882, "name": "verifyCallResult", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5024, "src": "5389:16:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"}}, "id": 4886, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5389:51:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4852, "id": 4887, "nodeType": "Return", "src": "5382:58:27"}]}, "documentation": {"id": 4840, "nodeType": "StructuredDocumentation", "src": "4706:237:27", "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"}, "id": 4889, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCallWithValue", "nameLocation": "4957:21:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4849, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4842, "mutability": "mutable", "name": "target", "nameLocation": "4996:6:27", "nodeType": "VariableDeclaration", "scope": 4889, "src": "4988:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4841, "name": "address", "nodeType": "ElementaryTypeName", "src": "4988:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4844, "mutability": "mutable", "name": "data", "nameLocation": "5025:4:27", "nodeType": "VariableDeclaration", "scope": 4889, "src": "5012:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4843, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5012:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 4846, "mutability": "mutable", "name": "value", "nameLocation": "5047:5:27", "nodeType": "VariableDeclaration", "scope": 4889, "src": "5039:13:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4845, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5039:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 4848, "mutability": "mutable", "name": "errorMessage", "nameLocation": "5076:12:27", "nodeType": "VariableDeclaration", "scope": 4889, "src": "5062:26:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4847, "name": "string", "nodeType": "ElementaryTypeName", "src": "5062:6:27", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "4978:116:27"}, "returnParameters": {"id": 4852, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4851, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4889, "src": "5113:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4850, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5113:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5112:14:27"}, "scope": 5025, "src": "4948:499:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 4905, "nodeType": "Block", "src": "5724:97:27", "statements": [{"expression": {"arguments": [{"id": 4900, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4892, "src": "5760:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4901, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4894, "src": "5768:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", "id": 4902, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5774:39:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", "typeString": "literal_string \"Address: low-level static call failed\""}, "value": "Address: low-level static call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", "typeString": "literal_string \"Address: low-level static call failed\""}], "id": 4899, "name": "functionStaticCall", "nodeType": "Identifier", "overloadedDeclarations": [4906, 4941], "referencedDeclaration": 4941, "src": "5741:18:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"}}, "id": 4903, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5741:73:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4898, "id": 4904, "nodeType": "Return", "src": "5734:80:27"}]}, "documentation": {"id": 4890, "nodeType": "StructuredDocumentation", "src": "5453:166:27", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"}, "id": 4906, "implemented": true, "kind": "function", "modifiers": [], "name": "functionStaticCall", "nameLocation": "5633:18:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4895, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4892, "mutability": "mutable", "name": "target", "nameLocation": "5660:6:27", "nodeType": "VariableDeclaration", "scope": 4906, "src": "5652:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4891, "name": "address", "nodeType": "ElementaryTypeName", "src": "5652:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4894, "mutability": "mutable", "name": "data", "nameLocation": "5681:4:27", "nodeType": "VariableDeclaration", "scope": 4906, "src": "5668:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4893, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5668:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5651:35:27"}, "returnParameters": {"id": 4898, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4897, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4906, "src": "5710:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4896, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5710:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5709:14:27"}, "scope": 5025, "src": "5624:197:27", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 4940, "nodeType": "Block", "src": "6163:228:27", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 4920, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4909, "src": "6192:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 4919, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4748, "src": "6181:10:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 4921, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6181:18:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", "id": 4922, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6201:38:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", "typeString": "literal_string \"Address: static call to non-contract\""}, "value": "Address: static call to non-contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", "typeString": "literal_string \"Address: static call to non-contract\""}], "id": 4918, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6173:7:27", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4923, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6173:67:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4924, "nodeType": "ExpressionStatement", "src": "6173:67:27"}, {"assignments": [4926, 4928], "declarations": [{"constant": false, "id": 4926, "mutability": "mutable", "name": "success", "nameLocation": "6257:7:27", "nodeType": "VariableDeclaration", "scope": 4940, "src": "6252:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4925, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6252:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 4928, "mutability": "mutable", "name": "returndata", "nameLocation": "6279:10:27", "nodeType": "VariableDeclaration", "scope": 4940, "src": "6266:23:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4927, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6266:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 4933, "initialValue": {"arguments": [{"id": 4931, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4911, "src": "6311:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 4929, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4909, "src": "6293:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6300:10:27", "memberName": "staticcall", "nodeType": "MemberAccess", "src": "6293:17:27", "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": 4932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6293:23:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "6251:65:27"}, {"expression": {"arguments": [{"id": 4935, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4926, "src": "6350:7:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 4936, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4928, "src": "6359:10:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 4937, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4913, "src": "6371:12:27", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 4934, "name": "verifyCallResult", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5024, "src": "6333:16:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"}}, "id": 4938, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6333:51:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4917, "id": 4939, "nodeType": "Return", "src": "6326:58:27"}]}, "documentation": {"id": 4907, "nodeType": "StructuredDocumentation", "src": "5827:173:27", "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"}, "id": 4941, "implemented": true, "kind": "function", "modifiers": [], "name": "functionStaticCall", "nameLocation": "6014:18:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4914, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4909, "mutability": "mutable", "name": "target", "nameLocation": "6050:6:27", "nodeType": "VariableDeclaration", "scope": 4941, "src": "6042:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4908, "name": "address", "nodeType": "ElementaryTypeName", "src": "6042:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4911, "mutability": "mutable", "name": "data", "nameLocation": "6079:4:27", "nodeType": "VariableDeclaration", "scope": 4941, "src": "6066:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4910, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6066:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 4913, "mutability": "mutable", "name": "errorMessage", "nameLocation": "6107:12:27", "nodeType": "VariableDeclaration", "scope": 4941, "src": "6093:26:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4912, "name": "string", "nodeType": "ElementaryTypeName", "src": "6093:6:27", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "6032:93:27"}, "returnParameters": {"id": 4917, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4916, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4941, "src": "6149:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4915, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6149:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6148:14:27"}, "scope": 5025, "src": "6005:386:27", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 4957, "nodeType": "Block", "src": "6667:101:27", "statements": [{"expression": {"arguments": [{"id": 4952, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4944, "src": "6705:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4953, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4946, "src": "6713:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", "id": 4954, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6719:41:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", "typeString": "literal_string \"Address: low-level delegate call failed\""}, "value": "Address: low-level delegate call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", "typeString": "literal_string \"Address: low-level delegate call failed\""}], "id": 4951, "name": "functionDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [4958, 4993], "referencedDeclaration": 4993, "src": "6684:20:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"}}, "id": 4955, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6684:77:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4950, "id": 4956, "nodeType": "Return", "src": "6677:84:27"}]}, "documentation": {"id": 4942, "nodeType": "StructuredDocumentation", "src": "6397:168:27", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"}, "id": 4958, "implemented": true, "kind": "function", "modifiers": [], "name": "functionDelegateCall", "nameLocation": "6579:20:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4947, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4944, "mutability": "mutable", "name": "target", "nameLocation": "6608:6:27", "nodeType": "VariableDeclaration", "scope": 4958, "src": "6600:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4943, "name": "address", "nodeType": "ElementaryTypeName", "src": "6600:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4946, "mutability": "mutable", "name": "data", "nameLocation": "6629:4:27", "nodeType": "VariableDeclaration", "scope": 4958, "src": "6616:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4945, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6616:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6599:35:27"}, "returnParameters": {"id": 4950, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4949, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4958, "src": "6653:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4948, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6653:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6652:14:27"}, "scope": 5025, "src": "6570:198:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 4992, "nodeType": "Block", "src": "7109:232:27", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 4972, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4961, "src": "7138:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 4971, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4748, "src": "7127:10:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 4973, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7127:18:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", "id": 4974, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7147:40:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520", "typeString": "literal_string \"Address: delegate call to non-contract\""}, "value": "Address: delegate call to non-contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520", "typeString": "literal_string \"Address: delegate call to non-contract\""}], "id": 4970, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7119:7:27", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4975, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7119:69:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4976, "nodeType": "ExpressionStatement", "src": "7119:69:27"}, {"assignments": [4978, 4980], "declarations": [{"constant": false, "id": 4978, "mutability": "mutable", "name": "success", "nameLocation": "7205:7:27", "nodeType": "VariableDeclaration", "scope": 4992, "src": "7200:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4977, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7200:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 4980, "mutability": "mutable", "name": "returndata", "nameLocation": "7227:10:27", "nodeType": "VariableDeclaration", "scope": 4992, "src": "7214:23:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4979, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7214:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 4985, "initialValue": {"arguments": [{"id": 4983, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4963, "src": "7261:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 4981, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4961, "src": "7241:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7248:12:27", "memberName": "delegatecall", "nodeType": "MemberAccess", "src": "7241:19:27", "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": 4984, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7241:25:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "7199:67:27"}, {"expression": {"arguments": [{"id": 4987, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4978, "src": "7300:7:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 4988, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4980, "src": "7309:10:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 4989, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4965, "src": "7321:12:27", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 4986, "name": "verifyCallResult", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5024, "src": "7283:16:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"}}, "id": 4990, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7283:51:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4969, "id": 4991, "nodeType": "Return", "src": "7276:58:27"}]}, "documentation": {"id": 4959, "nodeType": "StructuredDocumentation", "src": "6774:175:27", "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"}, "id": 4993, "implemented": true, "kind": "function", "modifiers": [], "name": "functionDelegateCall", "nameLocation": "6963:20:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4966, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4961, "mutability": "mutable", "name": "target", "nameLocation": "7001:6:27", "nodeType": "VariableDeclaration", "scope": 4993, "src": "6993:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4960, "name": "address", "nodeType": "ElementaryTypeName", "src": "6993:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4963, "mutability": "mutable", "name": "data", "nameLocation": "7030:4:27", "nodeType": "VariableDeclaration", "scope": 4993, "src": "7017:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4962, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7017:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 4965, "mutability": "mutable", "name": "errorMessage", "nameLocation": "7058:12:27", "nodeType": "VariableDeclaration", "scope": 4993, "src": "7044:26:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4964, "name": "string", "nodeType": "ElementaryTypeName", "src": "7044:6:27", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "6983:93:27"}, "returnParameters": {"id": 4969, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4968, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4993, "src": "7095:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4967, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7095:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "7094:14:27"}, "scope": 5025, "src": "6954:387:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 5023, "nodeType": "Block", "src": "7721:582:27", "statements": [{"condition": {"id": 5005, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4996, "src": "7735:7:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 5021, "nodeType": "Block", "src": "7792:505:27", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 5009, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4998, "src": "7876:10:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 5010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7887:6:27", "memberName": "length", "nodeType": "MemberAccess", "src": "7876:17:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 5011, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7896:1:27", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7876:21:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 5019, "nodeType": "Block", "src": "8234:53:27", "statements": [{"expression": {"arguments": [{"id": 5016, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5000, "src": "8259:12:27", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 5015, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "8252:6:27", "typeDescriptions": {"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure"}}, "id": 5017, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8252:20:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5018, "nodeType": "ExpressionStatement", "src": "8252:20:27"}]}, "id": 5020, "nodeType": "IfStatement", "src": "7872:415:27", "trueBody": {"id": 5014, "nodeType": "Block", "src": "7899:329:27", "statements": [{"AST": {"nodeType": "YulBlock", "src": "8069:145:27", "statements": [{"nodeType": "YulVariableDeclaration", "src": "8091:40:27", "value": {"arguments": [{"name": "returndata", "nodeType": "YulIdentifier", "src": "8120:10:27"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "8114:5:27"}, "nodeType": "YulFunctionCall", "src": "8114:17:27"}, "variables": [{"name": "returndata_size", "nodeType": "YulTypedName", "src": "8095:15:27", "type": ""}]}, {"expression": {"arguments": [{"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "8163:2:27", "type": "", "value": "32"}, {"name": "returndata", "nodeType": "YulIdentifier", "src": "8167:10:27"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "8159:3:27"}, "nodeType": "YulFunctionCall", "src": "8159:19:27"}, {"name": "returndata_size", "nodeType": "YulIdentifier", "src": "8180:15:27"}], "functionName": {"name": "revert", "nodeType": "YulIdentifier", "src": "8152:6:27"}, "nodeType": "YulFunctionCall", "src": "8152:44:27"}, "nodeType": "YulExpressionStatement", "src": "8152:44:27"}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 4998, "isOffset": false, "isSlot": false, "src": "8120:10:27", "valueSize": 1}, {"declaration": 4998, "isOffset": false, "isSlot": false, "src": "8167:10:27", "valueSize": 1}], "id": 5013, "nodeType": "InlineAssembly", "src": "8060:154:27"}]}}]}, "id": 5022, "nodeType": "IfStatement", "src": "7731:566:27", "trueBody": {"id": 5008, "nodeType": "Block", "src": "7744:42:27", "statements": [{"expression": {"id": 5006, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4998, "src": "7765:10:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 5004, "id": 5007, "nodeType": "Return", "src": "7758:17:27"}]}}]}, "documentation": {"id": 4994, "nodeType": "StructuredDocumentation", "src": "7347:209:27", "text": " @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"}, "id": 5024, "implemented": true, "kind": "function", "modifiers": [], "name": "verifyCallResult", "nameLocation": "7570:16:27", "nodeType": "FunctionDefinition", "parameters": {"id": 5001, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4996, "mutability": "mutable", "name": "success", "nameLocation": "7601:7:27", "nodeType": "VariableDeclaration", "scope": 5024, "src": "7596:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4995, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7596:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 4998, "mutability": "mutable", "name": "returndata", "nameLocation": "7631:10:27", "nodeType": "VariableDeclaration", "scope": 5024, "src": "7618:23:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4997, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7618:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 5000, "mutability": "mutable", "name": "errorMessage", "nameLocation": "7665:12:27", "nodeType": "VariableDeclaration", "scope": 5024, "src": "7651:26:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4999, "name": "string", "nodeType": "ElementaryTypeName", "src": "7651:6:27", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "7586:97:27"}, "returnParameters": {"id": 5004, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5003, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5024, "src": "7707:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 5002, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7707:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "7706:14:27"}, "scope": 5025, "src": "7561:742:27", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 5026, "src": "194:8111:27", "usedErrors": []}], "src": "101:8205:27"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Context.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/utils/Context.sol", "exportedSymbols": {"Context": [5047]}, "id": 5048, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5027, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "86:23:28"}, {"abstract": true, "baseContracts": [], "canonicalName": "Context", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 5028, "nodeType": "StructuredDocumentation", "src": "111:496:28", "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": 5047, "linearizedBaseContracts": [5047], "name": "Context", "nameLocation": "626:7:28", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 5036, "nodeType": "Block", "src": "702:34:28", "statements": [{"expression": {"expression": {"id": 5033, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "719:3:28", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 5034, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "723:6:28", "memberName": "sender", "nodeType": "MemberAccess", "src": "719:10:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 5032, "id": 5035, "nodeType": "Return", "src": "712:17:28"}]}, "id": 5037, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgSender", "nameLocation": "649:10:28", "nodeType": "FunctionDefinition", "parameters": {"id": 5029, "nodeType": "ParameterList", "parameters": [], "src": "659:2:28"}, "returnParameters": {"id": 5032, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5031, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5037, "src": "693:7:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5030, "name": "address", "nodeType": "ElementaryTypeName", "src": "693:7:28", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "692:9:28"}, "scope": 5047, "src": "640:96:28", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 5045, "nodeType": "Block", "src": "809:32:28", "statements": [{"expression": {"expression": {"id": 5042, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "826:3:28", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 5043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "830:4:28", "memberName": "data", "nodeType": "MemberAccess", "src": "826:8:28", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "functionReturnParameters": 5041, "id": 5044, "nodeType": "Return", "src": "819:15:28"}]}, "id": 5046, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgData", "nameLocation": "751:8:28", "nodeType": "FunctionDefinition", "parameters": {"id": 5038, "nodeType": "ParameterList", "parameters": [], "src": "759:2:28"}, "returnParameters": {"id": 5041, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5040, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5046, "src": "793:14:28", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 5039, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "793:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "792:16:28"}, "scope": 5047, "src": "742:99:28", "stateMutability": "view", "virtual": true, "visibility": "internal"}], "scope": 5048, "src": "608:235:28", "usedErrors": []}], "src": "86:758:28"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Strings.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/utils/Strings.sol", "exportedSymbols": {"Strings": [5273]}, "id": 5274, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5049, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "101:23:29"}, {"abstract": false, "baseContracts": [], "canonicalName": "Strings", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 5050, "nodeType": "StructuredDocumentation", "src": "126:34:29", "text": " @dev String operations."}, "fullyImplemented": true, "id": 5273, "linearizedBaseContracts": [5273], "name": "Strings", "nameLocation": "169:7:29", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 5053, "mutability": "constant", "name": "_HEX_SYMBOLS", "nameLocation": "208:12:29", "nodeType": "VariableDeclaration", "scope": 5273, "src": "183:58:29", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}, "typeName": {"id": 5051, "name": "bytes16", "nodeType": "ElementaryTypeName", "src": "183:7:29", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}}, "value": {"hexValue": "30313233343536373839616263646566", "id": 5052, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "223:18:29", "typeDescriptions": {"typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f", "typeString": "literal_string \"0123456789abcdef\""}, "value": "0123456789abcdef"}, "visibility": "private"}, {"constant": true, "id": 5056, "mutability": "constant", "name": "_ADDRESS_LENGTH", "nameLocation": "270:15:29", "nodeType": "VariableDeclaration", "scope": 5273, "src": "247:43:29", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 5054, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "247:5:29", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": {"hexValue": "3230", "id": 5055, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "288:2:29", "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "visibility": "private"}, {"body": {"id": 5134, "nodeType": "Block", "src": "463:632:29", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5066, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5064, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5059, "src": "665:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 5065, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "674:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "665:10:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5070, "nodeType": "IfStatement", "src": "661:51:29", "trueBody": {"id": 5069, "nodeType": "Block", "src": "677:35:29", "statements": [{"expression": {"hexValue": "30", "id": 5067, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "698:3:29", "typeDescriptions": {"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\""}, "value": "0"}, "functionReturnParameters": 5063, "id": 5068, "nodeType": "Return", "src": "691:10:29"}]}}, {"assignments": [5072], "declarations": [{"constant": false, "id": 5072, "mutability": "mutable", "name": "temp", "nameLocation": "729:4:29", "nodeType": "VariableDeclaration", "scope": 5134, "src": "721:12:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5071, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "721:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5074, "initialValue": {"id": 5073, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5059, "src": "736:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "721:20:29"}, {"assignments": [5076], "declarations": [{"constant": false, "id": 5076, "mutability": "mutable", "name": "digits", "nameLocation": "759:6:29", "nodeType": "VariableDeclaration", "scope": 5134, "src": "751:14:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5075, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "751:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5077, "nodeType": "VariableDeclarationStatement", "src": "751:14:29"}, {"body": {"id": 5088, "nodeType": "Block", "src": "793:57:29", "statements": [{"expression": {"id": 5082, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "807:8:29", "subExpression": {"id": 5081, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5076, "src": "807:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5083, "nodeType": "ExpressionStatement", "src": "807:8:29"}, {"expression": {"id": 5086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5084, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5072, "src": "829:4:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"hexValue": "3130", "id": 5085, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "837:2:29", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "829:10:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5087, "nodeType": "ExpressionStatement", "src": "829:10:29"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5078, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5072, "src": "782:4:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 5079, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "790:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "782:9:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5089, "nodeType": "WhileStatement", "src": "775:75:29"}, {"assignments": [5091], "declarations": [{"constant": false, "id": 5091, "mutability": "mutable", "name": "buffer", "nameLocation": "872:6:29", "nodeType": "VariableDeclaration", "scope": 5134, "src": "859:19:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 5090, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "859:5:29", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 5096, "initialValue": {"arguments": [{"id": 5094, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5076, "src": "891:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5093, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "881:9:29", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 5092, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "885:5:29", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 5095, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "881:17:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "859:39:29"}, {"body": {"id": 5127, "nodeType": "Block", "src": "927:131:29", "statements": [{"expression": {"id": 5102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5100, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5076, "src": "941:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"hexValue": "31", "id": 5101, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "951:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "941:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5103, "nodeType": "ExpressionStatement", "src": "941:11:29"}, {"expression": {"id": 5121, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 5104, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5091, "src": "966:6:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 5106, "indexExpression": {"id": 5105, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5076, "src": "973:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "966:14:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "3438", "id": 5111, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "996:2:29", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5114, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5059, "src": "1009:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"hexValue": "3130", "id": 5115, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1017:2:29", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "1009:10:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5113, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1001:7:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 5112, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1001:7:29", "typeDescriptions": {}}}, "id": 5117, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1001:19:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "996:24:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5110, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "990:5:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 5109, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "990:5:29", "typeDescriptions": {}}}, "id": 5119, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "990:31:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 5108, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "983:6:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)"}, "typeName": {"id": 5107, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "983:6:29", "typeDescriptions": {}}}, "id": 5120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "983:39:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "966:56:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 5122, "nodeType": "ExpressionStatement", "src": "966:56:29"}, {"expression": {"id": 5125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5123, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5059, "src": "1036:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"hexValue": "3130", "id": 5124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1045:2:29", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "1036:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5126, "nodeType": "ExpressionStatement", "src": "1036:11:29"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5097, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5059, "src": "915:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 5098, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "924:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "915:10:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5128, "nodeType": "WhileStatement", "src": "908:150:29"}, {"expression": {"arguments": [{"id": 5131, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5091, "src": "1081:6:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 5130, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1074:6:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 5129, "name": "string", "nodeType": "ElementaryTypeName", "src": "1074:6:29", "typeDescriptions": {}}}, "id": 5132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1074:14:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 5063, "id": 5133, "nodeType": "Return", "src": "1067:21:29"}]}, "documentation": {"id": 5057, "nodeType": "StructuredDocumentation", "src": "297:90:29", "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."}, "id": 5135, "implemented": true, "kind": "function", "modifiers": [], "name": "toString", "nameLocation": "401:8:29", "nodeType": "FunctionDefinition", "parameters": {"id": 5060, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5059, "mutability": "mutable", "name": "value", "nameLocation": "418:5:29", "nodeType": "VariableDeclaration", "scope": 5135, "src": "410:13:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5058, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "410:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "409:15:29"}, "returnParameters": {"id": 5063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5062, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5135, "src": "448:13:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5061, "name": "string", "nodeType": "ElementaryTypeName", "src": "448:6:29", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "447:15:29"}, "scope": 5273, "src": "392:703:29", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 5175, "nodeType": "Block", "src": "1274:255:29", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5143, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5138, "src": "1288:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 5144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1297:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1288:10:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5149, "nodeType": "IfStatement", "src": "1284:54:29", "trueBody": {"id": 5148, "nodeType": "Block", "src": "1300:38:29", "statements": [{"expression": {"hexValue": "30783030", "id": 5146, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1321:6:29", "typeDescriptions": {"typeIdentifier": "t_stringliteral_27489e20a0060b723a1748bdff5e44570ee9fae64141728105692eac6031e8a4", "typeString": "literal_string \"0x00\""}, "value": "0x00"}, "functionReturnParameters": 5142, "id": 5147, "nodeType": "Return", "src": "1314:13:29"}]}}, {"assignments": [5151], "declarations": [{"constant": false, "id": 5151, "mutability": "mutable", "name": "temp", "nameLocation": "1355:4:29", "nodeType": "VariableDeclaration", "scope": 5175, "src": "1347:12:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5150, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1347:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5153, "initialValue": {"id": 5152, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5138, "src": "1362:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1347:20:29"}, {"assignments": [5155], "declarations": [{"constant": false, "id": 5155, "mutability": "mutable", "name": "length", "nameLocation": "1385:6:29", "nodeType": "VariableDeclaration", "scope": 5175, "src": "1377:14:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5154, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1377:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5157, "initialValue": {"hexValue": "30", "id": 5156, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1394:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "1377:18:29"}, {"body": {"id": 5168, "nodeType": "Block", "src": "1423:57:29", "statements": [{"expression": {"id": 5162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1437:8:29", "subExpression": {"id": 5161, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5155, "src": "1437:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5163, "nodeType": "ExpressionStatement", "src": "1437:8:29"}, {"expression": {"id": 5166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5164, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5151, "src": "1459:4:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "38", "id": 5165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1468:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8"}, "value": "8"}, "src": "1459:10:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5167, "nodeType": "ExpressionStatement", "src": "1459:10:29"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5158, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5151, "src": "1412:4:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 5159, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1420:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1412:9:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5169, "nodeType": "WhileStatement", "src": "1405:75:29"}, {"expression": {"arguments": [{"id": 5171, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5138, "src": "1508:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5172, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5155, "src": "1515:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5170, "name": "toHexString", "nodeType": "Identifier", "overloadedDeclarations": [5176, 5252, 5272], "referencedDeclaration": 5252, "src": "1496:11:29", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256,uint256) pure returns (string memory)"}}, "id": 5173, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1496:26:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 5142, "id": 5174, "nodeType": "Return", "src": "1489:33:29"}]}, "documentation": {"id": 5136, "nodeType": "StructuredDocumentation", "src": "1101:94:29", "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."}, "id": 5176, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "1209:11:29", "nodeType": "FunctionDefinition", "parameters": {"id": 5139, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5138, "mutability": "mutable", "name": "value", "nameLocation": "1229:5:29", "nodeType": "VariableDeclaration", "scope": 5176, "src": "1221:13:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5137, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1221:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1220:15:29"}, "returnParameters": {"id": 5142, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5141, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5176, "src": "1259:13:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5140, "name": "string", "nodeType": "ElementaryTypeName", "src": "1259:6:29", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1258:15:29"}, "scope": 5273, "src": "1200:329:29", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 5251, "nodeType": "Block", "src": "1742:351:29", "statements": [{"assignments": [5187], "declarations": [{"constant": false, "id": 5187, "mutability": "mutable", "name": "buffer", "nameLocation": "1765:6:29", "nodeType": "VariableDeclaration", "scope": 5251, "src": "1752:19:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 5186, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1752:5:29", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 5196, "initialValue": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 5190, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 5191, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5181, "src": "1788:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1784:10:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "32", "id": 5193, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1797:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "1784:14:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5189, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1774:9:29", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 5188, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1778:5:29", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 5195, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1774:25:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "1752:47:29"}, {"expression": {"id": 5201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 5197, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5187, "src": "1809:6:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 5199, "indexExpression": {"hexValue": "30", "id": 5198, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1816:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1809:9:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 5200, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1821:3:29", "typeDescriptions": {"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\""}, "value": "0"}, "src": "1809:15:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 5202, "nodeType": "ExpressionStatement", "src": "1809:15:29"}, {"expression": {"id": 5207, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 5203, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5187, "src": "1834:6:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 5205, "indexExpression": {"hexValue": "31", "id": 5204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1841:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1834:9:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "78", "id": 5206, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1846:3:29", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83", "typeString": "literal_string \"x\""}, "value": "x"}, "src": "1834:15:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 5208, "nodeType": "ExpressionStatement", "src": "1834:15:29"}, {"body": {"id": 5237, "nodeType": "Block", "src": "1904:87:29", "statements": [{"expression": {"id": 5231, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 5223, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5187, "src": "1918:6:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 5225, "indexExpression": {"id": 5224, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5210, "src": "1925:1:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1918:9:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"baseExpression": {"id": 5226, "name": "_HEX_SYMBOLS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5053, "src": "1930:12:29", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}}, "id": 5230, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5227, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5179, "src": "1943:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"hexValue": "307866", "id": 5228, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1951:3:29", "typeDescriptions": {"typeIdentifier": "t_rational_15_by_1", "typeString": "int_const 15"}, "value": "0xf"}, "src": "1943:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1930:25:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "1918:37:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 5232, "nodeType": "ExpressionStatement", "src": "1918:37:29"}, {"expression": {"id": 5235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5233, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5179, "src": "1969:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "34", "id": 5234, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1979:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "1969:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5236, "nodeType": "ExpressionStatement", "src": "1969:11:29"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5217, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5210, "src": "1892:1:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "31", "id": 5218, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1896:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1892:5:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5238, "initializationExpression": {"assignments": [5210], "declarations": [{"constant": false, "id": 5210, "mutability": "mutable", "name": "i", "nameLocation": "1872:1:29", "nodeType": "VariableDeclaration", "scope": 5238, "src": "1864:9:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5209, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1864:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5216, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 5211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1876:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 5212, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5181, "src": "1880:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1876:10:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 5214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1889:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1876:14:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1864:26:29"}, "loopExpression": {"expression": {"id": 5221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": true, "src": "1899:3:29", "subExpression": {"id": 5220, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5210, "src": "1901:1:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5222, "nodeType": "ExpressionStatement", "src": "1899:3:29"}, "nodeType": "ForStatement", "src": "1859:132:29"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5240, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5179, "src": "2008:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 5241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2017:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2008:10:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74", "id": 5243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2020:34:29", "typeDescriptions": {"typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", "typeString": "literal_string \"Strings: hex length insufficient\""}, "value": "Strings: hex length insufficient"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", "typeString": "literal_string \"Strings: hex length insufficient\""}], "id": 5239, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2000:7:29", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5244, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2000:55:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5245, "nodeType": "ExpressionStatement", "src": "2000:55:29"}, {"expression": {"arguments": [{"id": 5248, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5187, "src": "2079:6:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 5247, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2072:6:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 5246, "name": "string", "nodeType": "ElementaryTypeName", "src": "2072:6:29", "typeDescriptions": {}}}, "id": 5249, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2072:14:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 5185, "id": 5250, "nodeType": "Return", "src": "2065:21:29"}]}, "documentation": {"id": 5177, "nodeType": "StructuredDocumentation", "src": "1535:112:29", "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."}, "id": 5252, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "1661:11:29", "nodeType": "FunctionDefinition", "parameters": {"id": 5182, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5179, "mutability": "mutable", "name": "value", "nameLocation": "1681:5:29", "nodeType": "VariableDeclaration", "scope": 5252, "src": "1673:13:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5178, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1673:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5181, "mutability": "mutable", "name": "length", "nameLocation": "1696:6:29", "nodeType": "VariableDeclaration", "scope": 5252, "src": "1688:14:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5180, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1688:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1672:31:29"}, "returnParameters": {"id": 5185, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5184, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5252, "src": "1727:13:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5183, "name": "string", "nodeType": "ElementaryTypeName", "src": "1727:6:29", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1726:15:29"}, "scope": 5273, "src": "1652:441:29", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 5271, "nodeType": "Block", "src": "2318:76:29", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [{"id": 5265, "name": "addr", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5255, "src": "2363:4:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5264, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2355:7:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)"}, "typeName": {"id": 5263, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "2355:7:29", "typeDescriptions": {}}}, "id": 5266, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2355:13:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint160", "typeString": "uint160"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint160", "typeString": "uint160"}], "id": 5262, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2347:7:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 5261, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2347:7:29", "typeDescriptions": {}}}, "id": 5267, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2347:22:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5268, "name": "_ADDRESS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5056, "src": "2371:15:29", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 5260, "name": "toHexString", "nodeType": "Identifier", "overloadedDeclarations": [5176, 5252, 5272], "referencedDeclaration": 5252, "src": "2335:11:29", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256,uint256) pure returns (string memory)"}}, "id": 5269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2335:52:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 5259, "id": 5270, "nodeType": "Return", "src": "2328:59:29"}]}, "documentation": {"id": 5253, "nodeType": "StructuredDocumentation", "src": "2099:141:29", "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."}, "id": 5272, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "2254:11:29", "nodeType": "FunctionDefinition", "parameters": {"id": 5256, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5255, "mutability": "mutable", "name": "addr", "nameLocation": "2274:4:29", "nodeType": "VariableDeclaration", "scope": 5272, "src": "2266:12:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5254, "name": "address", "nodeType": "ElementaryTypeName", "src": "2266:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2265:14:29"}, "returnParameters": {"id": 5259, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5258, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5272, "src": "2303:13:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5257, "name": "string", "nodeType": "ElementaryTypeName", "src": "2303:6:29", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2302:15:29"}, "scope": 5273, "src": "2245:149:29", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 5274, "src": "161:2235:29", "usedErrors": []}], "src": "101:2296:29"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol", "exportedSymbols": {"ERC165": [5297], "IERC165": [5309]}, "id": 5298, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5275, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "99:23:30"}, {"absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", "file": "./IERC165.sol", "id": 5276, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 5298, "sourceUnit": 5310, "src": "124:23:30", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 5278, "name": "IERC165", "nameLocations": ["754:7:30"], "nodeType": "IdentifierPath", "referencedDeclaration": 5309, "src": "754:7:30"}, "id": 5279, "nodeType": "InheritanceSpecifier", "src": "754:7:30"}], "canonicalName": "ERC165", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 5277, "nodeType": "StructuredDocumentation", "src": "149:576:30", "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."}, "fullyImplemented": true, "id": 5297, "linearizedBaseContracts": [5297, 5309], "name": "ERC165", "nameLocation": "744:6:30", "nodeType": "ContractDefinition", "nodes": [{"baseFunctions": [5308], "body": {"id": 5295, "nodeType": "Block", "src": "920:64:30", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 5293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5288, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5282, "src": "937:11:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 5290, "name": "IERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5309, "src": "957:7:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC165_$5309_$", "typeString": "type(contract IERC165)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC165_$5309_$", "typeString": "type(contract IERC165)"}], "id": 5289, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "952:4:30", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 5291, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "952:13:30", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$5309", "typeString": "type(contract IERC165)"}}, "id": 5292, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "966:11:30", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "952:25:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "937:40:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 5287, "id": 5294, "nodeType": "Return", "src": "930:47:30"}]}, "documentation": {"id": 5280, "nodeType": "StructuredDocumentation", "src": "768:56:30", "text": " @dev See {IERC165-supportsInterface}."}, "functionSelector": "01ffc9a7", "id": 5296, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "838:17:30", "nodeType": "FunctionDefinition", "overrides": {"id": 5284, "nodeType": "OverrideSpecifier", "overrides": [], "src": "896:8:30"}, "parameters": {"id": 5283, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5282, "mutability": "mutable", "name": "interfaceId", "nameLocation": "863:11:30", "nodeType": "VariableDeclaration", "scope": 5296, "src": "856:18:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 5281, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "856:6:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "855:20:30"}, "returnParameters": {"id": 5287, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5286, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5296, "src": "914:4:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5285, "name": "bool", "nodeType": "ElementaryTypeName", "src": "914:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "913:6:30"}, "scope": 5297, "src": "829:155:30", "stateMutability": "view", "virtual": true, "visibility": "public"}], "scope": 5298, "src": "726:260:30", "usedErrors": []}], "src": "99:888:30"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", "exportedSymbols": {"IERC165": [5309]}, "id": 5310, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5299, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "100:23:31"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC165", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 5300, "nodeType": "StructuredDocumentation", "src": "125:279:31", "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\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": 5309, "linearizedBaseContracts": [5309], "name": "IERC165", "nameLocation": "415:7:31", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 5301, "nodeType": "StructuredDocumentation", "src": "429:340:31", "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[EIP 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": 5308, "implemented": false, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "783:17:31", "nodeType": "FunctionDefinition", "parameters": {"id": 5304, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5303, "mutability": "mutable", "name": "interfaceId", "nameLocation": "808:11:31", "nodeType": "VariableDeclaration", "scope": 5308, "src": "801:18:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 5302, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "801:6:31", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "800:20:31"}, "returnParameters": {"id": 5307, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5306, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5308, "src": "844:4:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5305, "name": "bool", "nodeType": "ElementaryTypeName", "src": "844:4:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "843:6:31"}, "scope": 5309, "src": "774:76:31", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 5310, "src": "405:447:31", "usedErrors": []}], "src": "100:753:31"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ERC721Test.sol": {"AST": {"absolutePath": "contracts/ERC721Test.sol", "exportedSymbols": {"ERC721": [4444], "ERC721Test": [5387], "ERC721URIStorage": [4703], "IERC721": [4560], "Ownable": [2808]}, "id": 5388, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5311, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:32"}, {"absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol", "file": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol", "id": 5315, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 5388, "sourceUnit": 4704, "src": "56:121:32", "symbolAliases": [{"foreign": {"id": 5312, "name": "IERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4560, "src": "65:7:32", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 5313, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4444, "src": "74:6:32", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 5314, "name": "ERC721URIStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4703, "src": "82:16:32", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/access/Ownable.sol", "file": "@openzeppelin/contracts/access/Ownable.sol", "id": 5317, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 5388, "sourceUnit": 2809, "src": "178:69:32", "symbolAliases": [{"foreign": {"id": 5316, "name": "Ownable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2808, "src": "187:7:32", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 5319, "name": "ERC721URIStorage", "nameLocations": ["364:16:32"], "nodeType": "IdentifierPath", "referencedDeclaration": 4703, "src": "364:16:32"}, "id": 5320, "nodeType": "InheritanceSpecifier", "src": "364:16:32"}, {"baseName": {"id": 5321, "name": "Ownable", "nameLocations": ["382:7:32"], "nodeType": "IdentifierPath", "referencedDeclaration": 2808, "src": "382:7:32"}, "id": 5322, "nodeType": "InheritanceSpecifier", "src": "382:7:32"}], "canonicalName": "ERC721Test", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 5318, "nodeType": "StructuredDocumentation", "src": "249:91:32", "text": " @dev This contract is using for testing create course with external NFT Contract"}, "fullyImplemented": true, "id": 5387, "linearizedBaseContracts": [5387, 2808, 4703, 4444, 4730, 4560, 5297, 5309, 5047], "name": "ERC721Test", "nameLocation": "350:10:32", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "9f0432214927ca5d54e705bee45cb45cd0b88d9c6bc15906cc3498feb1d81310", "id": 5330, "name": "MintedNFT", "nameLocation": "402:9:32", "nodeType": "EventDefinition", "parameters": {"id": 5329, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5324, "indexed": false, "mutability": "mutable", "name": "to", "nameLocation": "420:2:32", "nodeType": "VariableDeclaration", "scope": 5330, "src": "412:10:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5323, "name": "address", "nodeType": "ElementaryTypeName", "src": "412:7:32", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 5326, "indexed": false, "mutability": "mutable", "name": "tokenId", "nameLocation": "432:7:32", "nodeType": "VariableDeclaration", "scope": 5330, "src": "424:15:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5325, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "424:7:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5328, "indexed": false, "mutability": "mutable", "name": "uri", "nameLocation": "448:3:32", "nodeType": "VariableDeclaration", "scope": 5330, "src": "441:10:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5327, "name": "string", "nodeType": "ElementaryTypeName", "src": "441:6:32", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "411:41:32"}, "src": "396:57:32"}, {"constant": false, "documentation": {"id": 5331, "nodeType": "StructuredDocumentation", "src": "459:58:32", "text": " @notice ID of Minted NFT, increase by 1"}, "functionSelector": "714cff56", "id": 5333, "mutability": "mutable", "name": "tokenIds", "nameLocation": "537:8:32", "nodeType": "VariableDeclaration", "scope": 5387, "src": "522:23:32", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5332, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "public"}, {"body": {"id": 5345, "nodeType": "Block", "src": "766:2:32", "statements": []}, "documentation": {"id": 5334, "nodeType": "StructuredDocumentation", "src": "552:134:32", "text": " @notice Function called when contract is deployed\n @param name Name of NFT\n @param symbol Symbol of NFT"}, "id": 5346, "implemented": true, "kind": "constructor", "modifiers": [{"arguments": [{"id": 5341, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5336, "src": "752:4:32", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 5342, "name": "symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5338, "src": "758:6:32", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "id": 5343, "kind": "baseConstructorSpecifier", "modifierName": {"id": 5340, "name": "ERC721", "nameLocations": ["745:6:32"], "nodeType": "IdentifierPath", "referencedDeclaration": 4444, "src": "745:6:32"}, "nodeType": "ModifierInvocation", "src": "745:20:32"}], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 5339, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5336, "mutability": "mutable", "name": "name", "nameLocation": "717:4:32", "nodeType": "VariableDeclaration", "scope": 5346, "src": "703:18:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5335, "name": "string", "nodeType": "ElementaryTypeName", "src": "703:6:32", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 5338, "mutability": "mutable", "name": "symbol", "nameLocation": "737:6:32", "nodeType": "VariableDeclaration", "scope": 5346, "src": "723:20:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5337, "name": "string", "nodeType": "ElementaryTypeName", "src": "723:6:32", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "702:42:32"}, "returnParameters": {"id": 5344, "nodeType": "ParameterList", "parameters": [], "src": "766:0:32"}, "scope": 5387, "src": "691:77:32", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 5385, "nodeType": "Block", "src": "1012:200:32", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 5362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5357, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5349, "src": "1030:3:32", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 5360, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1045:1:32", "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": 5359, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1037:7:32", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 5358, "name": "address", "nodeType": "ElementaryTypeName", "src": "1037:7:32", "typeDescriptions": {}}}, "id": 5361, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1037:10:32", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1030:17:32", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c69642061646472657373", "id": 5363, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1049:17:32", "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": 5356, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1022:7:32", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5364, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1022:45:32", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5365, "nodeType": "ExpressionStatement", "src": "1022:45:32"}, {"expression": {"id": 5367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1077:10:32", "subExpression": {"id": 5366, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5333, "src": "1077:8:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5368, "nodeType": "ExpressionStatement", "src": "1077:10:32"}, {"expression": {"arguments": [{"id": 5370, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5349, "src": "1107:3:32", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5371, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5333, "src": "1112:8:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5369, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [4059, 4088], "referencedDeclaration": 4059, "src": "1097:9:32", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 5372, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1097:24:32", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5373, "nodeType": "ExpressionStatement", "src": "1097:24:32"}, {"expression": {"arguments": [{"id": 5375, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5333, "src": "1144:8:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5376, "name": "_uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5351, "src": "1154:4:32", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 5374, "name": "_setTokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4672, "src": "1131:12:32", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (uint256,string memory)"}}, "id": 5377, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1131:28:32", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5378, "nodeType": "ExpressionStatement", "src": "1131:28:32"}, {"eventCall": {"arguments": [{"id": 5380, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5349, "src": "1185:3:32", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5381, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5333, "src": "1190:8:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5382, "name": "_uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5351, "src": "1200:4:32", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 5379, "name": "MintedNFT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5330, "src": "1175:9:32", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,uint256,string memory)"}}, "id": 5383, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1175:30:32", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5384, "nodeType": "EmitStatement", "src": "1170:35:32"}]}, "documentation": {"id": 5347, "nodeType": "StructuredDocumentation", "src": "774:164:32", "text": " @notice mint a NFT for _to address\n @param _to address of user\n @param _uri Ipfs link of NFT\n \n emit { MintedNFT } events"}, "functionSelector": "eacabe14", "id": 5386, "implemented": true, "kind": "function", "modifiers": [{"id": 5354, "kind": "modifierInvocation", "modifierName": {"id": 5353, "name": "onlyOwner", "nameLocations": ["1002:9:32"], "nodeType": "IdentifierPath", "referencedDeclaration": 2727, "src": "1002:9:32"}, "nodeType": "ModifierInvocation", "src": "1002:9:32"}], "name": "mintNFT", "nameLocation": "952:7:32", "nodeType": "FunctionDefinition", "parameters": {"id": 5352, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5349, "mutability": "mutable", "name": "_to", "nameLocation": "968:3:32", "nodeType": "VariableDeclaration", "scope": 5386, "src": "960:11:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5348, "name": "address", "nodeType": "ElementaryTypeName", "src": "960:7:32", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 5351, "mutability": "mutable", "name": "_uri", "nameLocation": "987:4:32", "nodeType": "VariableDeclaration", "scope": 5386, "src": "973:18:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5350, "name": "string", "nodeType": "ElementaryTypeName", "src": "973:6:32", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "959:33:32"}, "returnParameters": {"id": 5355, "nodeType": "ParameterList", "parameters": [], "src": "1012:0:32"}, "scope": 5387, "src": "943:269:32", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 5388, "src": "341:873:32", "usedErrors": []}], "src": "32:1182:32"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/IOUToken.sol": {"AST": {"absolutePath": "contracts/IOUToken.sol", "exportedSymbols": {"ERC20": [3474], "IOUToken": [5429]}, "id": 5430, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5389, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:33"}, {"absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "id": 5391, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 5430, "sourceUnit": 3475, "src": "56:70:33", "symbolAliases": [{"foreign": {"id": 5390, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3474, "src": "65:5:33", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 5393, "name": "ERC20", "nameLocations": ["212:5:33"], "nodeType": "IdentifierPath", "referencedDeclaration": 3474, "src": "212:5:33"}, "id": 5394, "nodeType": "InheritanceSpecifier", "src": "212:5:33"}], "canonicalName": "IOUToken", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 5392, "nodeType": "StructuredDocumentation", "src": "128:62:33", "text": " @title IOUToken Contract\n @author ReBaked Team"}, "fullyImplemented": true, "id": 5429, "linearizedBaseContracts": [5429, 3474, 3577, 3552, 5047], "name": "IOUToken", "nameLocation": "200:8:33", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 5414, "nodeType": "Block", "src": "342:46:33", "statements": [{"expression": {"arguments": [{"id": 5410, "name": "account_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5396, "src": "358:8:33", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5411, "name": "totalSupply_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5398, "src": "368:12:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5409, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3291, "src": "352:5:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 5412, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "352:29:33", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5413, "nodeType": "ExpressionStatement", "src": "352:29:33"}]}, "id": 5415, "implemented": true, "kind": "constructor", "modifiers": [{"arguments": [{"id": 5405, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5400, "src": "326:5:33", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 5406, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5402, "src": "333:7:33", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "id": 5407, "kind": "baseConstructorSpecifier", "modifierName": {"id": 5404, "name": "ERC20", "nameLocations": ["320:5:33"], "nodeType": "IdentifierPath", "referencedDeclaration": 3474, "src": "320:5:33"}, "nodeType": "ModifierInvocation", "src": "320:21:33"}], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 5403, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5396, "mutability": "mutable", "name": "account_", "nameLocation": "244:8:33", "nodeType": "VariableDeclaration", "scope": 5415, "src": "236:16:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5395, "name": "address", "nodeType": "ElementaryTypeName", "src": "236:7:33", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 5398, "mutability": "mutable", "name": "totalSupply_", "nameLocation": "262:12:33", "nodeType": "VariableDeclaration", "scope": 5415, "src": "254:20:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5397, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "254:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5400, "mutability": "mutable", "name": "name_", "nameLocation": "290:5:33", "nodeType": "VariableDeclaration", "scope": 5415, "src": "276:19:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5399, "name": "string", "nodeType": "ElementaryTypeName", "src": "276:6:33", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 5402, "mutability": "mutable", "name": "symbol_", "nameLocation": "311:7:33", "nodeType": "VariableDeclaration", "scope": 5415, "src": "297:21:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5401, "name": "string", "nodeType": "ElementaryTypeName", "src": "297:6:33", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "235:84:33"}, "returnParameters": {"id": 5408, "nodeType": "ParameterList", "parameters": [], "src": "342:0:33"}, "scope": 5429, "src": "224:164:33", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 5427, "nodeType": "Block", "src": "556:45:33", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5422, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "572:10:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5423, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "572:12:33", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5424, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5418, "src": "586:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5421, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3363, "src": "566:5:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 5425, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "566:28:33", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5426, "nodeType": "ExpressionStatement", "src": "566:28:33"}]}, "documentation": {"id": 5416, "nodeType": "StructuredDocumentation", "src": "394:117:33", "text": " @notice Burn owned token\n @param amount_ Amount of token want to burn\n Emit {Transfer}"}, "functionSelector": "42966c68", "id": 5428, "implemented": true, "kind": "function", "modifiers": [], "name": "burn", "nameLocation": "525:4:33", "nodeType": "FunctionDefinition", "parameters": {"id": 5419, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5418, "mutability": "mutable", "name": "amount_", "nameLocation": "538:7:33", "nodeType": "VariableDeclaration", "scope": 5428, "src": "530:15:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5417, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "530:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "529:17:33"}, "returnParameters": {"id": 5420, "nodeType": "ParameterList", "parameters": [], "src": "556:0:33"}, "scope": 5429, "src": "516:85:33", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 5430, "src": "191:412:33", "usedErrors": []}], "src": "32:572:33"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/LearnToEarn.sol": {"AST": {"absolutePath": "contracts/LearnToEarn.sol", "exportedSymbols": {"Course": [8428], "ERC165CheckerUpgradeable": [2639], "IERC20Upgradeable": [419], "IERC721Upgradeable": [1762], "ILearnToEarn": [8537], "INFTReward": [8572], "LearnToEarn": [6300], "Learner": [8438], "OwnableUpgradeable": [131], "ReentrancyGuardUpgradeable": [341], "SafeERC20Upgradeable": [736]}, "id": 6301, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5431, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:34"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", "id": 5433, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 342, "src": "57:121:34", "symbolAliases": [{"foreign": {"id": 5432, "name": "ReentrancyGuardUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "66:26:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "id": 5435, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 132, "src": "179:103:34", "symbolAliases": [{"foreign": {"id": 5434, "name": "OwnableUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "188:18:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "id": 5438, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 737, "src": "283:137:34", "symbolAliases": [{"foreign": {"id": 5436, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "292:17:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 5437, "name": "SafeERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 736, "src": "311:20:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol", "id": 5440, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 1763, "src": "421:109:34", "symbolAliases": [{"foreign": {"id": 5439, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "430:18:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol", "id": 5442, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 2640, "src": "531:128:34", "symbolAliases": [{"foreign": {"id": 5441, "name": "ERC165CheckerUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2639, "src": "540:24:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ILearnToEarn.sol", "file": "./interfaces/ILearnToEarn.sol", "id": 5446, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 8538, "src": "660:78:34", "symbolAliases": [{"foreign": {"id": 5443, "name": "ILearnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8537, "src": "669:12:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 5444, "name": "Course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8428, "src": "683:6:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 5445, "name": "Learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8438, "src": "691:7:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/INFTReward.sol", "file": "./interfaces/INFTReward.sol", "id": 5448, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 8573, "src": "739:57:34", "symbolAliases": [{"foreign": {"id": 5447, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "748:10:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 5449, "name": "ReentrancyGuardUpgradeable", "nameLocations": ["822:26:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 341, "src": "822:26:34"}, "id": 5450, "nodeType": "InheritanceSpecifier", "src": "822:26:34"}, {"baseName": {"id": 5451, "name": "OwnableUpgradeable", "nameLocations": ["850:18:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 131, "src": "850:18:34"}, "id": 5452, "nodeType": "InheritanceSpecifier", "src": "850:18:34"}, {"baseName": {"id": 5453, "name": "ILearnToEarn", "nameLocations": ["870:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8537, "src": "870:12:34"}, "id": 5454, "nodeType": "InheritanceSpecifier", "src": "870:12:34"}], "canonicalName": "LearnToEarn", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 6300, "linearizedBaseContracts": [6300, 8537, 131, 2219, 341, 282], "name": "LearnToEarn", "nameLocation": "807:11:34", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 5458, "libraryName": {"id": 5455, "name": "SafeERC20Upgradeable", "nameLocations": ["895:20:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 736, "src": "895:20:34"}, "nodeType": "UsingForDirective", "src": "889:49:34", "typeName": {"id": 5457, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 5456, "name": "IERC20Upgradeable", "nameLocations": ["920:17:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "920:17:34"}, "referencedDeclaration": 419, "src": "920:17:34", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}}, {"global": false, "id": 5461, "libraryName": {"id": 5459, "name": "ERC165CheckerUpgradeable", "nameLocations": ["949:24:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 2639, "src": "949:24:34"}, "nodeType": "UsingForDirective", "src": "943:43:34", "typeName": {"id": 5460, "name": "address", "nodeType": "ElementaryTypeName", "src": "978:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, {"constant": false, "id": 5466, "mutability": "mutable", "name": "courseData", "nameLocation": "1053:10:34", "nodeType": "VariableDeclaration", "scope": 6300, "src": "1018:45:34", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course)"}, "typeName": {"id": 5465, "keyType": {"id": 5462, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1026:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1018:26:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course)"}, "valueType": {"id": 5464, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 5463, "name": "Course", "nameLocations": ["1037:6:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "1037:6:34"}, "referencedDeclaration": 8428, "src": "1037:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}}, "visibility": "private"}, {"constant": false, "id": 5473, "mutability": "mutable", "name": "learnerData", "nameLocation": "1171:11:34", "nodeType": "VariableDeclaration", "scope": 6300, "src": "1115:67:34", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Learner))"}, "typeName": {"id": 5472, "keyType": {"id": 5467, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1123:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1115:47:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Learner))"}, "valueType": {"id": 5471, "keyType": {"id": 5468, "name": "address", "nodeType": "ElementaryTypeName", "src": "1142:7:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1134:27:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$", "typeString": "mapping(address => struct Learner)"}, "valueType": {"id": 5470, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 5469, "name": "Learner", "nameLocations": ["1153:7:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8438, "src": "1153:7:34"}, "referencedDeclaration": 8438, "src": "1153:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner"}}}}, "visibility": "private"}, {"body": {"id": 5486, "nodeType": "Block", "src": "1288:63:34", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5481, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5479, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5476, "src": "1306:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 5480, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1316:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1306:11:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5a65726f20616d6f756e74", "id": 5482, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1319:13:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_499f3f4b0ad3588aa1eb6e198be77bff643a4218ffbf2bef1370e58aadea5df4", "typeString": "literal_string \"Zero amount\""}, "value": "Zero amount"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_499f3f4b0ad3588aa1eb6e198be77bff643a4218ffbf2bef1370e58aadea5df4", "typeString": "literal_string \"Zero amount\""}], "id": 5478, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1298:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5483, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1298:35:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5484, "nodeType": "ExpressionStatement", "src": "1298:35:34"}, {"id": 5485, "nodeType": "PlaceholderStatement", "src": "1343:1:34"}]}, "documentation": {"id": 5474, "nodeType": "StructuredDocumentation", "src": "1189:60:34", "text": " @notice Throws if amount provided is zero"}, "id": 5487, "name": "nonZero", "nameLocation": "1263:7:34", "nodeType": "ModifierDefinition", "parameters": {"id": 5477, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5476, "mutability": "mutable", "name": "amount_", "nameLocation": "1279:7:34", "nodeType": "VariableDeclaration", "scope": 5487, "src": "1271:15:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5475, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1271:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1270:17:34"}, "src": "1254:97:34", "virtual": false, "visibility": "internal"}, {"body": {"id": 5504, "nodeType": "Block", "src": "1490:169:34", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 5499, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 5493, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "1563:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 5495, "indexExpression": {"id": 5494, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5490, "src": "1574:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1563:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 5496, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1585:7:34", "memberName": "creator", "nodeType": "MemberAccess", "referencedDeclaration": 8405, "src": "1563:29:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 5497, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "1596:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5498, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1596:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1563:45:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "63616c6c6572206973206e6f7420636f757273652063726561746f72", "id": 5500, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1610:30:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_6894a100d8d07d9daec9061ac8cbc5cd1f723ebb591831d8b6c58b4b547e48fe", "typeString": "literal_string \"caller is not course creator\""}, "value": "caller is not course creator"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_6894a100d8d07d9daec9061ac8cbc5cd1f723ebb591831d8b6c58b4b547e48fe", "typeString": "literal_string \"caller is not course creator\""}], "id": 5492, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1555:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5501, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1555:86:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5502, "nodeType": "ExpressionStatement", "src": "1555:86:34"}, {"id": 5503, "nodeType": "PlaceholderStatement", "src": "1651:1:34"}]}, "documentation": {"id": 5488, "nodeType": "StructuredDocumentation", "src": "1357:88:34", "text": " @notice Throws if called by any account other than the course creator"}, "id": 5505, "name": "onlyCreator", "nameLocation": "1459:11:34", "nodeType": "ModifierDefinition", "parameters": {"id": 5491, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5490, "mutability": "mutable", "name": "_courseId", "nameLocation": "1479:9:34", "nodeType": "VariableDeclaration", "scope": 5505, "src": "1471:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5489, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1471:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "1470:19:34"}, "src": "1450:209:34", "virtual": false, "visibility": "internal"}, {"body": {"id": 5521, "nodeType": "Block", "src": "1771:157:34", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 5511, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "1844:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 5513, "indexExpression": {"id": 5512, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5508, "src": "1855:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1844:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 5514, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1866:11:34", "memberName": "timeRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 8421, "src": "1844:33:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 5515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1881:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1844:38:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f7572736520686173206265656e2072656d6f766564", "id": 5517, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1884:25:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fec35ac67795bd54ed81cdf5954e18327f4b22011c0d7dcf7681729a8d06fbd3", "typeString": "literal_string \"Course has been removed\""}, "value": "Course has been removed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_fec35ac67795bd54ed81cdf5954e18327f4b22011c0d7dcf7681729a8d06fbd3", "typeString": "literal_string \"Course has been removed\""}], "id": 5510, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1836:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5518, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1836:74:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5519, "nodeType": "ExpressionStatement", "src": "1836:74:34"}, {"id": 5520, "nodeType": "PlaceholderStatement", "src": "1920:1:34"}]}, "documentation": {"id": 5506, "nodeType": "StructuredDocumentation", "src": "1665:60:34", "text": " @notice Throws if course has been removed"}, "id": 5522, "name": "activeCourse", "nameLocation": "1739:12:34", "nodeType": "ModifierDefinition", "parameters": {"id": 5509, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5508, "mutability": "mutable", "name": "_courseId", "nameLocation": "1760:9:34", "nodeType": "VariableDeclaration", "scope": 5522, "src": "1752:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5507, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1752:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "1751:19:34"}, "src": "1730:198:34", "virtual": false, "visibility": "internal"}, {"body": {"id": 5534, "nodeType": "Block", "src": "2099:67:34", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 5528, "name": "__Ownable_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "2109:14:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 5529, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2109:16:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5530, "nodeType": "ExpressionStatement", "src": "2109:16:34"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 5531, "name": "__ReentrancyGuard_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 305, "src": "2135:22:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 5532, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2135:24:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5533, "nodeType": "ExpressionStatement", "src": "2135:24:34"}]}, "documentation": {"id": 5523, "nodeType": "StructuredDocumentation", "src": "1978:75:34", "text": " @notice Initialize of contract (replace for constructor)"}, "functionSelector": "8129fc1c", "id": 5535, "implemented": true, "kind": "function", "modifiers": [{"id": 5526, "kind": "modifierInvocation", "modifierName": {"id": 5525, "name": "initializer", "nameLocations": ["2087:11:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 202, "src": "2087:11:34"}, "nodeType": "ModifierInvocation", "src": "2087:11:34"}], "name": "initialize", "nameLocation": "2067:10:34", "nodeType": "FunctionDefinition", "parameters": {"id": 5524, "nodeType": "ParameterList", "parameters": [], "src": "2077:2:34"}, "returnParameters": {"id": 5527, "nodeType": "ParameterList", "parameters": [], "src": "2099:0:34"}, "scope": 6300, "src": "2058:108:34", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"baseFunctions": [8507], "body": {"id": 5713, "nodeType": "Block", "src": "3107:1834:34", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 5567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5562, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "3125:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 5565, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3151:1:34", "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": 5564, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3143:7:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 5563, "name": "address", "nodeType": "ElementaryTypeName", "src": "3143:7:34", "typeDescriptions": {}}}, "id": 5566, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3143:10:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3125:28:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c6964207265776172642061646472657373", "id": 5568, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3155:24:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_6898b9fe3dfe29cad934ea252a7d8dd316b5385de07bb0a6b5be26d61cd10733", "typeString": "literal_string \"Invalid reward address\""}, "value": "Invalid reward address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_6898b9fe3dfe29cad934ea252a7d8dd316b5385de07bb0a6b5be26d61cd10733", "typeString": "literal_string \"Invalid reward address\""}], "id": 5561, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3117:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5569, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3117:63:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5570, "nodeType": "ExpressionStatement", "src": "3117:63:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5572, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5540, "src": "3198:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 5573, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5542, "src": "3209:6:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3198:17:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c696420627564676574", "id": 5575, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3217:16:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_953b3fb674fb21b5d42be556f7973161b4ff71b28b150528eda3492abb0654a4", "typeString": "literal_string \"Invalid budget\""}, "value": "Invalid budget"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_953b3fb674fb21b5d42be556f7973161b4ff71b28b150528eda3492abb0654a4", "typeString": "literal_string \"Invalid budget\""}], "id": 5571, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3190:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3190:44:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5577, "nodeType": "ExpressionStatement", "src": "3190:44:34"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5578, "name": "_timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5544, "src": "3247:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 5579, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3261:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3247:15:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"expression": {"id": 5592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5589, "name": "_timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5544, "src": "3339:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 5590, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "3352:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 5591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3358:9:34", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "3352:15:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3339:28:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5593, "nodeType": "ExpressionStatement", "src": "3339:28:34"}, "id": 5594, "nodeType": "IfStatement", "src": "3244:123:34", "trueBody": {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5585, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5582, "name": "_timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5544, "src": "3272:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"expression": {"id": 5583, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "3286:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 5584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3292:9:34", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "3286:15:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3272:29:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c69642074696d65207374617274", "id": 5586, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3303:20:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a0add4a6f50df9fdaaad5dd4d1d2f4ffb8cae2d2a8af167d1eb5c4c943da5829", "typeString": "literal_string \"Invalid time start\""}, "value": "Invalid time start"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a0add4a6f50df9fdaaad5dd4d1d2f4ffb8cae2d2a8af167d1eb5c4c943da5829", "typeString": "literal_string \"Invalid time start\""}], "id": 5581, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3264:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3264:60:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5588, "nodeType": "ExpressionStatement", "src": "3264:60:34"}}, {"assignments": [5596], "declarations": [{"constant": false, "id": 5596, "mutability": "mutable", "name": "isValidTimeEndBonus", "nameLocation": "3383:19:34", "nodeType": "VariableDeclaration", "scope": 5713, "src": "3378:24:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5595, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3378:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 5611, "initialValue": {"condition": {"id": 5597, "name": "_isUsingDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5548, "src": "3405:16:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 5608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5602, "name": "_timeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5546, "src": "3447:13:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 5603, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3464:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3447:18:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5605, "name": "_timeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5546, "src": "3469:13:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 5606, "name": "_timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5544, "src": "3485:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3469:26:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3447:48:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 5609, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3446:50:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "3405:91:34", "trueExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5600, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5598, "name": "_timeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5546, "src": "3425:13:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 5599, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3441:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3425:17:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 5601, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3424:19:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "3378:118:34"}, {"expression": {"arguments": [{"id": 5613, "name": "isValidTimeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5596, "src": "3514:19:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c69642074696d6520656e6420626f6e7573", "id": 5614, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3535:24:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_594f322e139d4166865edfc167a5a249d2f442d68f1d193dc8e7741e8652fec8", "typeString": "literal_string \"Invalid time end bonus\""}, "value": "Invalid time end bonus"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_594f322e139d4166865edfc167a5a249d2f442d68f1d193dc8e7741e8652fec8", "typeString": "literal_string \"Invalid time end bonus\""}], "id": 5612, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3506:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5615, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3506:54:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5616, "nodeType": "ExpressionStatement", "src": "3506:54:34"}, {"assignments": [5618], "declarations": [{"constant": false, "id": 5618, "mutability": "mutable", "name": "_courseId", "nameLocation": "3579:9:34", "nodeType": "VariableDeclaration", "scope": 5713, "src": "3571:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5617, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3571:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 5621, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 5619, "name": "_generateCourseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6299, "src": "3591:17:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", "typeString": "function () view returns (bytes32)"}}, "id": 5620, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3591:19:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "3571:39:34"}, {"assignments": [5623], "declarations": [{"constant": false, "id": 5623, "mutability": "mutable", "name": "_canMintNFT", "nameLocation": "3625:11:34", "nodeType": "VariableDeclaration", "scope": 5713, "src": "3620:16:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5622, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3620:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 5625, "initialValue": {"hexValue": "66616c7365", "id": 5624, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3639:5:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "nodeType": "VariableDeclarationStatement", "src": "3620:24:34"}, {"condition": {"id": 5627, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3658:14:34", "subExpression": {"id": 5626, "name": "_isBonusToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5550, "src": "3659:13:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5667, "nodeType": "IfStatement", "src": "3654:551:34", "trueBody": {"id": 5666, "nodeType": "Block", "src": "3674:531:34", "statements": [{"expression": {"id": 5636, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5628, "name": "_canMintNFT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5623, "src": "3811:11:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"arguments": [{"id": 5632, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "3863:10:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}], "id": 5631, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "3858:4:34", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 5633, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3858:16:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_INFTReward_$8572", "typeString": "type(contract INFTReward)"}}, "id": 5634, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "3875:11:34", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "3858:28:34", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"id": 5629, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "3825:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 5630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3840:17:34", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 2495, "src": "3825:32:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 5635, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3825:62:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3811:76:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5637, "nodeType": "ExpressionStatement", "src": "3811:76:34"}, {"condition": {"id": 5639, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3906:12:34", "subExpression": {"id": 5638, "name": "_canMintNFT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5623, "src": "3907:11:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5665, "nodeType": "IfStatement", "src": "3902:293:34", "trueBody": {"id": 5664, "nodeType": "Block", "src": "3920:275:34", "statements": [{"expression": {"arguments": [{"arguments": [{"expression": {"arguments": [{"id": 5644, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "3984:18:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}], "id": 5643, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "3979:4:34", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 5645, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3979:24:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Upgradeable_$1762", "typeString": "type(contract IERC721Upgradeable)"}}, "id": 5646, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4004:11:34", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "3979:36:34", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"id": 5641, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "3946:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 5642, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3961:17:34", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 2495, "src": "3946:32:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 5647, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3946:70:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "52657761726420636f6e7472616374206973206e6f7420455243373231", "id": 5648, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4018:31:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_8b0253e73b3deee2c6724a49cb1d65deb278726bc9530048605bdfd3f198ba89", "typeString": "literal_string \"Reward contract is not ERC721\""}, "value": "Reward contract is not ERC721"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_8b0253e73b3deee2c6724a49cb1d65deb278726bc9530048605bdfd3f198ba89", "typeString": "literal_string \"Reward contract is not ERC721\""}], "id": 5640, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3938:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3938:112:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5650, "nodeType": "ExpressionStatement", "src": "3938:112:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5656, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4121:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5657, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4121:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"arguments": [{"id": 5653, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "4095:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5652, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "4076:18:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}}, "id": 5654, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4076:34:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC721Upgradeable_$1762", "typeString": "contract IERC721Upgradeable"}}, "id": 5655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4111:9:34", "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 1687, "src": "4076:44:34", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)"}}, "id": 5658, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4076:58:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 5659, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5540, "src": "4138:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4076:69:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e73756666696369656e742063726561746f7227732062616c616e6365", "id": 5661, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4147:32:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_352533491d1cdbf3e13a7bf4604b6348607c7b6881f17eac13e30536538fee9b", "typeString": "literal_string \"Insufficient creator's balance\""}, "value": "Insufficient creator's balance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_352533491d1cdbf3e13a7bf4604b6348607c7b6881f17eac13e30536538fee9b", "typeString": "literal_string \"Insufficient creator's balance\""}], "id": 5651, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4068:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5662, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4068:112:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5663, "nodeType": "ExpressionStatement", "src": "4068:112:34"}]}}]}}, {"expression": {"id": 5686, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 5668, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "4215:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 5670, "indexExpression": {"id": 5669, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5618, "src": "4226:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4215:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5672, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4269:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5673, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4269:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5674, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "4310:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5675, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5540, "src": "4346:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5676, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5540, "src": "4384:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5677, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5542, "src": "4412:6:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "30", "id": 5678, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4459:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"id": 5679, "name": "_timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5544, "src": "4487:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5680, "name": "_timeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5546, "src": "4525:13:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "30", "id": 5681, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4565:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"id": 5682, "name": "_isUsingDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5548, "src": "4597:16:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 5683, "name": "_isBonusToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5550, "src": "4641:13:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 5684, "name": "_canMintNFT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5623, "src": "4680:11:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"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_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 5671, "name": "Course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8428, "src": "4239:6:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Course_$8428_storage_ptr_$", "typeString": "type(struct Course storage pointer)"}}, "id": 5685, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["4260:7:34", "4295:13:34", "4338:6:34", "4367:15:34", "4405:5:34", "4432:25:34", "4474:11:34", "4511:12:34", "4552:11:34", "4580:15:34", "4627:12:34", "4668:10:34"], "names": ["creator", "rewardAddress", "budget", "budgetAvailable", "bonus", "totalLearnersClaimedBonus", "timeCreated", "timeEndBonus", "timeRemoved", "isUsingDuration", "isBonusToken", "canMintNFT"], "nodeType": "FunctionCall", "src": "4239:463:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "src": "4215:487:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 5687, "nodeType": "ExpressionStatement", "src": "4215:487:34"}, {"condition": {"id": 5688, "name": "_isBonusToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5550, "src": "4717:13:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5703, "nodeType": "IfStatement", "src": "4713:132:34", "trueBody": {"id": 5702, "nodeType": "Block", "src": "4732:113:34", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5693, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4797:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5694, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4797:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 5697, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "4819:4:34", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}], "id": 5696, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4811:7:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 5695, "name": "address", "nodeType": "ElementaryTypeName", "src": "4811:7:34", "typeDescriptions": {}}}, "id": 5698, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4811:13:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5699, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5540, "src": "4826:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"id": 5690, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "4764:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5689, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "4746:17:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 5691, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4746:33:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 5692, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4780:16:34", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 513, "src": "4746:50:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,address,uint256)"}}, "id": 5700, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4746:88:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5701, "nodeType": "ExpressionStatement", "src": "4746:88:34"}]}}, {"eventCall": {"arguments": [{"id": 5705, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5618, "src": "4874:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"arguments": [], "expression": {"argumentTypes": [], "id": 5706, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4885:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5707, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4885:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5708, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "4899:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5709, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5542, "src": "4915:6:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5710, "name": "_timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5544, "src": "4923:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5704, "name": "CreatedCourse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8450, "src": "4860:13:34", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (bytes32,address,address,uint256,uint256)"}}, "id": 5711, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4860:74:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5712, "nodeType": "EmitStatement", "src": "4855:79:34"}]}, "documentation": {"id": 5536, "nodeType": "StructuredDocumentation", "src": "2218:602:34", "text": " @notice Create new course\n @param _rewardAddress Address of token that reward to student after completing course\n @param _budget Total tokens/NFTs that reward\n @param _bonus Bonus when learner completed course\n @param _timeStart Start time of course\n @param _timeEndBonus end date will finish bonus or duration to receive bonus after enrolling in course\n @param _isUsingDuration Using duration for rewarding (true) or using end time (false)\n @param _isBonusToken Awards is token (true) or NFT (false)\n emit {CreatedCourse} event"}, "functionSelector": "b149fd18", "id": 5714, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 5553, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5540, "src": "3069:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 5554, "kind": "modifierInvocation", "modifierName": {"id": 5552, "name": "nonZero", "nameLocations": ["3061:7:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5487, "src": "3061:7:34"}, "nodeType": "ModifierInvocation", "src": "3061:16:34"}, {"arguments": [{"id": 5556, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5542, "src": "3086:6:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 5557, "kind": "modifierInvocation", "modifierName": {"id": 5555, "name": "nonZero", "nameLocations": ["3078:7:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5487, "src": "3078:7:34"}, "nodeType": "ModifierInvocation", "src": "3078:15:34"}, {"id": 5559, "kind": "modifierInvocation", "modifierName": {"id": 5558, "name": "nonReentrant", "nameLocations": ["3094:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 335, "src": "3094:12:34"}, "nodeType": "ModifierInvocation", "src": "3094:12:34"}], "name": "createCourse", "nameLocation": "2834:12:34", "nodeType": "FunctionDefinition", "parameters": {"id": 5551, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5538, "mutability": "mutable", "name": "_rewardAddress", "nameLocation": "2864:14:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "2856:22:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5537, "name": "address", "nodeType": "ElementaryTypeName", "src": "2856:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 5540, "mutability": "mutable", "name": "_budget", "nameLocation": "2896:7:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "2888:15:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5539, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2888:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5542, "mutability": "mutable", "name": "_bonus", "nameLocation": "2921:6:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "2913:14:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5541, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2913:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5544, "mutability": "mutable", "name": "_timeStart", "nameLocation": "2945:10:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "2937:18:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5543, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2937:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5546, "mutability": "mutable", "name": "_timeEndBonus", "nameLocation": "2973:13:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "2965:21:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5545, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2965:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5548, "mutability": "mutable", "name": "_isUsingDuration", "nameLocation": "3001:16:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "2996:21:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5547, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2996:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 5550, "mutability": "mutable", "name": "_isBonusToken", "nameLocation": "3032:13:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "3027:18:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5549, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3027:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2846:205:34"}, "returnParameters": {"id": 5560, "nodeType": "ParameterList", "parameters": [], "src": "3107:0:34"}, "scope": 6300, "src": "2825:2116:34", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8515], "body": {"id": 5796, "nodeType": "Block", "src": "5272:563:34", "statements": [{"assignments": [5735], "declarations": [{"constant": false, "id": 5735, "mutability": "mutable", "name": "course", "nameLocation": "5297:6:34", "nodeType": "VariableDeclaration", "scope": 5796, "src": "5282:21:34", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}, "typeName": {"id": 5734, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 5733, "name": "Course", "nameLocations": ["5282:6:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "5282:6:34"}, "referencedDeclaration": 8428, "src": "5282:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}, "visibility": "internal"}], "id": 5739, "initialValue": {"baseExpression": {"id": 5736, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "5306:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 5738, "indexExpression": {"id": 5737, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5717, "src": "5317:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5306:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5282:45:34"}, {"expression": {"id": 5744, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5740, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5338:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5742, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5345:6:34", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 8409, "src": "5338:13:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 5743, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5719, "src": "5355:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5338:24:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5745, "nodeType": "ExpressionStatement", "src": "5338:24:34"}, {"expression": {"id": 5750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5746, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5372:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5748, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5379:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "5372:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 5749, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5719, "src": "5398:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5372:33:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5751, "nodeType": "ExpressionStatement", "src": "5372:33:34"}, {"condition": {"expression": {"id": 5752, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5420:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5753, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5427:12:34", "memberName": "isBonusToken", "nodeType": "MemberAccess", "referencedDeclaration": 8423, "src": "5420:19:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 5789, "nodeType": "Block", "src": "5566:216:34", "statements": [{"condition": {"id": 5771, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "5584:18:34", "subExpression": {"expression": {"id": 5769, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5585:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5770, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5592:10:34", "memberName": "canMintNFT", "nodeType": "MemberAccess", "referencedDeclaration": 8425, "src": "5585:17:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5788, "nodeType": "IfStatement", "src": "5580:192:34", "trueBody": {"id": 5787, "nodeType": "Block", "src": "5604:168:34", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5783, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5778, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "5681:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5779, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5681:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"arguments": [{"expression": {"id": 5774, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5649:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5775, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5656:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "5649:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5773, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "5630:18:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}}, "id": 5776, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5630:40:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC721Upgradeable_$1762", "typeString": "contract IERC721Upgradeable"}}, "id": 5777, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5671:9:34", "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 1687, "src": "5630:50:34", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)"}}, "id": 5780, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5630:64:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"expression": {"id": 5781, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5698:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5782, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5705:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "5698:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5630:90:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "42616c616e6365206f662063726561746f72206973206e6f7420656e6f756768", "id": 5784, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5722:34:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_83dfce09b3b194edd564abfa34f22662964039406a177c554cc9bdb827d68cd8", "typeString": "literal_string \"Balance of creator is not enough\""}, "value": "Balance of creator is not enough"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_83dfce09b3b194edd564abfa34f22662964039406a177c554cc9bdb827d68cd8", "typeString": "literal_string \"Balance of creator is not enough\""}], "id": 5772, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5622:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5785, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5622:135:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5786, "nodeType": "ExpressionStatement", "src": "5622:135:34"}]}}]}, "id": 5790, "nodeType": "IfStatement", "src": "5416:366:34", "trueBody": {"id": 5768, "nodeType": "Block", "src": "5441:119:34", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5759, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "5512:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5760, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5512:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 5763, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "5534:4:34", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}], "id": 5762, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5526:7:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 5761, "name": "address", "nodeType": "ElementaryTypeName", "src": "5526:7:34", "typeDescriptions": {}}}, "id": 5764, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5526:13:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5765, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5719, "src": "5541:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 5755, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5473:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5756, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5480:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "5473:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5754, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "5455:17:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 5757, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5455:39:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 5758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5495:16:34", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 513, "src": "5455:56:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,address,uint256)"}}, "id": 5766, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5455:94:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5767, "nodeType": "ExpressionStatement", "src": "5455:94:34"}]}}, {"eventCall": {"arguments": [{"id": 5792, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5717, "src": "5809:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 5793, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5719, "src": "5820:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5791, "name": "AddedBudget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8456, "src": "5797:11:34", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,uint256)"}}, "id": 5794, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5797:31:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5795, "nodeType": "EmitStatement", "src": "5792:36:34"}]}, "documentation": {"id": 5715, "nodeType": "StructuredDocumentation", "src": "4947:179:34", "text": " @notice Add more budget to course\n @param _courseId Id of course\n @param _budget Budget that added to course\n emit {AddedBudget} events"}, "functionSelector": "caca4ad3", "id": 5797, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 5722, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5717, "src": "5207:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 5723, "kind": "modifierInvocation", "modifierName": {"id": 5721, "name": "onlyCreator", "nameLocations": ["5195:11:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5505, "src": "5195:11:34"}, "nodeType": "ModifierInvocation", "src": "5195:22:34"}, {"arguments": [{"id": 5725, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5719, "src": "5226:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 5726, "kind": "modifierInvocation", "modifierName": {"id": 5724, "name": "nonZero", "nameLocations": ["5218:7:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5487, "src": "5218:7:34"}, "nodeType": "ModifierInvocation", "src": "5218:16:34"}, {"arguments": [{"id": 5728, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5717, "src": "5248:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 5729, "kind": "modifierInvocation", "modifierName": {"id": 5727, "name": "activeCourse", "nameLocations": ["5235:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5522, "src": "5235:12:34"}, "nodeType": "ModifierInvocation", "src": "5235:23:34"}, {"id": 5731, "kind": "modifierInvocation", "modifierName": {"id": 5730, "name": "nonReentrant", "nameLocations": ["5259:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 335, "src": "5259:12:34"}, "nodeType": "ModifierInvocation", "src": "5259:12:34"}], "name": "addBudget", "nameLocation": "5140:9:34", "nodeType": "FunctionDefinition", "parameters": {"id": 5720, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5717, "mutability": "mutable", "name": "_courseId", "nameLocation": "5158:9:34", "nodeType": "VariableDeclaration", "scope": 5797, "src": "5150:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5716, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5150:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 5719, "mutability": "mutable", "name": "_budget", "nameLocation": "5177:7:34", "nodeType": "VariableDeclaration", "scope": 5797, "src": "5169:15:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5718, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5169:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5149:36:34"}, "returnParameters": {"id": 5732, "nodeType": "ParameterList", "parameters": [], "src": "5272:0:34"}, "scope": 6300, "src": "5131:704:34", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8530], "body": {"id": 6008, "nodeType": "Block", "src": "6584:1681:34", "statements": [{"assignments": [5820], "declarations": [{"constant": false, "id": 5820, "mutability": "mutable", "name": "course", "nameLocation": "6609:6:34", "nodeType": "VariableDeclaration", "scope": 6008, "src": "6594:21:34", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}, "typeName": {"id": 5819, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 5818, "name": "Course", "nameLocations": ["6594:6:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "6594:6:34"}, "referencedDeclaration": 8428, "src": "6594:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}, "visibility": "internal"}], "id": 5824, "initialValue": {"baseExpression": {"id": 5821, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "6618:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 5823, "indexExpression": {"id": 5822, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "6629:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6618:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "6594:45:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 5834, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5829, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 5826, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "6657:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5827, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6664:11:34", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 8417, "src": "6657:18:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"id": 5828, "name": "_timeStarted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5804, "src": "6679:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6657:34:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5833, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5830, "name": "_timeStarted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5804, "src": "6695:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 5831, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "6710:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 5832, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6716:9:34", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "6710:15:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6695:30:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6657:68:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c69642074696d65207374617274", "id": 5835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6727:20:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a0add4a6f50df9fdaaad5dd4d1d2f4ffb8cae2d2a8af167d1eb5c4c943da5829", "typeString": "literal_string \"Invalid time start\""}, "value": "Invalid time start"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a0add4a6f50df9fdaaad5dd4d1d2f4ffb8cae2d2a8af167d1eb5c4c943da5829", "typeString": "literal_string \"Invalid time start\""}], "id": 5825, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6649:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5836, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6649:99:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5837, "nodeType": "ExpressionStatement", "src": "6649:99:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5841, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5839, "name": "_timeCompleted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5806, "src": "6766:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 5840, "name": "_timeStarted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5804, "src": "6783:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6766:29:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c69642074696d6520636f6d706c657465", "id": 5842, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6797:23:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_35becb7e55a7b1042c3a4f0debfe12445315ceb18769da3cc17ee4e5b80b3db1", "typeString": "literal_string \"Invalid time complete\""}, "value": "Invalid time complete"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_35becb7e55a7b1042c3a4f0debfe12445315ceb18769da3cc17ee4e5b80b3db1", "typeString": "literal_string \"Invalid time complete\""}], "id": 5838, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6758:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5843, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6758:63:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5844, "nodeType": "ExpressionStatement", "src": "6758:63:34"}, {"assignments": [5847], "declarations": [{"constant": false, "id": 5847, "mutability": "mutable", "name": "learner", "nameLocation": "6848:7:34", "nodeType": "VariableDeclaration", "scope": 6008, "src": "6832:23:34", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner"}, "typeName": {"id": 5846, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 5845, "name": "Learner", "nameLocations": ["6832:7:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8438, "src": "6832:7:34"}, "referencedDeclaration": 8438, "src": "6832:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner"}}, "visibility": "internal"}], "id": 5853, "initialValue": {"baseExpression": {"baseExpression": {"id": 5848, "name": "learnerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5473, "src": "6858:11:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Learner storage ref))"}}, "id": 5850, "indexExpression": {"id": 5849, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "6870:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6858:22:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$", "typeString": "mapping(address => struct Learner storage ref)"}}, "id": 5852, "indexExpression": {"id": 5851, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "6881:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6858:32:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage", "typeString": "struct Learner storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "6832:58:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5858, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 5855, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "6908:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5856, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6916:13:34", "memberName": "timeCompleted", "nodeType": "MemberAccess", "referencedDeclaration": 8432, "src": "6908:21:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 5857, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6933:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6908:26:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "616c726561647920636f6d706c65746564", "id": 5859, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6936:19:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_230f18378710789dc64312757ac1d12886bb79ee6078298d79265d08db0cfd11", "typeString": "literal_string \"already completed\""}, "value": "already completed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_230f18378710789dc64312757ac1d12886bb79ee6078298d79265d08db0cfd11", "typeString": "literal_string \"already completed\""}], "id": 5854, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6900:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5860, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6900:56:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5861, "nodeType": "ExpressionStatement", "src": "6900:56:34"}, {"expression": {"id": 5866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5862, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "6967:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5864, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6975:11:34", "memberName": "timeStarted", "nodeType": "MemberAccess", "referencedDeclaration": 8430, "src": "6967:19:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 5865, "name": "_timeStarted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5804, "src": "6989:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6967:34:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5867, "nodeType": "ExpressionStatement", "src": "6967:34:34"}, {"assignments": [5869], "declarations": [{"constant": false, "id": 5869, "mutability": "mutable", "name": "canLearnerGetBonus", "nameLocation": "7016:18:34", "nodeType": "VariableDeclaration", "scope": 6008, "src": "7011:23:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5868, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7011:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 5875, "initialValue": {"arguments": [{"id": 5871, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "7049:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 5872, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "7060:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5873, "name": "_timeCompleted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5806, "src": "7070:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5870, "name": "canGetBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6220, "src": "7037:11:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (bytes32,address,uint256) view returns (bool)"}}, "id": 5874, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7037:48:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "7011:74:34"}, {"expression": {"id": 5880, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5876, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "7096:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5878, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7104:13:34", "memberName": "timeCompleted", "nodeType": "MemberAccess", "referencedDeclaration": 8432, "src": "7096:21:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 5879, "name": "_timeCompleted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5806, "src": "7120:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7096:38:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5881, "nodeType": "ExpressionStatement", "src": "7096:38:34"}, {"condition": {"id": 5882, "name": "canLearnerGetBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5869, "src": "7149:18:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 6002, "nodeType": "IfStatement", "src": "7145:1062:34", "trueBody": {"id": 6001, "nodeType": "Block", "src": "7169:1038:34", "statements": [{"expression": {"id": 5888, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5883, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7183:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5885, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7190:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "7183:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"expression": {"id": 5886, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7209:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5887, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7216:5:34", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "7209:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7183:38:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5889, "nodeType": "ExpressionStatement", "src": "7183:38:34"}, {"expression": {"id": 5893, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "7235:34:34", "subExpression": {"expression": {"id": 5890, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7235:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5892, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7242:25:34", "memberName": "totalLearnersClaimedBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8415, "src": "7235:32:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5894, "nodeType": "ExpressionStatement", "src": "7235:34:34"}, {"expression": {"id": 5900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5895, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "7284:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5897, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7292:12:34", "memberName": "timeRewarded", "nodeType": "MemberAccess", "referencedDeclaration": 8434, "src": "7284:20:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 5898, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "7307:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 5899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7313:9:34", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "7307:15:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7284:38:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5901, "nodeType": "ExpressionStatement", "src": "7284:38:34"}, {"condition": {"expression": {"id": 5902, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7341:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5903, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7348:12:34", "memberName": "isBonusToken", "nodeType": "MemberAccess", "referencedDeclaration": 8423, "src": "7341:19:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 5988, "nodeType": "Block", "src": "7477:615:34", "statements": [{"condition": {"expression": {"id": 5915, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7499:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5916, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7506:10:34", "memberName": "canMintNFT", "nodeType": "MemberAccess", "referencedDeclaration": 8425, "src": "7499:17:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 5986, "nodeType": "Block", "src": "7724:354:34", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5950, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 5946, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5809, "src": "7754:7:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 5947, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7762:6:34", "memberName": "length", "nodeType": "MemberAccess", "src": "7754:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 5948, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7772:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5949, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7779:5:34", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "7772:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7754:30:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4e6f7420656e6f756768204e465473", "id": 5951, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7786:17:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_810e89b1b7a08ad5ff0d7b77e73539e15c441915f3bfc810eb4e0b835c888902", "typeString": "literal_string \"Not enough NFTs\""}, "value": "Not enough NFTs"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_810e89b1b7a08ad5ff0d7b77e73539e15c441915f3bfc810eb4e0b835c888902", "typeString": "literal_string \"Not enough NFTs\""}], "id": 5945, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7746:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5952, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7746:58:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5953, "nodeType": "ExpressionStatement", "src": "7746:58:34"}, {"expression": {"id": 5958, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5954, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "7827:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5956, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7835:6:34", "memberName": "nftIds", "nodeType": "MemberAccess", "referencedDeclaration": 8437, "src": "7827:14:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 5957, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5809, "src": "7844:7:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "src": "7827:24:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref"}}, "id": 5959, "nodeType": "ExpressionStatement", "src": "7827:24:34"}, {"body": {"id": 5984, "nodeType": "Block", "src": "7918:142:34", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5976, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "8002:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5977, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8002:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5978, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "8016:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"baseExpression": {"id": 5979, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5809, "src": "8026:7:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 5981, "indexExpression": {"id": 5980, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5961, "src": "8034:1:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8026:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 5972, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7963:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5973, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7970:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "7963:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5971, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "7944:18:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}}, "id": 5974, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7944:40:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC721Upgradeable_$1762", "typeString": "contract IERC721Upgradeable"}}, "id": 5975, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7985:16:34", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1717, "src": "7944:57:34", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256) external"}}, "id": 5982, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7944:93:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5983, "nodeType": "ExpressionStatement", "src": "7944:93:34"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5964, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5961, "src": "7893:1:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 5965, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5809, "src": "7897:7:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 5966, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7905:6:34", "memberName": "length", "nodeType": "MemberAccess", "src": "7897:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7893:18:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5985, "initializationExpression": {"assignments": [5961], "declarations": [{"constant": false, "id": 5961, "mutability": "mutable", "name": "i", "nameLocation": "7886:1:34", "nodeType": "VariableDeclaration", "scope": 5985, "src": "7878:9:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5960, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7878:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5963, "initialValue": {"hexValue": "30", "id": 5962, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7890:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "7878:13:34"}, "loopExpression": {"expression": {"id": 5969, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "7913:3:34", "subExpression": {"id": 5968, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5961, "src": "7913:1:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5970, "nodeType": "ExpressionStatement", "src": "7913:3:34"}, "nodeType": "ForStatement", "src": "7873:187:34"}]}, "id": 5987, "nodeType": "IfStatement", "src": "7495:583:34", "trueBody": {"id": 5944, "nodeType": "Block", "src": "7518:200:34", "statements": [{"body": {"id": 5942, "nodeType": "Block", "src": "7583:117:34", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 5938, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "7667:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"arguments": [{"expression": {"id": 5934, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7640:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5935, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7647:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "7640:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5933, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "7629:10:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}}, "id": 5936, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7629:32:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "id": 5937, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7662:4:34", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 8559, "src": "7629:37:34", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) external returns (uint256)"}}, "id": 5939, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7629:47:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"id": 5928, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "7609:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5931, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7617:6:34", "memberName": "nftIds", "nodeType": "MemberAccess", "referencedDeclaration": 8437, "src": "7609:14:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref"}}, "id": 5932, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7624:4:34", "memberName": "push", "nodeType": "MemberAccess", "src": "7609:19:34", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$", "typeString": "function (uint256[] storage pointer,uint256)"}}, "id": 5940, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7609:68:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5941, "nodeType": "ExpressionStatement", "src": "7609:68:34"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5921, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5918, "src": "7560:1:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 5922, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7564:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5923, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7571:5:34", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "7564:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7560:16:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5943, "initializationExpression": {"assignments": [5918], "declarations": [{"constant": false, "id": 5918, "mutability": "mutable", "name": "i", "nameLocation": "7553:1:34", "nodeType": "VariableDeclaration", "scope": 5943, "src": "7545:9:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5917, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7545:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5920, "initialValue": {"hexValue": "30", "id": 5919, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7557:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "7545:13:34"}, "loopExpression": {"expression": {"id": 5926, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "7578:3:34", "subExpression": {"id": 5925, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5918, "src": "7578:1:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5927, "nodeType": "ExpressionStatement", "src": "7578:3:34"}, "nodeType": "ForStatement", "src": "7540:160:34"}]}}]}, "id": 5989, "nodeType": "IfStatement", "src": "7337:755:34", "trueBody": {"id": 5914, "nodeType": "Block", "src": "7362:109:34", "statements": [{"expression": {"arguments": [{"id": 5909, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "7433:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"expression": {"id": 5910, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7443:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5911, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7450:5:34", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "7443:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 5905, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7398:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5906, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7405:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "7398:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5904, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "7380:17:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 5907, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7380:39:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 5908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7420:12:34", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 487, "src": "7380:52:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,uint256)"}}, "id": 5912, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7380:76:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5913, "nodeType": "ExpressionStatement", "src": "7380:76:34"}]}}, {"eventCall": {"arguments": [{"id": 5991, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "8124:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 5992, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "8135:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"expression": {"id": 5993, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "8145:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5994, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8152:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "8145:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"expression": {"id": 5995, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "8167:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5996, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8174:5:34", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "8167:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 5997, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "8181:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5998, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8189:6:34", "memberName": "nftIds", "nodeType": "MemberAccess", "referencedDeclaration": 8437, "src": "8181:14:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref"}], "id": 5990, "name": "ClaimedReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8475, "src": "8110:13:34", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,address,address,uint256,uint256[] memory)"}}, "id": 5999, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8110:86:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6000, "nodeType": "EmitStatement", "src": "8105:91:34"}]}}, {"eventCall": {"arguments": [{"id": 6004, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "8238:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6005, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "8249:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 6003, "name": "CompletedCourse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8462, "src": "8222:15:34", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)"}}, "id": 6006, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8222:36:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6007, "nodeType": "EmitStatement", "src": "8217:41:34"}]}, "documentation": {"id": 5798, "nodeType": "StructuredDocumentation", "src": "5841:503:34", "text": " @notice Mark learner completed course and transfer bonus to learner\n @param _courseId Id of course\n @param _learner Address of learner\n @param _timeStarted Time when learner enrolled in course (seconds)\n @param _timeCompleted Time when learner complete course (seconds)\n @param _nftIds List Id of nfts that learner will receive if bonus is nfts\n emit {ClaimedReward} events if learner can receive rewards\n emit {CompletedCourse} events"}, "functionSelector": "3c41b482", "id": 6009, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 5812, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "6549:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 5813, "kind": "modifierInvocation", "modifierName": {"id": 5811, "name": "onlyCreator", "nameLocations": ["6537:11:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5505, "src": "6537:11:34"}, "nodeType": "ModifierInvocation", "src": "6537:22:34"}, {"arguments": [{"id": 5815, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "6573:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 5816, "kind": "modifierInvocation", "modifierName": {"id": 5814, "name": "activeCourse", "nameLocations": ["6560:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5522, "src": "6560:12:34"}, "nodeType": "ModifierInvocation", "src": "6560:23:34"}], "name": "completeCourse", "nameLocation": "6358:14:34", "nodeType": "FunctionDefinition", "parameters": {"id": 5810, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5800, "mutability": "mutable", "name": "_courseId", "nameLocation": "6390:9:34", "nodeType": "VariableDeclaration", "scope": 6009, "src": "6382:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5799, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6382:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 5802, "mutability": "mutable", "name": "_learner", "nameLocation": "6417:8:34", "nodeType": "VariableDeclaration", "scope": 6009, "src": "6409:16:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5801, "name": "address", "nodeType": "ElementaryTypeName", "src": "6409:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 5804, "mutability": "mutable", "name": "_timeStarted", "nameLocation": "6443:12:34", "nodeType": "VariableDeclaration", "scope": 6009, "src": "6435:20:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5803, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6435:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5806, "mutability": "mutable", "name": "_timeCompleted", "nameLocation": "6473:14:34", "nodeType": "VariableDeclaration", "scope": 6009, "src": "6465:22:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5805, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6465:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5809, "mutability": "mutable", "name": "_nftIds", "nameLocation": "6514:7:34", "nodeType": "VariableDeclaration", "scope": 6009, "src": "6497:24:34", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 5807, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6497:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5808, "nodeType": "ArrayTypeName", "src": "6497:9:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "visibility": "internal"}], "src": "6372:155:34"}, "returnParameters": {"id": 5817, "nodeType": "ParameterList", "parameters": [], "src": "6584:0:34"}, "scope": 6300, "src": "6349:1916:34", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8536], "body": {"id": 6088, "nodeType": "Block", "src": "8543:562:34", "statements": [{"assignments": [6023], "declarations": [{"constant": false, "id": 6023, "mutability": "mutable", "name": "course", "nameLocation": "8568:6:34", "nodeType": "VariableDeclaration", "scope": 6088, "src": "8553:21:34", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}, "typeName": {"id": 6022, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6021, "name": "Course", "nameLocations": ["8553:6:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "8553:6:34"}, "referencedDeclaration": 8428, "src": "8553:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}, "visibility": "internal"}], "id": 6027, "initialValue": {"baseExpression": {"id": 6024, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "8577:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6026, "indexExpression": {"id": 6025, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6012, "src": "8588:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8577:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "8553:45:34"}, {"expression": {"arguments": [{"expression": {"id": 6029, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8616:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6030, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8623:12:34", "memberName": "isBonusToken", "nodeType": "MemberAccess", "referencedDeclaration": 8423, "src": "8616:19:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c696420616374696f6e", "id": 6031, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8637:16:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_6f2677d92d5145565e0e2d97bb91aa8fab6e90fdadc635557da200934c599b12", "typeString": "literal_string \"Invalid action\""}, "value": "Invalid action"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_6f2677d92d5145565e0e2d97bb91aa8fab6e90fdadc635557da200934c599b12", "typeString": "literal_string \"Invalid action\""}], "id": 6028, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8608:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6032, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8608:46:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6033, "nodeType": "ExpressionStatement", "src": "8608:46:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6038, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6035, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8672:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6036, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8679:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "8672:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 6037, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8697:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "8672:26:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f7574206f6620627564676574", "id": 6039, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8700:15:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7cbbd07cd92f6a74380e3f810dbbe8ab829a82b5adc4c3aa0095bb7b24e67598", "typeString": "literal_string \"Out of budget\""}, "value": "Out of budget"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7cbbd07cd92f6a74380e3f810dbbe8ab829a82b5adc4c3aa0095bb7b24e67598", "typeString": "literal_string \"Out of budget\""}], "id": 6034, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8664:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6040, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8664:52:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6041, "nodeType": "ExpressionStatement", "src": "8664:52:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6043, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8734:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6044, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8741:15:34", "memberName": "isUsingDuration", "nodeType": "MemberAccess", "referencedDeclaration": 8427, "src": "8734:22:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6054, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6048, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6045, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8761:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6046, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8768:12:34", "memberName": "timeEndBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8419, "src": "8761:19:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 6047, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8784:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "8761:24:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6053, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6049, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "8789:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 6050, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8795:9:34", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "8789:15:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 6051, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8807:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6052, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8814:12:34", "memberName": "timeEndBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8419, "src": "8807:19:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8789:37:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "8761:65:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 6055, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "8760:67:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "8734:93:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "54696d6520626f6e757320686173206e6f7420656e646564", "id": 6057, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8829:26:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_221220c1e8d4607929523299e5fe37784f45490374b6fe8e14454751c1d83f2b", "typeString": "literal_string \"Time bonus has not ended\""}, "value": "Time bonus has not ended"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_221220c1e8d4607929523299e5fe37784f45490374b6fe8e14454751c1d83f2b", "typeString": "literal_string \"Time bonus has not ended\""}], "id": 6042, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8726:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6058, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8726:130:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6059, "nodeType": "ExpressionStatement", "src": "8726:130:34"}, {"assignments": [6061], "declarations": [{"constant": false, "id": 6061, "mutability": "mutable", "name": "_amount", "nameLocation": "8875:7:34", "nodeType": "VariableDeclaration", "scope": 6088, "src": "8867:15:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6060, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8867:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6064, "initialValue": {"expression": {"id": 6062, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8885:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6063, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8892:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "8885:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "8867:40:34"}, {"expression": {"id": 6069, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 6065, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8918:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6067, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8925:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "8918:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 6068, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8943:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "8918:26:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6070, "nodeType": "ExpressionStatement", "src": "8918:26:34"}, {"expression": {"arguments": [{"expression": {"id": 6076, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "9007:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6077, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9014:7:34", "memberName": "creator", "nodeType": "MemberAccess", "referencedDeclaration": 8405, "src": "9007:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6078, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6061, "src": "9023:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 6072, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8972:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6073, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8979:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "8972:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 6071, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "8954:17:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 6074, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8954:39:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 6075, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8994:12:34", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 487, "src": "8954:52:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,uint256)"}}, "id": 6079, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8954:77:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6080, "nodeType": "ExpressionStatement", "src": "8954:77:34"}, {"eventCall": {"arguments": [{"id": 6082, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6012, "src": "9063:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"expression": {"id": 6083, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "9074:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6084, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9081:7:34", "memberName": "creator", "nodeType": "MemberAccess", "referencedDeclaration": 8405, "src": "9074:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6085, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6061, "src": "9090:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6081, "name": "WithdrawnBudget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8483, "src": "9047:15:34", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,address,uint256)"}}, "id": 6086, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9047:51:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6087, "nodeType": "EmitStatement", "src": "9042:56:34"}]}, "documentation": {"id": 6010, "nodeType": "StructuredDocumentation", "src": "8271:168:34", "text": " @notice Creator can withdraw tokens bonus after time bonus ended\n @param _courseId Id of the course\n emit {WithdrawnBudget} events"}, "functionSelector": "669e88a1", "id": 6089, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 6015, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6012, "src": "8508:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 6016, "kind": "modifierInvocation", "modifierName": {"id": 6014, "name": "onlyCreator", "nameLocations": ["8496:11:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5505, "src": "8496:11:34"}, "nodeType": "ModifierInvocation", "src": "8496:22:34"}, {"arguments": [{"id": 6018, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6012, "src": "8532:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 6019, "kind": "modifierInvocation", "modifierName": {"id": 6017, "name": "activeCourse", "nameLocations": ["8519:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5522, "src": "8519:12:34"}, "nodeType": "ModifierInvocation", "src": "8519:23:34"}], "name": "withdrawBudget", "nameLocation": "8453:14:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6013, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6012, "mutability": "mutable", "name": "_courseId", "nameLocation": "8476:9:34", "nodeType": "VariableDeclaration", "scope": 6089, "src": "8468:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6011, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8468:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "8467:19:34"}, "returnParameters": {"id": 6020, "nodeType": "ParameterList", "parameters": [], "src": "8543:0:34"}, "scope": 6300, "src": "8444:661:34", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 6150, "nodeType": "Block", "src": "9418:402:34", "statements": [{"assignments": [6103], "declarations": [{"constant": false, "id": 6103, "mutability": "mutable", "name": "course", "nameLocation": "9443:6:34", "nodeType": "VariableDeclaration", "scope": 6150, "src": "9428:21:34", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}, "typeName": {"id": 6102, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6101, "name": "Course", "nameLocations": ["9428:6:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "9428:6:34"}, "referencedDeclaration": 8428, "src": "9428:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}, "visibility": "internal"}], "id": 6107, "initialValue": {"baseExpression": {"id": 6104, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "9452:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6106, "indexExpression": {"id": 6105, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6092, "src": "9463:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9452:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "9428:45:34"}, {"expression": {"id": 6113, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 6108, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9483:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6110, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "9490:11:34", "memberName": "timeRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 8421, "src": "9483:18:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 6111, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "9504:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 6112, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9510:9:34", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "9504:15:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9483:36:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6114, "nodeType": "ExpressionStatement", "src": "9483:36:34"}, {"assignments": [6116], "declarations": [{"constant": false, "id": 6116, "mutability": "mutable", "name": "_amount", "nameLocation": "9538:7:34", "nodeType": "VariableDeclaration", "scope": 6150, "src": "9530:15:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6115, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9530:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6119, "initialValue": {"expression": {"id": 6117, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9548:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6118, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9555:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "9548:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "9530:40:34"}, {"expression": {"id": 6124, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 6120, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9580:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6122, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "9587:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "9580:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 6123, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9605:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "9580:26:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6125, "nodeType": "ExpressionStatement", "src": "9580:26:34"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6126, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9621:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6127, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9628:12:34", "memberName": "isBonusToken", "nodeType": "MemberAccess", "referencedDeclaration": 8423, "src": "9621:19:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6130, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6128, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6116, "src": "9644:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 6129, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9654:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "9644:11:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "9621:34:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 6143, "nodeType": "IfStatement", "src": "9617:142:34", "trueBody": {"id": 6142, "nodeType": "Block", "src": "9657:102:34", "statements": [{"expression": {"arguments": [{"expression": {"id": 6137, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9724:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6138, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9731:7:34", "memberName": "creator", "nodeType": "MemberAccess", "referencedDeclaration": 8405, "src": "9724:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6139, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6116, "src": "9740:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 6133, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9689:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6134, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9696:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "9689:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 6132, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "9671:17:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 6135, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9671:39:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 6136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9711:12:34", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 487, "src": "9671:52:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,uint256)"}}, "id": 6140, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9671:77:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6141, "nodeType": "ExpressionStatement", "src": "9671:77:34"}]}}, {"eventCall": {"arguments": [{"id": 6145, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6092, "src": "9787:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"expression": {"id": 6146, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9798:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6147, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9805:7:34", "memberName": "creator", "nodeType": "MemberAccess", "referencedDeclaration": 8405, "src": "9798:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 6144, "name": "RemovedCourse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8489, "src": "9773:13:34", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)"}}, "id": 6148, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9773:40:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6149, "nodeType": "EmitStatement", "src": "9768:45:34"}]}, "documentation": {"id": 6090, "nodeType": "StructuredDocumentation", "src": "9111:205:34", "text": " @notice Remove course and transfer token to creator\n @dev Only course's creator can call this method\n @param _courseId Id of course\n \n emit {RemovedCourse} events"}, "functionSelector": "9d84bf91", "id": 6151, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 6095, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6092, "src": "9383:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 6096, "kind": "modifierInvocation", "modifierName": {"id": 6094, "name": "onlyCreator", "nameLocations": ["9371:11:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5505, "src": "9371:11:34"}, "nodeType": "ModifierInvocation", "src": "9371:22:34"}, {"arguments": [{"id": 6098, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6092, "src": "9407:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 6099, "kind": "modifierInvocation", "modifierName": {"id": 6097, "name": "activeCourse", "nameLocations": ["9394:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5522, "src": "9394:12:34"}, "nodeType": "ModifierInvocation", "src": "9394:23:34"}], "name": "removeCourse", "nameLocation": "9330:12:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6093, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6092, "mutability": "mutable", "name": "_courseId", "nameLocation": "9351:9:34", "nodeType": "VariableDeclaration", "scope": 6151, "src": "9343:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6091, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9343:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "9342:19:34"}, "returnParameters": {"id": 6100, "nodeType": "ParameterList", "parameters": [], "src": "9418:0:34"}, "scope": 6300, "src": "9321:499:34", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 6219, "nodeType": "Block", "src": "10133:454:34", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6171, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 6163, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10147:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6165, "indexExpression": {"id": 6164, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10158:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10147:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6166, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10169:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "10147:37:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"baseExpression": {"id": 6167, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10187:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6169, "indexExpression": {"id": 6168, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10198:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10187:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6170, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10209:5:34", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "10187:27:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10147:67:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"baseExpression": {"id": 6172, "name": "learnerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5473, "src": "10219:11:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Learner storage ref))"}}, "id": 6174, "indexExpression": {"id": 6173, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10231:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10219:22:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$", "typeString": "mapping(address => struct Learner storage ref)"}}, "id": 6176, "indexExpression": {"id": 6175, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6156, "src": "10242:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10219:32:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage", "typeString": "struct Learner storage ref"}}, "id": 6177, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10252:13:34", "memberName": "timeCompleted", "nodeType": "MemberAccess", "referencedDeclaration": 8432, "src": "10219:46:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 6178, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10268:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "10219:50:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 6180, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "10218:52:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "10147:123:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 6184, "nodeType": "IfStatement", "src": "10143:141:34", "trueBody": {"expression": {"hexValue": "66616c7365", "id": 6182, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "10279:5:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 6162, "id": 6183, "nodeType": "Return", "src": "10272:12:34"}}, {"condition": {"expression": {"baseExpression": {"id": 6185, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10299:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6187, "indexExpression": {"id": 6186, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10310:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10299:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6188, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10321:15:34", "memberName": "isUsingDuration", "nodeType": "MemberAccess", "referencedDeclaration": 8427, "src": "10299:37:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 6204, "nodeType": "IfStatement", "src": "10295:174:34", "trueBody": {"id": 6203, "nodeType": "Block", "src": "10338:131:34", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6189, "name": "_timeCompleted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6158, "src": "10359:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"baseExpression": {"id": 6190, "name": "learnerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5473, "src": "10377:11:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Learner storage ref))"}}, "id": 6192, "indexExpression": {"id": 6191, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10389:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10377:22:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$", "typeString": "mapping(address => struct Learner storage ref)"}}, "id": 6194, "indexExpression": {"id": 6193, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6156, "src": "10400:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10377:32:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage", "typeString": "struct Learner storage ref"}}, "id": 6195, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10410:11:34", "memberName": "timeStarted", "nodeType": "MemberAccess", "referencedDeclaration": 8430, "src": "10377:44:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"baseExpression": {"id": 6196, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10424:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6198, "indexExpression": {"id": 6197, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10435:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10424:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6199, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10446:12:34", "memberName": "timeEndBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8419, "src": "10424:34:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10377:81:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10359:99:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 6162, "id": 6202, "nodeType": "Return", "src": "10352:106:34"}]}}, {"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 6205, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10485:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6207, "indexExpression": {"id": 6206, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10496:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10485:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6208, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10507:12:34", "memberName": "timeEndBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8419, "src": "10485:34:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 6209, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10523:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "10485:39:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6216, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6211, "name": "_timeCompleted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6158, "src": "10528:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"expression": {"baseExpression": {"id": 6212, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10546:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6214, "indexExpression": {"id": 6213, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10557:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10546:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6215, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10568:12:34", "memberName": "timeEndBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8419, "src": "10546:34:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10528:52:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "10485:95:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 6162, "id": 6218, "nodeType": "Return", "src": "10478:102:34"}]}, "documentation": {"id": 6152, "nodeType": "StructuredDocumentation", "src": "9868:151:34", "text": " @notice Check whether a learner can get bonus\n @param _courseId Id of the course\n @param _learner Address of the learner"}, "functionSelector": "fda626ce", "id": 6220, "implemented": true, "kind": "function", "modifiers": [], "name": "canGetBonus", "nameLocation": "10033:11:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6159, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6154, "mutability": "mutable", "name": "_courseId", "nameLocation": "10053:9:34", "nodeType": "VariableDeclaration", "scope": 6220, "src": "10045:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6153, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10045:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 6156, "mutability": "mutable", "name": "_learner", "nameLocation": "10072:8:34", "nodeType": "VariableDeclaration", "scope": 6220, "src": "10064:16:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6155, "name": "address", "nodeType": "ElementaryTypeName", "src": "10064:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 6158, "mutability": "mutable", "name": "_timeCompleted", "nameLocation": "10090:14:34", "nodeType": "VariableDeclaration", "scope": 6220, "src": "10082:22:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6157, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10082:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10044:61:34"}, "returnParameters": {"id": 6162, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6161, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6220, "src": "10127:4:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 6160, "name": "bool", "nodeType": "ElementaryTypeName", "src": "10127:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "10126:6:34"}, "scope": 6300, "src": "10024:563:34", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 6233, "nodeType": "Block", "src": "10793:45:34", "statements": [{"expression": {"baseExpression": {"id": 6229, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10810:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6231, "indexExpression": {"id": 6230, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6223, "src": "10821:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10810:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "functionReturnParameters": 6228, "id": 6232, "nodeType": "Return", "src": "10803:28:34"}]}, "documentation": {"id": 6221, "nodeType": "StructuredDocumentation", "src": "10593:115:34", "text": " @notice Get course details\n @param _courseId Id of course\n @return Details of course"}, "functionSelector": "db631a89", "id": 6234, "implemented": true, "kind": "function", "modifiers": [], "name": "getCourseData", "nameLocation": "10722:13:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6224, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6223, "mutability": "mutable", "name": "_courseId", "nameLocation": "10744:9:34", "nodeType": "VariableDeclaration", "scope": 6234, "src": "10736:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6222, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10736:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "10735:19:34"}, "returnParameters": {"id": 6228, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6227, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6234, "src": "10778:13:34", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course"}, "typeName": {"id": 6226, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6225, "name": "Course", "nameLocations": ["10778:6:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "10778:6:34"}, "referencedDeclaration": 8428, "src": "10778:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}, "visibility": "internal"}], "src": "10777:15:34"}, "scope": 6300, "src": "10713:125:34", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"body": {"id": 6251, "nodeType": "Block", "src": "11122:56:34", "statements": [{"expression": {"baseExpression": {"baseExpression": {"id": 6245, "name": "learnerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5473, "src": "11139:11:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Learner storage ref))"}}, "id": 6247, "indexExpression": {"id": 6246, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6237, "src": "11151:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11139:22:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$", "typeString": "mapping(address => struct Learner storage ref)"}}, "id": 6249, "indexExpression": {"id": 6248, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6239, "src": "11162:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11139:32:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage", "typeString": "struct Learner storage ref"}}, "functionReturnParameters": 6244, "id": 6250, "nodeType": "Return", "src": "11132:39:34"}]}, "documentation": {"id": 6235, "nodeType": "StructuredDocumentation", "src": "10844:173:34", "text": " @notice Get learner course details\n @param _courseId Id of course\n @param _learner Address of learner\n @return Details of learner course"}, "functionSelector": "2cca6f2d", "id": 6252, "implemented": true, "kind": "function", "modifiers": [], "name": "getLearnerData", "nameLocation": "11031:14:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6240, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6237, "mutability": "mutable", "name": "_courseId", "nameLocation": "11054:9:34", "nodeType": "VariableDeclaration", "scope": 6252, "src": "11046:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6236, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11046:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 6239, "mutability": "mutable", "name": "_learner", "nameLocation": "11073:8:34", "nodeType": "VariableDeclaration", "scope": 6252, "src": "11065:16:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6238, "name": "address", "nodeType": "ElementaryTypeName", "src": "11065:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "11045:37:34"}, "returnParameters": {"id": 6244, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6243, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6252, "src": "11106:14:34", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_memory_ptr", "typeString": "struct Learner"}, "typeName": {"id": 6242, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6241, "name": "Learner", "nameLocations": ["11106:7:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8438, "src": "11106:7:34"}, "referencedDeclaration": 8438, "src": "11106:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner"}}, "visibility": "internal"}], "src": "11105:16:34"}, "scope": 6300, "src": "11022:156:34", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"body": {"id": 6275, "nodeType": "Block", "src": "11453:102:34", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 6263, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "11497:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 6264, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11497:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6269, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6266, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "11521:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 6267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11527:6:34", "memberName": "number", "nodeType": "MemberAccess", "src": "11521:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 6268, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11536:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "11521:16:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6265, "name": "blockhash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -5, "src": "11511:9:34", "typeDescriptions": {"typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 6270, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11511:27:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6271, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6255, "src": "11540:6:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 6261, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "11480:3:34", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 6262, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "11484:12:34", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "11480:16:34", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 6272, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11480:67:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 6260, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "11470:9:34", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 6273, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11470:78:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 6259, "id": 6274, "nodeType": "Return", "src": "11463:85:34"}]}, "documentation": {"id": 6253, "nodeType": "StructuredDocumentation", "src": "11229:151:34", "text": " @notice Generates unique id hash based on _msgSender() address and previous block hash.\n @param _nonce nonce\n @return Id"}, "id": 6276, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateId", "nameLocation": "11394:11:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6256, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6255, "mutability": "mutable", "name": "_nonce", "nameLocation": "11414:6:34", "nodeType": "VariableDeclaration", "scope": 6276, "src": "11406:14:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6254, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11406:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "11405:16:34"}, "returnParameters": {"id": 6259, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6258, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6276, "src": "11444:7:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6257, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11444:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "11443:9:34"}, "scope": 6300, "src": "11385:170:34", "stateMutability": "view", "virtual": false, "visibility": "private"}, {"body": {"id": 6298, "nodeType": "Block", "src": "11737:123:34", "statements": [{"expression": {"id": 6286, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6282, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6280, "src": "11747:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"hexValue": "30", "id": 6284, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11771:1:34", "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": 6283, "name": "_generateId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6276, "src": "11759:11:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 6285, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11759:14:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "11747:26:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 6287, "nodeType": "ExpressionStatement", "src": "11747:26:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 6289, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "11791:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6291, "indexExpression": {"id": 6290, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6280, "src": "11802:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11791:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6292, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11813:11:34", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 8417, "src": "11791:33:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 6293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11828:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "11791:38:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6475706c696361746520636f75727365206964", "id": 6295, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11831:21:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_ab1a49f8d660033004bae5dfb805e335cddb5511c04548889cc825ab14a44bb3", "typeString": "literal_string \"duplicate course id\""}, "value": "duplicate course id"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_ab1a49f8d660033004bae5dfb805e335cddb5511c04548889cc825ab14a44bb3", "typeString": "literal_string \"duplicate course id\""}], "id": 6288, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11783:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6296, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11783:70:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6297, "nodeType": "ExpressionStatement", "src": "11783:70:34"}]}, "documentation": {"id": 6277, "nodeType": "StructuredDocumentation", "src": "11561:101:34", "text": " @notice Returns a new unique course id.\n @return _courseId Id of the course."}, "id": 6299, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateCourseId", "nameLocation": "11676:17:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6278, "nodeType": "ParameterList", "parameters": [], "src": "11693:2:34"}, "returnParameters": {"id": 6281, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6280, "mutability": "mutable", "name": "_courseId", "nameLocation": "11726:9:34", "nodeType": "VariableDeclaration", "scope": 6299, "src": "11718:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6279, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11718:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "11717:19:34"}, "scope": 6300, "src": "11667:193:34", "stateMutability": "view", "virtual": false, "visibility": "private"}], "scope": 6301, "src": "798:11064:34", "usedErrors": []}], "src": "32:11830:34"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/LearnToEarnTest.sol": {"AST": {"absolutePath": "contracts/LearnToEarnTest.sol", "exportedSymbols": {"Course": [8428], "ERC721Test": [5387], "LearnToEarn": [6300], "LearnToEarnTest": [6508]}, "id": 6509, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 6302, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:35"}, {"absolutePath": "contracts/LearnToEarn.sol", "file": "./LearnToEarn.sol", "id": 6305, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6509, "sourceUnit": 6301, "src": "56:56:35", "symbolAliases": [{"foreign": {"id": 6303, "name": "LearnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6300, "src": "65:11:35", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6304, "name": "Course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8428, "src": "78:6:35", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/ERC721Test.sol", "file": "./ERC721Test.sol", "id": 6307, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6509, "sourceUnit": 5388, "src": "113:46:35", "symbolAliases": [{"foreign": {"id": 6306, "name": "ERC721Test", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5387, "src": "122:10:35", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "LearnToEarnTest", "contractDependencies": [5387, 6300], "contractKind": "contract", "fullyImplemented": true, "id": 6508, "linearizedBaseContracts": [6508], "name": "LearnToEarnTest", "nameLocation": "170:15:35", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 6310, "mutability": "mutable", "name": "learnToEarn", "nameLocation": "204:11:35", "nodeType": "VariableDeclaration", "scope": 6508, "src": "192:23:35", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}, "typeName": {"id": 6309, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6308, "name": "LearnToEarn", "nameLocations": ["192:11:35"], "nodeType": "IdentifierPath", "referencedDeclaration": 6300, "src": "192:11:35"}, "referencedDeclaration": 6300, "src": "192:11:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "visibility": "internal"}, {"constant": false, "id": 6313, "mutability": "mutable", "name": "erc721Test", "nameLocation": "232:10:35", "nodeType": "VariableDeclaration", "scope": 6508, "src": "221:21:35", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ERC721Test_$5387", "typeString": "contract ERC721Test"}, "typeName": {"id": 6312, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6311, "name": "ERC721Test", "nameLocations": ["221:10:35"], "nodeType": "IdentifierPath", "referencedDeclaration": 5387, "src": "221:10:35"}, "referencedDeclaration": 5387, "src": "221:10:35", "typeDescriptions": {"typeIdentifier": "t_contract$_ERC721Test_$5387", "typeString": "contract ERC721Test"}}, "visibility": "internal"}, {"body": {"id": 6337, "nodeType": "Block", "src": "263:145:35", "statements": [{"expression": {"id": 6321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6316, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6310, "src": "273:11:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "id": 6319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "287:15:35", "typeDescriptions": {"typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_LearnToEarn_$6300_$", "typeString": "function () returns (contract LearnToEarn)"}, "typeName": {"id": 6318, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6317, "name": "LearnToEarn", "nameLocations": ["291:11:35"], "nodeType": "IdentifierPath", "referencedDeclaration": 6300, "src": "291:11:35"}, "referencedDeclaration": 6300, "src": "291:11:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}}, "id": 6320, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "287:17:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "src": "273:31:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "id": 6322, "nodeType": "ExpressionStatement", "src": "273:31:35"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 6323, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6310, "src": "314:11:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "id": 6325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "326:10:35", "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 5535, "src": "314:22:35", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external"}}, "id": 6326, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "314:24:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6327, "nodeType": "ExpressionStatement", "src": "314:24:35"}, {"expression": {"id": 6335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6328, "name": "erc721Test", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6313, "src": "349:10:35", "typeDescriptions": {"typeIdentifier": "t_contract$_ERC721Test_$5387", "typeString": "contract ERC721Test"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"hexValue": "4365727469666963617465", "id": 6332, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "377:13:35", "typeDescriptions": {"typeIdentifier": "t_stringliteral_476b6a56e8793270a7635a828307eeb92cd7e2153dff9a3bd168aec20746ea55", "typeString": "literal_string \"Certificate\""}, "value": "Certificate"}, {"hexValue": "50494f4e4345", "id": 6333, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "392:8:35", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a81a74dcae7def8aa056ff54d6900a6018a883169e136e05b2a419e7f836f48f", "typeString": "literal_string \"PIONCE\""}, "value": "PIONCE"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_476b6a56e8793270a7635a828307eeb92cd7e2153dff9a3bd168aec20746ea55", "typeString": "literal_string \"Certificate\""}, {"typeIdentifier": "t_stringliteral_a81a74dcae7def8aa056ff54d6900a6018a883169e136e05b2a419e7f836f48f", "typeString": "literal_string \"PIONCE\""}], "id": 6331, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "362:14:35", "typeDescriptions": {"typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_ERC721Test_$5387_$", "typeString": "function (string memory,string memory) returns (contract ERC721Test)"}, "typeName": {"id": 6330, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6329, "name": "ERC721Test", "nameLocations": ["366:10:35"], "nodeType": "IdentifierPath", "referencedDeclaration": 5387, "src": "366:10:35"}, "referencedDeclaration": 5387, "src": "366:10:35", "typeDescriptions": {"typeIdentifier": "t_contract$_ERC721Test_$5387", "typeString": "contract ERC721Test"}}}, "id": 6334, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "362:39:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_ERC721Test_$5387", "typeString": "contract ERC721Test"}}, "src": "349:52:35", "typeDescriptions": {"typeIdentifier": "t_contract$_ERC721Test_$5387", "typeString": "contract ERC721Test"}}, "id": 6336, "nodeType": "ExpressionStatement", "src": "349:52:35"}]}, "id": 6338, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 6314, "nodeType": "ParameterList", "parameters": [], "src": "260:2:35"}, "returnParameters": {"id": 6315, "nodeType": "ParameterList", "parameters": [], "src": "263:0:35"}, "scope": 6508, "src": "249:159:35", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 6360, "nodeType": "Block", "src": "482:100:35", "statements": [{"expression": {"arguments": [{"arguments": [{"expression": {"id": 6348, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "526:3:35", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 6349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "530:6:35", "memberName": "sender", "nodeType": "MemberAccess", "src": "526:10:35", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6351, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "548:5:35", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 6352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "554:6:35", "memberName": "number", "nodeType": "MemberAccess", "src": "548:12:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 6353, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "563:1:35", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "548:16:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6350, "name": "blockhash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -5, "src": "538:9:35", "typeDescriptions": {"typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 6355, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "538:27:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6356, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6340, "src": "567:6:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 6346, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "509:3:35", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 6347, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "513:12:35", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "509:16:35", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 6357, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "509:65:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 6345, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "499:9:35", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 6358, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "499:76:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 6344, "id": 6359, "nodeType": "Return", "src": "492:83:35"}]}, "id": 6361, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateId", "nameLocation": "423:11:35", "nodeType": "FunctionDefinition", "parameters": {"id": 6341, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6340, "mutability": "mutable", "name": "_nonce", "nameLocation": "443:6:35", "nodeType": "VariableDeclaration", "scope": 6361, "src": "435:14:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6339, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "435:7:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "434:16:35"}, "returnParameters": {"id": 6344, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6343, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6361, "src": "473:7:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6342, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "473:7:35", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "472:9:35"}, "scope": 6508, "src": "414:168:35", "stateMutability": "view", "virtual": false, "visibility": "private"}, {"body": {"id": 6506, "nodeType": "Block", "src": "624:1203:35", "statements": [{"assignments": [6365], "declarations": [{"constant": false, "id": 6365, "mutability": "mutable", "name": "rewardAddress", "nameLocation": "642:13:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "634:21:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6364, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:35", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 6370, "initialValue": {"arguments": [{"hexValue": "307831", "id": 6368, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "666:3:35", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "0x1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 6367, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "658:7:35", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 6366, "name": "address", "nodeType": "ElementaryTypeName", "src": "658:7:35", "typeDescriptions": {}}}, "id": 6369, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "658:12:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "634:36:35"}, {"assignments": [6372], "declarations": [{"constant": false, "id": 6372, "mutability": "mutable", "name": "budget", "nameLocation": "688:6:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "680:14:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6371, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "680:7:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6374, "initialValue": {"hexValue": "313030", "id": 6373, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "697:3:35", "typeDescriptions": {"typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100"}, "value": "100"}, "nodeType": "VariableDeclarationStatement", "src": "680:20:35"}, {"assignments": [6376], "declarations": [{"constant": false, "id": 6376, "mutability": "mutable", "name": "bonus", "nameLocation": "718:5:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "710:13:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6375, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "710:7:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6378, "initialValue": {"hexValue": "3130", "id": 6377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "726:2:35", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "VariableDeclarationStatement", "src": "710:18:35"}, {"assignments": [6380], "declarations": [{"constant": false, "id": 6380, "mutability": "mutable", "name": "timeStart", "nameLocation": "746:9:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "738:17:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6379, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "738:7:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6383, "initialValue": {"expression": {"id": 6381, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "758:5:35", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 6382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "764:9:35", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "758:15:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "738:35:35"}, {"assignments": [6385], "declarations": [{"constant": false, "id": 6385, "mutability": "mutable", "name": "timeEndBonus", "nameLocation": "791:12:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "783:20:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6384, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "783:7:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6389, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6386, "name": "timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6380, "src": "806:9:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 6387, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "818:6:35", "subdenomination": "days", "typeDescriptions": {"typeIdentifier": "t_rational_86400_by_1", "typeString": "int_const 86400"}, "value": "1"}, "src": "806:18:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "783:41:35"}, {"assignments": [6391], "declarations": [{"constant": false, "id": 6391, "mutability": "mutable", "name": "isUsingDuration", "nameLocation": "839:15:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "834:20:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 6390, "name": "bool", "nodeType": "ElementaryTypeName", "src": "834:4:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 6393, "initialValue": {"hexValue": "74727565", "id": 6392, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "857:4:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "nodeType": "VariableDeclarationStatement", "src": "834:27:35"}, {"assignments": [6395], "declarations": [{"constant": false, "id": 6395, "mutability": "mutable", "name": "isBonusToken", "nameLocation": "876:12:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "871:17:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 6394, "name": "bool", "nodeType": "ElementaryTypeName", "src": "871:4:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 6397, "initialValue": {"hexValue": "74727565", "id": 6396, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "891:4:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "nodeType": "VariableDeclarationStatement", "src": "871:24:35"}, {"expression": {"arguments": [{"id": 6401, "name": "rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6365, "src": "944:13:35", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6402, "name": "budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6372, "src": "971:6:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6403, "name": "bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6376, "src": "991:5:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6404, "name": "timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6380, "src": "1010:9:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6405, "name": "timeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6385, "src": "1033:12:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6406, "name": "isUsingDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6391, "src": "1059:15:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 6407, "name": "isBonusToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6395, "src": "1088:12:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "expression": {"id": 6398, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6310, "src": "906:11:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "id": 6400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "918:12:35", "memberName": "createCourse", "nodeType": "MemberAccess", "referencedDeclaration": 5714, "src": "906:24:35", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$", "typeString": "function (address,uint256,uint256,uint256,uint256,bool,bool) external"}}, "id": 6408, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "906:204:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6409, "nodeType": "ExpressionStatement", "src": "906:204:35"}, {"assignments": [6411], "declarations": [{"constant": false, "id": 6411, "mutability": "mutable", "name": "courseId", "nameLocation": "1129:8:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "1121:16:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6410, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1121:7:35", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 6415, "initialValue": {"arguments": [{"hexValue": "30", "id": 6413, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1152:1:35", "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": 6412, "name": "_generateId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6361, "src": "1140:11:35", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 6414, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1140:14:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1121:33:35"}, {"assignments": [6418], "declarations": [{"constant": false, "id": 6418, "mutability": "mutable", "name": "course", "nameLocation": "1239:6:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "1225:20:35", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course"}, "typeName": {"id": 6417, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6416, "name": "Course", "nameLocations": ["1225:6:35"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "1225:6:35"}, "referencedDeclaration": 8428, "src": "1225:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}, "visibility": "internal"}], "id": 6423, "initialValue": {"arguments": [{"id": 6421, "name": "courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6411, "src": "1274:8:35", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 6419, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6310, "src": "1248:11:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "id": 6420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1260:13:35", "memberName": "getCourseData", "nodeType": "MemberAccess", "referencedDeclaration": 6234, "src": "1248:25:35", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_Course_$8428_memory_ptr_$", "typeString": "function (bytes32) view external returns (struct Course memory)"}}, "id": 6422, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1248:35:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "nodeType": "VariableDeclarationStatement", "src": "1225:58:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6431, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6425, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1300:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6426, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1307:7:35", "memberName": "creator", "nodeType": "MemberAccess", "referencedDeclaration": 8405, "src": "1300:14:35", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"id": 6429, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1326:4:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarnTest_$6508", "typeString": "contract LearnToEarnTest"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_LearnToEarnTest_$6508", "typeString": "contract LearnToEarnTest"}], "id": 6428, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1318:7:35", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 6427, "name": "address", "nodeType": "ElementaryTypeName", "src": "1318:7:35", "typeDescriptions": {}}}, "id": 6430, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1318:13:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1300:31:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6424, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1293:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6432, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1293:39:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6433, "nodeType": "ExpressionStatement", "src": "1293:39:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6435, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1349:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6436, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1356:13:35", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "1349:20:35", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6437, "name": "rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6365, "src": "1373:13:35", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1349:37:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6434, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1342:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6439, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1342:45:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6440, "nodeType": "ExpressionStatement", "src": "1342:45:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6447, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6442, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1404:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6443, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1411:6:35", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 8409, "src": "1404:13:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6444, "name": "budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6372, "src": "1421:6:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 6445, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1430:1:35", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1421:10:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1404:27:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6441, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1397:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6448, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1397:35:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6449, "nodeType": "ExpressionStatement", "src": "1397:35:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6451, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1449:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6452, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1456:15:35", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "1449:22:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6453, "name": "budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6372, "src": "1475:6:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1449:32:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6450, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1442:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6455, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1442:40:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6456, "nodeType": "ExpressionStatement", "src": "1442:40:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6458, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1499:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6459, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1506:5:35", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "1499:12:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6460, "name": "bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6376, "src": "1515:5:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1499:21:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6457, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1492:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6462, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1492:29:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6463, "nodeType": "ExpressionStatement", "src": "1492:29:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6468, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6465, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1538:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6466, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1545:11:35", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 8417, "src": "1538:18:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6467, "name": "timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6380, "src": "1560:9:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1538:31:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6464, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1531:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6469, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1531:39:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6470, "nodeType": "ExpressionStatement", "src": "1531:39:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6472, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1587:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6473, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1594:12:35", "memberName": "timeEndBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8419, "src": "1587:19:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6474, "name": "timeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6385, "src": "1610:12:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1587:35:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6471, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1580:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6476, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1580:43:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6477, "nodeType": "ExpressionStatement", "src": "1580:43:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6479, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1640:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6480, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1647:11:35", "memberName": "timeRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 8421, "src": "1640:18:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 6481, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1662:1:35", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1640:23:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6478, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1633:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6483, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1633:31:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6484, "nodeType": "ExpressionStatement", "src": "1633:31:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6486, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1681:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6487, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1688:15:35", "memberName": "isUsingDuration", "nodeType": "MemberAccess", "referencedDeclaration": 8427, "src": "1681:22:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6488, "name": "isUsingDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6391, "src": "1707:15:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1681:41:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6485, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1674:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6490, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1674:49:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6491, "nodeType": "ExpressionStatement", "src": "1674:49:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6493, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1740:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6494, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1747:12:35", "memberName": "isBonusToken", "nodeType": "MemberAccess", "referencedDeclaration": 8423, "src": "1740:19:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6495, "name": "isBonusToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6395, "src": "1763:12:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1740:35:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6492, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1733:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6497, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1733:43:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6498, "nodeType": "ExpressionStatement", "src": "1733:43:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6503, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6500, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1793:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1800:10:35", "memberName": "canMintNFT", "nodeType": "MemberAccess", "referencedDeclaration": 8425, "src": "1793:17:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "66616c7365", "id": 6502, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1814:5:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "1793:26:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6499, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1786:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6504, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1786:34:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6505, "nodeType": "ExpressionStatement", "src": "1786:34:35"}]}, "functionSelector": "e22387d3", "id": 6507, "implemented": true, "kind": "function", "modifiers": [], "name": "test_createCourse", "nameLocation": "597:17:35", "nodeType": "FunctionDefinition", "parameters": {"id": 6362, "nodeType": "ParameterList", "parameters": [], "src": "614:2:35"}, "returnParameters": {"id": 6363, "nodeType": "ParameterList", "parameters": [], "src": "624:0:35"}, "scope": 6508, "src": "588:1239:35", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 6509, "src": "161:1668:35", "usedErrors": []}], "src": "32:1797:35"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/NFTReward.sol": {"AST": {"absolutePath": "contracts/NFTReward.sol", "exportedSymbols": {"ERC721URIStorageUpgradeable": [1907], "ERC721Upgradeable": [1628], "IERC165Upgradeable": [2695], "IERC721Upgradeable": [1762], "INFTReward": [8572], "NFTReward": [6632]}, "id": 6633, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 6510, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:36"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", "id": 6515, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6633, "sourceUnit": 1908, "src": "56:197:36", "symbolAliases": [{"foreign": {"id": 6511, "name": "IERC165Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2695, "src": "65:18:36", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6512, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "85:18:36", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6513, "name": "ERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "105:17:36", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6514, "name": "ERC721URIStorageUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1907, "src": "124:27:36", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/INFTReward.sol", "file": "./interfaces/INFTReward.sol", "id": 6517, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6633, "sourceUnit": 8573, "src": "254:57:36", "symbolAliases": [{"foreign": {"id": 6516, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "263:10:36", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 6519, "name": "ERC721URIStorageUpgradeable", "nameLocations": ["400:27:36"], "nodeType": "IdentifierPath", "referencedDeclaration": 1907, "src": "400:27:36"}, "id": 6520, "nodeType": "InheritanceSpecifier", "src": "400:27:36"}, {"baseName": {"id": 6521, "name": "INFTReward", "nameLocations": ["429:10:36"], "nodeType": "IdentifierPath", "referencedDeclaration": 8572, "src": "429:10:36"}, "id": 6522, "nodeType": "InheritanceSpecifier", "src": "429:10:36"}], "canonicalName": "NFTReward", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 6518, "nodeType": "StructuredDocumentation", "src": "313:63:36", "text": " @title NFTReward Contract\n @author ReBaked Team"}, "fullyImplemented": true, "id": 6632, "linearizedBaseContracts": [6632, 8572, 1907, 1628, 1934, 1762, 2683, 2695, 2219, 282], "name": "NFTReward", "nameLocation": "387:9:36", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "documentation": {"id": 6523, "nodeType": "StructuredDocumentation", "src": "446:58:36", "text": " @notice Address of LearnToEarn contract"}, "functionSelector": "a4e8aaae", "id": 6525, "mutability": "mutable", "name": "learnToEarn", "nameLocation": "524:11:36", "nodeType": "VariableDeclaration", "scope": 6632, "src": "509:26:36", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6524, "name": "address", "nodeType": "ElementaryTypeName", "src": "509:7:36", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "public"}, {"constant": false, "documentation": {"id": 6526, "nodeType": "StructuredDocumentation", "src": "542:58:36", "text": " @notice ID of Minted NFT, increase by 1"}, "functionSelector": "714cff56", "id": 6528, "mutability": "mutable", "name": "tokenIds", "nameLocation": "620:8:36", "nodeType": "VariableDeclaration", "scope": 6632, "src": "605:23:36", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6527, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "605:7:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "public"}, {"constant": false, "documentation": {"id": 6529, "nodeType": "StructuredDocumentation", "src": "635:76:36", "text": " notice URI of NFT, NFTs in same contract has the same URI"}, "functionSelector": "eac989f8", "id": 6531, "mutability": "mutable", "name": "uri", "nameLocation": "730:3:36", "nodeType": "VariableDeclaration", "scope": 6632, "src": "716:17:36", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 6530, "name": "string", "nodeType": "ElementaryTypeName", "src": "716:6:36", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "public"}, {"baseFunctions": [8571], "body": {"id": 6568, "nodeType": "Block", "src": "1124:184:36", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6551, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6546, "name": "_learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6534, "src": "1142:12:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 6549, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1166:1:36", "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": 6548, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1158:7:36", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 6547, "name": "address", "nodeType": "ElementaryTypeName", "src": "1158:7:36", "typeDescriptions": {}}}, "id": 6550, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1158:10:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1142:26:36", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4c6561726e546f4561726e2061646472657373206973206e6f742076616c6964", "id": 6552, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1170:34:36", "typeDescriptions": {"typeIdentifier": "t_stringliteral_e45ddec8cf1d5d9cee2b8ead83e3387b5c6f4942841363d86bcd1848a75adc94", "typeString": "literal_string \"LearnToEarn address is not valid\""}, "value": "LearnToEarn address is not valid"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_e45ddec8cf1d5d9cee2b8ead83e3387b5c6f4942841363d86bcd1848a75adc94", "typeString": "literal_string \"LearnToEarn address is not valid\""}], "id": 6545, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1134:7:36", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6553, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1134:71:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6554, "nodeType": "ExpressionStatement", "src": "1134:71:36"}, {"expression": {"arguments": [{"id": 6556, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6536, "src": "1229:5:36", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 6557, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6538, "src": "1236:7:36", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 6555, "name": "__ERC721_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 801, "src": "1215:13:36", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory,string memory)"}}, "id": 6558, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1215:29:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6559, "nodeType": "ExpressionStatement", "src": "1215:29:36"}, {"expression": {"id": 6562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6560, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6525, "src": "1255:11:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 6561, "name": "_learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6534, "src": "1269:12:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1255:26:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 6563, "nodeType": "ExpressionStatement", "src": "1255:26:36"}, {"expression": {"id": 6566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6564, "name": "uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6531, "src": "1291:3:36", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 6565, "name": "_uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6540, "src": "1297:4:36", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1291:10:36", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 6567, "nodeType": "ExpressionStatement", "src": "1291:10:36"}]}, "documentation": {"id": 6532, "nodeType": "StructuredDocumentation", "src": "784:210:36", "text": " @notice Replace for contructor\n @param _learnToEarn Address of LearnToEarn contract\n @param _name Name of NFTs\n @param _symbol Symbol of NFTs\n @param _uri ipfs of NFTs"}, "functionSelector": "5f1e6f6d", "id": 6569, "implemented": true, "kind": "function", "modifiers": [{"id": 6543, "kind": "modifierInvocation", "modifierName": {"id": 6542, "name": "initializer", "nameLocations": ["1112:11:36"], "nodeType": "IdentifierPath", "referencedDeclaration": 202, "src": "1112:11:36"}, "nodeType": "ModifierInvocation", "src": "1112:11:36"}], "name": "initialize", "nameLocation": "1008:10:36", "nodeType": "FunctionDefinition", "parameters": {"id": 6541, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6534, "mutability": "mutable", "name": "_learnToEarn", "nameLocation": "1027:12:36", "nodeType": "VariableDeclaration", "scope": 6569, "src": "1019:20:36", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6533, "name": "address", "nodeType": "ElementaryTypeName", "src": "1019:7:36", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 6536, "mutability": "mutable", "name": "_name", "nameLocation": "1055:5:36", "nodeType": "VariableDeclaration", "scope": 6569, "src": "1041:19:36", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 6535, "name": "string", "nodeType": "ElementaryTypeName", "src": "1041:6:36", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 6538, "mutability": "mutable", "name": "_symbol", "nameLocation": "1076:7:36", "nodeType": "VariableDeclaration", "scope": 6569, "src": "1062:21:36", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 6537, "name": "string", "nodeType": "ElementaryTypeName", "src": "1062:6:36", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 6540, "mutability": "mutable", "name": "_uri", "nameLocation": "1099:4:36", "nodeType": "VariableDeclaration", "scope": 6569, "src": "1085:18:36", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 6539, "name": "string", "nodeType": "ElementaryTypeName", "src": "1085:6:36", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1018:86:36"}, "returnParameters": {"id": 6544, "nodeType": "ParameterList", "parameters": [], "src": "1124:0:36"}, "scope": 6632, "src": "999:309:36", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"baseFunctions": [8559], "body": {"id": 6606, "nodeType": "Block", "src": "1548:240:36", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 6578, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "1566:10:36", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 6579, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1566:12:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6580, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6525, "src": "1582:11:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1566:27:36", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "43616c6c6572206973206e6f74206c6561726e546f4561726e", "id": 6582, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1595:27:36", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2789fa1d668a0bb6f9e04b731f45b4dd9451bc63fb253cfdd4ce054cee6574b0", "typeString": "literal_string \"Caller is not learnToEarn\""}, "value": "Caller is not learnToEarn"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2789fa1d668a0bb6f9e04b731f45b4dd9451bc63fb253cfdd4ce054cee6574b0", "typeString": "literal_string \"Caller is not learnToEarn\""}], "id": 6577, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1558:7:36", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6583, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1558:65:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6584, "nodeType": "ExpressionStatement", "src": "1558:65:36"}, {"expression": {"id": 6586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "1633:10:36", "subExpression": {"id": 6585, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6528, "src": "1635:8:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6587, "nodeType": "ExpressionStatement", "src": "1633:10:36"}, {"expression": {"arguments": [{"id": 6589, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6572, "src": "1663:3:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6590, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6528, "src": "1668:8:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6588, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [1238, 1267], "referencedDeclaration": 1238, "src": "1653:9:36", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 6591, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1653:24:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6592, "nodeType": "ExpressionStatement", "src": "1653:24:36"}, {"expression": {"arguments": [{"id": 6594, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6528, "src": "1700:8:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6595, "name": "uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6531, "src": "1710:3:36", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}], "id": 6593, "name": "_setTokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1871, "src": "1687:12:36", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (uint256,string memory)"}}, "id": 6596, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1687:27:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6597, "nodeType": "ExpressionStatement", "src": "1687:27:36"}, {"eventCall": {"arguments": [{"id": 6599, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6572, "src": "1737:3:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6600, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6528, "src": "1742:8:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6601, "name": "uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6531, "src": "1752:3:36", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}], "id": 6598, "name": "Minted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8551, "src": "1730:6:36", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,uint256,string memory)"}}, "id": 6602, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1730:26:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6603, "nodeType": "EmitStatement", "src": "1725:31:36"}, {"expression": {"id": 6604, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6528, "src": "1773:8:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 6576, "id": 6605, "nodeType": "Return", "src": "1766:15:36"}]}, "documentation": {"id": 6570, "nodeType": "StructuredDocumentation", "src": "1366:124:36", "text": " @notice mint a NFT for _to address\n @param _to address of user\n emit { Minted } events"}, "functionSelector": "6a627842", "id": 6607, "implemented": true, "kind": "function", "modifiers": [], "name": "mint", "nameLocation": "1504:4:36", "nodeType": "FunctionDefinition", "parameters": {"id": 6573, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6572, "mutability": "mutable", "name": "_to", "nameLocation": "1517:3:36", "nodeType": "VariableDeclaration", "scope": 6607, "src": "1509:11:36", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6571, "name": "address", "nodeType": "ElementaryTypeName", "src": "1509:7:36", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1508:13:36"}, "returnParameters": {"id": 6576, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6575, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6607, "src": "1539:7:36", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6574, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1539:7:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1538:9:36"}, "scope": 6632, "src": "1495:293:36", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [850, 2694], "body": {"id": 6630, "nodeType": "Block", "src": "2152:107:36", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 6623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6618, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6610, "src": "2169:11:36", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 6620, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "2189:10:36", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}], "id": 6619, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "2184:4:36", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 6621, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2184:16:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_INFTReward_$8572", "typeString": "type(contract INFTReward)"}}, "id": 6622, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2201:11:36", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "2184:28:36", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "2169:43:36", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 6626, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6610, "src": "2240:11:36", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"id": 6624, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "2216:5:36", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_NFTReward_$6632_$", "typeString": "type(contract super NFTReward)"}}, "id": 6625, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2222:17:36", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 850, "src": "2216:23:36", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function (bytes4) view returns (bool)"}}, "id": 6627, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2216:36:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2169:83:36", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 6617, "id": 6629, "nodeType": "Return", "src": "2162:90:36"}]}, "documentation": {"id": 6608, "nodeType": "StructuredDocumentation", "src": "1842:175:36", "text": " @notice Override function `supportsInterface` when using ERC165\n @dev Returns true if this contract implements the interface defined by `interfaceId`."}, "functionSelector": "01ffc9a7", "id": 6631, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "2031:17:36", "nodeType": "FunctionDefinition", "overrides": {"id": 6614, "nodeType": "OverrideSpecifier", "overrides": [{"id": 6612, "name": "IERC165Upgradeable", "nameLocations": ["2098:18:36"], "nodeType": "IdentifierPath", "referencedDeclaration": 2695, "src": "2098:18:36"}, {"id": 6613, "name": "ERC721Upgradeable", "nameLocations": ["2118:17:36"], "nodeType": "IdentifierPath", "referencedDeclaration": 1628, "src": "2118:17:36"}], "src": "2089:47:36"}, "parameters": {"id": 6611, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6610, "mutability": "mutable", "name": "interfaceId", "nameLocation": "2056:11:36", "nodeType": "VariableDeclaration", "scope": 6631, "src": "2049:18:36", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 6609, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2049:6:36", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "2048:20:36"}, "returnParameters": {"id": 6617, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6616, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6631, "src": "2146:4:36", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 6615, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2146:4:36", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2145:6:36"}, "scope": 6632, "src": "2022:237:36", "stateMutability": "view", "virtual": true, "visibility": "public"}], "scope": 6633, "src": "378:1883:36", "usedErrors": []}], "src": "32:2230:36"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ReBakedDAO.sol": {"AST": {"absolutePath": "contracts/ReBakedDAO.sol", "exportedSymbols": {"Collaborator": [9885], "CollaboratorLibrary": [9043], "IERC20Upgradeable": [419], "IReBakedDAO": [8847], "Observer": [9892], "ObserverLibrary": [9134], "OwnableUpgradeable": [131], "Package": [9870], "PackageLibrary": [9576], "Project": [9837], "ProjectLibrary": [9816], "ReBakedDAO": [8219], "ReentrancyGuardUpgradeable": [341], "SafeERC20Upgradeable": [736]}, "id": 8220, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 6634, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:37"}, {"absolutePath": "contracts/interfaces/IReBakedDAO.sol", "file": "./interfaces/IReBakedDAO.sol", "id": 6636, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 8848, "src": "56:59:37", "symbolAliases": [{"foreign": {"id": 6635, "name": "IReBakedDAO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8847, "src": "65:11:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "id": 6638, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 132, "src": "116:103:37", "symbolAliases": [{"foreign": {"id": 6637, "name": "OwnableUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "125:18:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", "id": 6640, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 342, "src": "220:121:37", "symbolAliases": [{"foreign": {"id": 6639, "name": "ReentrancyGuardUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "229:26:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "id": 6643, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 737, "src": "342:137:37", "symbolAliases": [{"foreign": {"id": 6641, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "351:17:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6642, "name": "SafeERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 736, "src": "370:20:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProjectLibrary.sol", "file": "./libraries/ProjectLibrary.sol", "id": 6646, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 9817, "src": "480:73:37", "symbolAliases": [{"foreign": {"id": 6644, "name": "Project", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9837, "src": "489:7:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6645, "name": "ProjectLibrary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9816, "src": "498:14:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/libraries/PackageLibrary.sol", "file": "./libraries/PackageLibrary.sol", "id": 6649, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 9577, "src": "554:73:37", "symbolAliases": [{"foreign": {"id": 6647, "name": "Package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9870, "src": "563:7:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6648, "name": "PackageLibrary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9576, "src": "572:14:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CollaboratorLibrary.sol", "file": "./libraries/CollaboratorLibrary.sol", "id": 6652, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 9044, "src": "628:88:37", "symbolAliases": [{"foreign": {"id": 6650, "name": "Collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9885, "src": "637:12:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6651, "name": "CollaboratorLibrary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9043, "src": "651:19:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ObserverLibrary.sol", "file": "./libraries/ObserverLibrary.sol", "id": 6655, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 9135, "src": "717:76:37", "symbolAliases": [{"foreign": {"id": 6653, "name": "Observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9892, "src": "726:8:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6654, "name": "ObserverLibrary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9134, "src": "736:15:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 6657, "name": "IReBakedDAO", "nameLocations": ["883:11:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 8847, "src": "883:11:37"}, "id": 6658, "nodeType": "InheritanceSpecifier", "src": "883:11:37"}, {"baseName": {"id": 6659, "name": "OwnableUpgradeable", "nameLocations": ["896:18:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 131, "src": "896:18:37"}, "id": 6660, "nodeType": "InheritanceSpecifier", "src": "896:18:37"}, {"baseName": {"id": 6661, "name": "ReentrancyGuardUpgradeable", "nameLocations": ["916:26:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 341, "src": "916:26:37"}, "id": 6662, "nodeType": "InheritanceSpecifier", "src": "916:26:37"}], "canonicalName": "ReBakedDAO", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 6656, "nodeType": "StructuredDocumentation", "src": "795:64:37", "text": " @title ReBakedDAO Contract\n @author ReBaked Team"}, "fullyImplemented": true, "id": 8219, "linearizedBaseContracts": [8219, 341, 131, 2219, 282, 8847], "name": "ReBakedDAO", "nameLocation": "869:10:37", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 6666, "libraryName": {"id": 6663, "name": "SafeERC20Upgradeable", "nameLocations": ["955:20:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 736, "src": "955:20:37"}, "nodeType": "UsingForDirective", "src": "949:49:37", "typeName": {"id": 6665, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6664, "name": "IERC20Upgradeable", "nameLocations": ["980:17:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "980:17:37"}, "referencedDeclaration": 419, "src": "980:17:37", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}}, {"global": false, "id": 6670, "libraryName": {"id": 6667, "name": "ProjectLibrary", "nameLocations": ["1009:14:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9816, "src": "1009:14:37"}, "nodeType": "UsingForDirective", "src": "1003:33:37", "typeName": {"id": 6669, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6668, "name": "Project", "nameLocations": ["1028:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "1028:7:37"}, "referencedDeclaration": 9837, "src": "1028:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}}, {"global": false, "id": 6674, "libraryName": {"id": 6671, "name": "PackageLibrary", "nameLocations": ["1047:14:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9576, "src": "1047:14:37"}, "nodeType": "UsingForDirective", "src": "1041:33:37", "typeName": {"id": 6673, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6672, "name": "Package", "nameLocations": ["1066:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "1066:7:37"}, "referencedDeclaration": 9870, "src": "1066:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}}, {"global": false, "id": 6678, "libraryName": {"id": 6675, "name": "CollaboratorLibrary", "nameLocations": ["1085:19:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9043, "src": "1085:19:37"}, "nodeType": "UsingForDirective", "src": "1079:43:37", "typeName": {"id": 6677, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6676, "name": "Collaborator", "nameLocations": ["1109:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "1109:12:37"}, "referencedDeclaration": 9885, "src": "1109:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}}, {"global": false, "id": 6682, "libraryName": {"id": 6679, "name": "ObserverLibrary", "nameLocations": ["1133:15:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9134, "src": "1133:15:37"}, "nodeType": "UsingForDirective", "src": "1127:35:37", "typeName": {"id": 6681, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6680, "name": "Observer", "nameLocations": ["1153:8:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "1153:8:37"}, "referencedDeclaration": 9892, "src": "1153:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}}, {"constant": true, "functionSelector": "e1d84514", "id": 6685, "mutability": "constant", "name": "PCT_PRECISION", "nameLocation": "1241:13:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1217:43:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6683, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1217:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "316536", "id": 6684, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1257:3:37", "typeDescriptions": {"typeIdentifier": "t_rational_1000000_by_1", "typeString": "int_const 1000000"}, "value": "1e6"}, "visibility": "public"}, {"constant": false, "functionSelector": "61d027b3", "id": 6687, "mutability": "mutable", "name": "treasury", "nameLocation": "1308:8:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1293:23:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6686, "name": "address", "nodeType": "ElementaryTypeName", "src": "1293:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "public"}, {"constant": false, "id": 6692, "mutability": "mutable", "name": "projectData", "nameLocation": "1387:11:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1351:47:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project)"}, "typeName": {"id": 6691, "keyType": {"id": 6688, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1359:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1351:27:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project)"}, "valueType": {"id": 6690, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6689, "name": "Project", "nameLocations": ["1370:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "1370:7:37"}, "referencedDeclaration": 9837, "src": "1370:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}}, "visibility": "private"}, {"constant": false, "id": 6699, "mutability": "mutable", "name": "packageData", "nameLocation": "1502:11:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1446:67:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package))"}, "typeName": {"id": 6698, "keyType": {"id": 6693, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1454:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1446:47:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package))"}, "valueType": {"id": 6697, "keyType": {"id": 6694, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1473:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1465:27:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package)"}, "valueType": {"id": 6696, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6695, "name": "Package", "nameLocations": ["1484:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "1484:7:37"}, "referencedDeclaration": 9870, "src": "1484:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}}}, "visibility": "private"}, {"constant": false, "id": 6707, "mutability": "mutable", "name": "approvedUser", "nameLocation": "1647:12:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1574:85:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => bool)))"}, "typeName": {"id": 6706, "keyType": {"id": 6700, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1582:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1574:64:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => bool)))"}, "valueType": {"id": 6705, "keyType": {"id": 6701, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1601:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1593:44:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))"}, "valueType": {"id": 6704, "keyType": {"id": 6702, "name": "address", "nodeType": "ElementaryTypeName", "src": "1620:7:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1612:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}, "valueType": {"id": 6703, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1631:4:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}}}}, "visibility": "private"}, {"constant": false, "id": 6716, "mutability": "mutable", "name": "collaboratorData", "nameLocation": "1801:16:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1720:97:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator)))"}, "typeName": {"id": 6715, "keyType": {"id": 6708, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1728:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1720:72:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator)))"}, "valueType": {"id": 6714, "keyType": {"id": 6709, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1747:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1739:52:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator))"}, "valueType": {"id": 6713, "keyType": {"id": 6710, "name": "address", "nodeType": "ElementaryTypeName", "src": "1766:7:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1758:32:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator)"}, "valueType": {"id": 6712, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6711, "name": "Collaborator", "nameLocations": ["1777:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "1777:12:37"}, "referencedDeclaration": 9885, "src": "1777:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}}}}, "visibility": "private"}, {"constant": false, "id": 6725, "mutability": "mutable", "name": "observerData", "nameLocation": "1951:12:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1874:89:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer)))"}, "typeName": {"id": 6724, "keyType": {"id": 6717, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1882:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1874:68:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer)))"}, "valueType": {"id": 6723, "keyType": {"id": 6718, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1901:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1893:48:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer))"}, "valueType": {"id": 6722, "keyType": {"id": 6719, "name": "address", "nodeType": "ElementaryTypeName", "src": "1920:7:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1912:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer)"}, "valueType": {"id": 6721, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6720, "name": "Observer", "nameLocations": ["1931:8:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "1931:8:37"}, "referencedDeclaration": 9892, "src": "1931:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}}}}, "visibility": "private"}, {"body": {"id": 6738, "nodeType": "Block", "src": "2069:63:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6731, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6728, "src": "2087:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 6732, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2097:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2087:11:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5a65726f20616d6f756e74", "id": 6734, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2100:13:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_499f3f4b0ad3588aa1eb6e198be77bff643a4218ffbf2bef1370e58aadea5df4", "typeString": "literal_string \"Zero amount\""}, "value": "Zero amount"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_499f3f4b0ad3588aa1eb6e198be77bff643a4218ffbf2bef1370e58aadea5df4", "typeString": "literal_string \"Zero amount\""}], "id": 6730, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2079:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6735, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2079:35:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6736, "nodeType": "ExpressionStatement", "src": "2079:35:37"}, {"id": 6737, "nodeType": "PlaceholderStatement", "src": "2124:1:37"}]}, "documentation": {"id": 6726, "nodeType": "StructuredDocumentation", "src": "1970:60:37", "text": " @notice Throws if amount provided is zero"}, "id": 6739, "name": "nonZero", "nameLocation": "2044:7:37", "nodeType": "ModifierDefinition", "parameters": {"id": 6729, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6728, "mutability": "mutable", "name": "amount_", "nameLocation": "2060:7:37", "nodeType": "VariableDeclaration", "scope": 6739, "src": "2052:15:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6727, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2052:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2051:17:37"}, "src": "2035:97:37", "virtual": false, "visibility": "internal"}, {"body": {"id": 6756, "nodeType": "Block", "src": "2277:121:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6751, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 6745, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "2295:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 6747, "indexExpression": {"id": 6746, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6742, "src": "2307:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2295:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 6748, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2319:9:37", "memberName": "initiator", "nodeType": "MemberAccess", "referencedDeclaration": 9820, "src": "2295:33:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 6749, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "2332:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 6750, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2332:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2295:49:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "63616c6c6572206973206e6f742070726f6a65637420696e69746961746f72", "id": 6752, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2346:33:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_24541c496c6cde3e41b8d4242571ff8746a1ef390be98ba9d128aee2b4105001", "typeString": "literal_string \"caller is not project initiator\""}, "value": "caller is not project initiator"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_24541c496c6cde3e41b8d4242571ff8746a1ef390be98ba9d128aee2b4105001", "typeString": "literal_string \"caller is not project initiator\""}], "id": 6744, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2287:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6753, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2287:93:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6754, "nodeType": "ExpressionStatement", "src": "2287:93:37"}, {"id": 6755, "nodeType": "PlaceholderStatement", "src": "2390:1:37"}]}, "documentation": {"id": 6740, "nodeType": "StructuredDocumentation", "src": "2138:91:37", "text": " @notice Throws if called by any account other than the project initiator"}, "id": 6757, "name": "onlyInitiator", "nameLocation": "2243:13:37", "nodeType": "ModifierDefinition", "parameters": {"id": 6743, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6742, "mutability": "mutable", "name": "_projectId", "nameLocation": "2265:10:37", "nodeType": "VariableDeclaration", "scope": 6757, "src": "2257:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6741, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2257:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2256:20:37"}, "src": "2234:164:37", "virtual": false, "visibility": "internal"}, {"body": {"id": 6785, "nodeType": "Block", "src": "2583:169:37", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 6765, "name": "__Ownable_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "2593:14:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 6766, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2593:16:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6767, "nodeType": "ExpressionStatement", "src": "2593:16:37"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 6768, "name": "__ReentrancyGuard_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 305, "src": "2619:22:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 6769, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2619:24:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6770, "nodeType": "ExpressionStatement", "src": "2619:24:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6777, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6772, "name": "treasury_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6760, "src": "2662:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 6775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2683:1:37", "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": 6774, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2675:7:37", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 6773, "name": "address", "nodeType": "ElementaryTypeName", "src": "2675:7:37", "typeDescriptions": {}}}, "id": 6776, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2675:10:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2662:23:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c69642074726561737572792061646472657373", "id": 6778, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2687:26:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2907d22e021443ed72dd5d6da68ce09da129c5a4aeb5f71d047f95f263ebcfce", "typeString": "literal_string \"invalid treasury address\""}, "value": "invalid treasury address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2907d22e021443ed72dd5d6da68ce09da129c5a4aeb5f71d047f95f263ebcfce", "typeString": "literal_string \"invalid treasury address\""}], "id": 6771, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2654:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6779, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2654:60:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6780, "nodeType": "ExpressionStatement", "src": "2654:60:37"}, {"expression": {"id": 6783, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6781, "name": "treasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6687, "src": "2725:8:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 6782, "name": "treasury_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6760, "src": "2736:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2725:20:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 6784, "nodeType": "ExpressionStatement", "src": "2725:20:37"}]}, "documentation": {"id": 6758, "nodeType": "StructuredDocumentation", "src": "2404:116:37", "text": " @notice Initialize of contract (replace for constructor)\n @param treasury_ Treasury address"}, "functionSelector": "c4d66de8", "id": 6786, "implemented": true, "kind": "function", "modifiers": [{"id": 6763, "kind": "modifierInvocation", "modifierName": {"id": 6762, "name": "initializer", "nameLocations": ["2571:11:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 202, "src": "2571:11:37"}, "nodeType": "ModifierInvocation", "src": "2571:11:37"}], "name": "initialize", "nameLocation": "2534:10:37", "nodeType": "FunctionDefinition", "parameters": {"id": 6761, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6760, "mutability": "mutable", "name": "treasury_", "nameLocation": "2553:9:37", "nodeType": "VariableDeclaration", "scope": 6786, "src": "2545:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6759, "name": "address", "nodeType": "ElementaryTypeName", "src": "2545:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2544:19:37"}, "returnParameters": {"id": 6764, "nodeType": "ParameterList", "parameters": [], "src": "2583:0:37"}, "scope": 8219, "src": "2525:227:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"baseFunctions": [8704], "body": {"id": 6817, "nodeType": "Block", "src": "2992:201:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6795, "name": "treasury_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6789, "src": "3010:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 6798, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3031:1:37", "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": 6797, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3023:7:37", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 6796, "name": "address", "nodeType": "ElementaryTypeName", "src": "3023:7:37", "typeDescriptions": {}}}, "id": 6799, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3023:10:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3010:23:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c69642074726561737572792061646472657373", "id": 6801, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3035:26:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2907d22e021443ed72dd5d6da68ce09da129c5a4aeb5f71d047f95f263ebcfce", "typeString": "literal_string \"invalid treasury address\""}, "value": "invalid treasury address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2907d22e021443ed72dd5d6da68ce09da129c5a4aeb5f71d047f95f263ebcfce", "typeString": "literal_string \"invalid treasury address\""}], "id": 6794, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3002:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6802, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3002:60:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6803, "nodeType": "ExpressionStatement", "src": "3002:60:37"}, {"assignments": [6805], "declarations": [{"constant": false, "id": 6805, "mutability": "mutable", "name": "oldTreasury", "nameLocation": "3080:11:37", "nodeType": "VariableDeclaration", "scope": 6817, "src": "3072:19:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6804, "name": "address", "nodeType": "ElementaryTypeName", "src": "3072:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 6807, "initialValue": {"id": 6806, "name": "treasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6687, "src": "3094:8:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "3072:30:37"}, {"expression": {"id": 6810, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6808, "name": "treasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6687, "src": "3112:8:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 6809, "name": "treasury_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6789, "src": "3123:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3112:20:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 6811, "nodeType": "ExpressionStatement", "src": "3112:20:37"}, {"eventCall": {"arguments": [{"id": 6813, "name": "oldTreasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6805, "src": "3164:11:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6814, "name": "treasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6687, "src": "3177:8:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 6812, "name": "UpdatedTreasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8580, "src": "3148:15:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 6815, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3148:38:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6816, "nodeType": "EmitStatement", "src": "3143:43:37"}]}, "documentation": {"id": 6787, "nodeType": "StructuredDocumentation", "src": "2804:121:37", "text": " @notice Update treasury address\n @param treasury_ Treasury address\n Emit {UpdatedTreasury}"}, "functionSelector": "7f51bb1f", "id": 6818, "implemented": true, "kind": "function", "modifiers": [{"id": 6792, "kind": "modifierInvocation", "modifierName": {"id": 6791, "name": "onlyOwner", "nameLocations": ["2982:9:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 45, "src": "2982:9:37"}, "nodeType": "ModifierInvocation", "src": "2982:9:37"}], "name": "updateTreasury", "nameLocation": "2939:14:37", "nodeType": "FunctionDefinition", "parameters": {"id": 6790, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6789, "mutability": "mutable", "name": "treasury_", "nameLocation": "2962:9:37", "nodeType": "VariableDeclaration", "scope": 6818, "src": "2954:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6788, "name": "address", "nodeType": "ElementaryTypeName", "src": "2954:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2953:19:37"}, "returnParameters": {"id": 6793, "nodeType": "ParameterList", "parameters": [], "src": "2992:0:37"}, "scope": 8219, "src": "2930:263:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8712], "body": {"id": 6862, "nodeType": "Block", "src": "3529:259:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6832, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6821, "src": "3547:6:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 6835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3565:1:37", "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": 6834, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3557:7:37", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 6833, "name": "address", "nodeType": "ElementaryTypeName", "src": "3557:7:37", "typeDescriptions": {}}}, "id": 6836, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3557:10:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3547:20:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c696420746f6b656e2061646472657373", "id": 6838, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3569:23:37", "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": 6831, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3539:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6839, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3539:54:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6840, "nodeType": "ExpressionStatement", "src": "3539:54:37"}, {"assignments": [6842], "declarations": [{"constant": false, "id": 6842, "mutability": "mutable", "name": "_projectId", "nameLocation": "3611:10:37", "nodeType": "VariableDeclaration", "scope": 6862, "src": "3603:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6841, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3603:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 6845, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 6843, "name": "_generateProjectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8189, "src": "3624:18:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", "typeString": "function () view returns (bytes32)"}}, "id": 6844, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3624:20:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "3603:41:37"}, {"expression": {"arguments": [{"id": 6850, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6821, "src": "3693:6:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6851, "name": "budget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6823, "src": "3701:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"id": 6846, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "3654:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 6848, "indexExpression": {"id": 6847, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6842, "src": "3666:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3654:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 6849, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3678:14:37", "memberName": "_createProject", "nodeType": "MemberAccess", "referencedDeclaration": 9642, "src": "3654:38:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer,address,uint256)"}}, "id": 6852, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3654:55:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6853, "nodeType": "ExpressionStatement", "src": "3654:55:37"}, {"eventCall": {"arguments": [{"id": 6855, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6842, "src": "3739:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"arguments": [], "expression": {"argumentTypes": [], "id": 6856, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "3751:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 6857, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3751:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6858, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6821, "src": "3765:6:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6859, "name": "budget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6823, "src": "3773:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6854, "name": "CreatedProject", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8590, "src": "3724:14:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,address,address,uint256)"}}, "id": 6860, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3724:57:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6861, "nodeType": "EmitStatement", "src": "3719:62:37"}]}, "documentation": {"id": 6819, "nodeType": "StructuredDocumentation", "src": "3199:230:37", "text": " @dev Creates project proposal\n @param token_ project token address\n @param budget_ total budget (has to be approved on token contract if project has its own token)\n Emit {CreatedProject}"}, "functionSelector": "e82d6572", "id": 6863, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 6826, "name": "budget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6823, "src": "3507:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 6827, "kind": "modifierInvocation", "modifierName": {"id": 6825, "name": "nonZero", "nameLocations": ["3499:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6739, "src": "3499:7:37"}, "nodeType": "ModifierInvocation", "src": "3499:16:37"}, {"id": 6829, "kind": "modifierInvocation", "modifierName": {"id": 6828, "name": "nonReentrant", "nameLocations": ["3516:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 335, "src": "3516:12:37"}, "nodeType": "ModifierInvocation", "src": "3516:12:37"}], "name": "createProject", "nameLocation": "3443:13:37", "nodeType": "FunctionDefinition", "parameters": {"id": 6824, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6821, "mutability": "mutable", "name": "token_", "nameLocation": "3465:6:37", "nodeType": "VariableDeclaration", "scope": 6863, "src": "3457:14:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6820, "name": "address", "nodeType": "ElementaryTypeName", "src": "3457:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 6823, "mutability": "mutable", "name": "budget_", "nameLocation": "3481:7:37", "nodeType": "VariableDeclaration", "scope": 6863, "src": "3473:15:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6822, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3473:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3456:33:37"}, "returnParameters": {"id": 6830, "nodeType": "ParameterList", "parameters": [], "src": "3529:0:37"}, "scope": 8219, "src": "3434:354:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8718], "body": {"id": 6887, "nodeType": "Block", "src": "4006:134:37", "statements": [{"assignments": [6875], "declarations": [{"constant": false, "id": 6875, "mutability": "mutable", "name": "budgetLeft_", "nameLocation": "4024:11:37", "nodeType": "VariableDeclaration", "scope": 6887, "src": "4016:19:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6874, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4016:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6881, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"id": 6876, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "4038:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 6878, "indexExpression": {"id": 6877, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6866, "src": "4050:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4038:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 6879, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4062:14:37", "memberName": "_finishProject", "nodeType": "MemberAccess", "referencedDeclaration": 9701, "src": "4038:38:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer) returns (uint256)"}}, "id": 6880, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4038:40:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "4016:62:37"}, {"eventCall": {"arguments": [{"id": 6883, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6866, "src": "4109:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6884, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6875, "src": "4121:11:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6882, "name": "FinishedProject", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8604, "src": "4093:15:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,uint256)"}}, "id": 6885, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4093:40:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6886, "nodeType": "EmitStatement", "src": "4088:45:37"}]}, "documentation": {"id": 6864, "nodeType": "StructuredDocumentation", "src": "3794:116:37", "text": " @notice Finishes project\n @param _projectId Id of the project\n Emit {FinishedProject}"}, "functionSelector": "85ceab29", "id": 6888, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 6869, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6866, "src": "3981:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 6870, "kind": "modifierInvocation", "modifierName": {"id": 6868, "name": "onlyInitiator", "nameLocations": ["3967:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "3967:13:37"}, "nodeType": "ModifierInvocation", "src": "3967:25:37"}, {"id": 6872, "kind": "modifierInvocation", "modifierName": {"id": 6871, "name": "nonReentrant", "nameLocations": ["3993:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 335, "src": "3993:12:37"}, "nodeType": "ModifierInvocation", "src": "3993:12:37"}], "name": "finishProject", "nameLocation": "3924:13:37", "nodeType": "FunctionDefinition", "parameters": {"id": 6867, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6866, "mutability": "mutable", "name": "_projectId", "nameLocation": "3946:10:37", "nodeType": "VariableDeclaration", "scope": 6888, "src": "3938:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6865, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3938:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3937:20:37"}, "returnParameters": {"id": 6873, "nodeType": "ParameterList", "parameters": [], "src": "4006:0:37"}, "scope": 8219, "src": "3915:225:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8735], "body": {"id": 7002, "nodeType": "Block", "src": "4777:766:37", "statements": [{"assignments": [6915], "declarations": [{"constant": false, "id": 6915, "mutability": "mutable", "name": "project", "nameLocation": "4803:7:37", "nodeType": "VariableDeclaration", "scope": 7002, "src": "4787:23:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 6914, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6913, "name": "Project", "nameLocations": ["4787:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "4787:7:37"}, "referencedDeclaration": 9837, "src": "4787:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}], "id": 6919, "initialValue": {"baseExpression": {"id": 6916, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "4813:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 6918, "indexExpression": {"id": 6917, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6891, "src": "4825:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4813:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4787:49:37"}, {"assignments": [6921], "declarations": [{"constant": false, "id": 6921, "mutability": "mutable", "name": "total", "nameLocation": "4854:5:37", "nodeType": "VariableDeclaration", "scope": 7002, "src": "4846:13:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6920, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4846:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6927, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6926, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6922, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6893, "src": "4862:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 6923, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6895, "src": "4872:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4862:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 6925, "name": "_observerBudget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6897, "src": "4881:15:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4862:34:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "4846:50:37"}, {"expression": {"arguments": [{"id": 6931, "name": "total", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6921, "src": "4937:5:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 6928, "name": "project", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6915, "src": "4906:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 6930, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4914:22:37", "memberName": "_reservePackagesBudget", "nodeType": "MemberAccess", "referencedDeclaration": 9742, "src": "4906:30:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer,uint256)"}}, "id": 6932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4906:37:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6933, "nodeType": "ExpressionStatement", "src": "4906:37:37"}, {"assignments": [6935], "declarations": [{"constant": false, "id": 6935, "mutability": "mutable", "name": "_packageId", "nameLocation": "4961:10:37", "nodeType": "VariableDeclaration", "scope": 7002, "src": "4953:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6934, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4953:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 6940, "initialValue": {"arguments": [{"id": 6937, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6891, "src": "4993:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"hexValue": "30", "id": 6938, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5005:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 6936, "name": "_generatePackageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8218, "src": "4974:18:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (bytes32,uint256) view returns (bytes32)"}}, "id": 6939, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4974:33:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "4953:54:37"}, {"assignments": [6943], "declarations": [{"constant": false, "id": 6943, "mutability": "mutable", "name": "package", "nameLocation": "5033:7:37", "nodeType": "VariableDeclaration", "scope": 7002, "src": "5017:23:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 6942, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6941, "name": "Package", "nameLocations": ["5017:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "5017:7:37"}, "referencedDeclaration": 9870, "src": "5017:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "id": 6949, "initialValue": {"baseExpression": {"baseExpression": {"id": 6944, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "5043:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 6946, "indexExpression": {"id": 6945, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6891, "src": "5055:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5043:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 6948, "indexExpression": {"id": 6947, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6935, "src": "5067:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5043:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5017:61:37"}, {"expression": {"arguments": [{"id": 6953, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6893, "src": "5111:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6954, "name": "_observerBudget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6897, "src": "5120:15:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6955, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6895, "src": "5137:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6956, "name": "_collaboratorsLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6899, "src": "5145:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 6950, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6943, "src": "5088:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 6952, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5096:14:37", "memberName": "_createPackage", "nodeType": "MemberAccess", "referencedDeclaration": 9222, "src": "5088:22:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256,uint256,uint256,uint256)"}}, "id": 6957, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5088:77:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6958, "nodeType": "ExpressionStatement", "src": "5088:77:37"}, {"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 6964, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "5225:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 6965, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5225:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6966, "name": "treasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6687, "src": "5239:8:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6972, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6969, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6967, "name": "total", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6921, "src": "5250:5:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"hexValue": "35", "id": 6968, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5258:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5"}, "value": "5"}, "src": "5250:9:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 6970, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "5249:11:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "313030", "id": 6971, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5263:3:37", "typeDescriptions": {"typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100"}, "value": "100"}, "src": "5249:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 6960, "name": "project", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6915, "src": "5193:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 6961, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5201:5:37", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 9822, "src": "5193:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 6959, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "5175:17:37", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 6962, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5175:32:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 6963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5208:16:37", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 513, "src": "5175:49:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,address,uint256)"}}, "id": 6973, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5175:92:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6974, "nodeType": "ExpressionStatement", "src": "5175:92:37"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6978, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6975, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6902, "src": "5282:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 6976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5293:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "5282:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 6977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5302:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5282:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 6993, "nodeType": "IfStatement", "src": "5278:171:37", "trueBody": {"id": 6992, "nodeType": "Block", "src": "5305:144:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6980, "name": "_observerBudget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6897, "src": "5327:15:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 6981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5345:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5327:19:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c6964206f627365727665727320627564676574", "id": 6983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5348:26:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_87a139ee77d6deaf6e0c6a32bcb311a9ec441f711c809441ebbfd38420d68615", "typeString": "literal_string \"invalid observers budget\""}, "value": "invalid observers budget"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_87a139ee77d6deaf6e0c6a32bcb311a9ec441f711c809441ebbfd38420d68615", "typeString": "literal_string \"invalid observers budget\""}], "id": 6979, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5319:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6984, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5319:56:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6985, "nodeType": "ExpressionStatement", "src": "5319:56:37"}, {"expression": {"arguments": [{"id": 6987, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6891, "src": "5403:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6988, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6935, "src": "5415:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6989, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6902, "src": "5427:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}], "id": 6986, "name": "_addObservers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7608, "src": "5389:13:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes32,address[] memory)"}}, "id": 6990, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5389:49:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6991, "nodeType": "ExpressionStatement", "src": "5389:49:37"}]}}, {"eventCall": {"arguments": [{"id": 6995, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6891, "src": "5479:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6996, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6935, "src": "5491:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6997, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6893, "src": "5503:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6998, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6895, "src": "5512:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6999, "name": "_observerBudget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6897, "src": "5520:15:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6994, "name": "CreatedPackage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8616, "src": "5464:14:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,uint256,uint256,uint256)"}}, "id": 7000, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5464:72:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7001, "nodeType": "EmitStatement", "src": "5459:77:37"}]}, "documentation": {"id": 6889, "nodeType": "StructuredDocumentation", "src": "4146:348:37", "text": " @notice Creates package in project\n @param _projectId Id of the project\n @param _budget MGP budget\n @param _bonus Bonus budget\n @param _observerBudget Observer budget\n @param _collaboratorsLimit limit on number of collaborators\n @param _observers List of observers\n Emit {CreatedPackage}"}, "functionSelector": "b2b57114", "id": 7003, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 6905, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6891, "src": "4735:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 6906, "kind": "modifierInvocation", "modifierName": {"id": 6904, "name": "onlyInitiator", "nameLocations": ["4721:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "4721:13:37"}, "nodeType": "ModifierInvocation", "src": "4721:25:37"}, {"arguments": [{"id": 6908, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6893, "src": "4755:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 6909, "kind": "modifierInvocation", "modifierName": {"id": 6907, "name": "nonZero", "nameLocations": ["4747:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6739, "src": "4747:7:37"}, "nodeType": "ModifierInvocation", "src": "4747:16:37"}, {"id": 6911, "kind": "modifierInvocation", "modifierName": {"id": 6910, "name": "nonReentrant", "nameLocations": ["4764:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 335, "src": "4764:12:37"}, "nodeType": "ModifierInvocation", "src": "4764:12:37"}], "name": "createPackage", "nameLocation": "4508:13:37", "nodeType": "FunctionDefinition", "parameters": {"id": 6903, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6891, "mutability": "mutable", "name": "_projectId", "nameLocation": "4539:10:37", "nodeType": "VariableDeclaration", "scope": 7003, "src": "4531:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6890, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4531:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 6893, "mutability": "mutable", "name": "_budget", "nameLocation": "4567:7:37", "nodeType": "VariableDeclaration", "scope": 7003, "src": "4559:15:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6892, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4559:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 6895, "mutability": "mutable", "name": "_bonus", "nameLocation": "4592:6:37", "nodeType": "VariableDeclaration", "scope": 7003, "src": "4584:14:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6894, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4584:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 6897, "mutability": "mutable", "name": "_observerBudget", "nameLocation": "4616:15:37", "nodeType": "VariableDeclaration", "scope": 7003, "src": "4608:23:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6896, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4608:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 6899, "mutability": "mutable", "name": "_collaboratorsLimit", "nameLocation": "4649:19:37", "nodeType": "VariableDeclaration", "scope": 7003, "src": "4641:27:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6898, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4641:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 6902, "mutability": "mutable", "name": "_observers", "nameLocation": "4695:10:37", "nodeType": "VariableDeclaration", "scope": 7003, "src": "4678:27:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 6900, "name": "address", "nodeType": "ElementaryTypeName", "src": "4678:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 6901, "nodeType": "ArrayTypeName", "src": "4678:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "4521:190:37"}, "returnParameters": {"id": 6912, "nodeType": "ParameterList", "parameters": [], "src": "4777:0:37"}, "scope": 8219, "src": "4499:1044:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8752], "body": {"id": 7173, "nodeType": "Block", "src": "6118:1230:37", "statements": [{"assignments": [7025], "declarations": [{"constant": false, "id": 7025, "mutability": "mutable", "name": "package", "nameLocation": "6144:7:37", "nodeType": "VariableDeclaration", "scope": 7173, "src": "6128:23:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 7024, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7023, "name": "Package", "nameLocations": ["6128:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "6128:7:37"}, "referencedDeclaration": 9870, "src": "6128:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "id": 7031, "initialValue": {"baseExpression": {"baseExpression": {"id": 7026, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "6154:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7028, "indexExpression": {"id": 7027, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7006, "src": "6166:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6154:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7030, "indexExpression": {"id": 7029, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7008, "src": "6178:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6154:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "6128:61:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7037, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7033, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7011, "src": "6207:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7034, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6222:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "6207:21:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 7035, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7025, "src": "6232:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7036, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6240:18:37", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "6232:26:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6207:51:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c696420636f6c6c61626f7261746f7273206c697374", "id": 7038, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6260:28:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_5ca65cb75d7b8dc223cc26652e4735163b47add5f5159f0342b94b0aab8575a4", "typeString": "literal_string \"invalid collaborators list\""}, "value": "invalid collaborators list"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_5ca65cb75d7b8dc223cc26652e4735163b47add5f5159f0342b94b0aab8575a4", "typeString": "literal_string \"invalid collaborators list\""}], "id": 7032, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6199:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7039, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6199:90:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7040, "nodeType": "ExpressionStatement", "src": "6199:90:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7046, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7042, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7011, "src": "6307:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6322:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "6307:21:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 7044, "name": "_scores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7017, "src": "6332:7:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 7045, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6340:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "6332:14:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6307:39:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "61727261797327206c656e677468206d69736d61746368", "id": 7047, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6348:25:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9bd464fa0a124def40ece43d9b5312a49a225a3c1aa27960d76f9488f050d7e8", "typeString": "literal_string \"arrays' length mismatch\""}, "value": "arrays' length mismatch"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9bd464fa0a124def40ece43d9b5312a49a225a3c1aa27960d76f9488f050d7e8", "typeString": "literal_string \"arrays' length mismatch\""}], "id": 7041, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6299:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7048, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6299:75:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7049, "nodeType": "ExpressionStatement", "src": "6299:75:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7055, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7051, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7014, "src": "6392:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6403:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "6392:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 7053, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7025, "src": "6413:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7054, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6421:14:37", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "6413:22:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6392:43:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c6964206f6273657276657273206c697374", "id": 7056, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6437:24:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_20479b551647c95d9261dfba708e2ac615e3f27fcda3b5e142f0cd973d3ec26e", "typeString": "literal_string \"invalid observers list\""}, "value": "invalid observers list"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_20479b551647c95d9261dfba708e2ac615e3f27fcda3b5e142f0cd973d3ec26e", "typeString": "literal_string \"invalid observers list\""}], "id": 7050, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6384:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7057, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6384:78:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7058, "nodeType": "ExpressionStatement", "src": "6384:78:37"}, {"assignments": [7060], "declarations": [{"constant": false, "id": 7060, "mutability": "mutable", "name": "budgetLeft_", "nameLocation": "6481:11:37", "nodeType": "VariableDeclaration", "scope": 7173, "src": "6473:19:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7059, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6473:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7064, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 7061, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7025, "src": "6495:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7062, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6503:14:37", "memberName": "_finishPackage", "nodeType": "MemberAccess", "referencedDeclaration": 9489, "src": "6495:22:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer) returns (uint256)"}}, "id": 7063, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6495:24:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "6473:46:37"}, {"expression": {"arguments": [{"id": 7069, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7060, "src": "6568:11:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"id": 7065, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "6529:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 7067, "indexExpression": {"id": 7066, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7006, "src": "6541:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6529:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 7068, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6553:14:37", "memberName": "_finishPackage", "nodeType": "MemberAccess", "referencedDeclaration": 9788, "src": "6529:38:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer,uint256)"}}, "id": 7070, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6529:51:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7071, "nodeType": "ExpressionStatement", "src": "6529:51:37"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 7080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7075, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7072, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7025, "src": "6595:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7073, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6603:5:37", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "6595:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7074, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6611:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6595:17:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7079, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7076, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7011, "src": "6616:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7077, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6631:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "6616:21:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7078, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6640:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6616:25:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6595:46:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7121, "nodeType": "IfStatement", "src": "6591:381:37", "trueBody": {"id": 7120, "nodeType": "Block", "src": "6643:329:37", "statements": [{"assignments": [7082], "declarations": [{"constant": false, "id": 7082, "mutability": "mutable", "name": "_totalBonusScores", "nameLocation": "6665:17:37", "nodeType": "VariableDeclaration", "scope": 7120, "src": "6657:25:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7081, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6657:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7084, "initialValue": {"hexValue": "30", "id": 7083, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6685:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "6657:29:37"}, {"body": {"id": 7111, "nodeType": "Block", "src": "6745:128:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7101, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 7097, "name": "_scores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7017, "src": "6771:7:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 7099, "indexExpression": {"id": 7098, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7086, "src": "6779:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6771:10:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7100, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6784:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6771:14:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c696420626f6e75732073636f7265", "id": 7102, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6787:21:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_51a20a1763a2b38b727bb4d72bcd2480167dd46e6d477bdccdbba02540ee1126", "typeString": "literal_string \"invalid bonus score\""}, "value": "invalid bonus score"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_51a20a1763a2b38b727bb4d72bcd2480167dd46e6d477bdccdbba02540ee1126", "typeString": "literal_string \"invalid bonus score\""}], "id": 7096, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6763:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7103, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6763:46:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7104, "nodeType": "ExpressionStatement", "src": "6763:46:37"}, {"expression": {"id": 7109, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 7105, "name": "_totalBonusScores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7082, "src": "6827:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"baseExpression": {"id": 7106, "name": "_scores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7017, "src": "6848:7:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 7108, "indexExpression": {"id": 7107, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7086, "src": "6856:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6848:10:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6827:31:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7110, "nodeType": "ExpressionStatement", "src": "6827:31:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7089, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7086, "src": "6720:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7090, "name": "_scores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7017, "src": "6724:7:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 7091, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6732:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "6724:14:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6720:18:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7112, "initializationExpression": {"assignments": [7086], "declarations": [{"constant": false, "id": 7086, "mutability": "mutable", "name": "i", "nameLocation": "6713:1:37", "nodeType": "VariableDeclaration", "scope": 7112, "src": "6705:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7085, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6705:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7088, "initialValue": {"hexValue": "30", "id": 7087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6717:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "6705:13:37"}, "loopExpression": {"expression": {"id": 7094, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "6740:3:37", "subExpression": {"id": 7093, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7086, "src": "6740:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7095, "nodeType": "ExpressionStatement", "src": "6740:3:37"}, "nodeType": "ForStatement", "src": "6700:173:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7114, "name": "_totalBonusScores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7082, "src": "6894:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 7115, "name": "PCT_PRECISION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6685, "src": "6915:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6894:34:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e636f727265637420746f74616c20626f6e75732073636f726573", "id": 7117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6930:30:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0b97c8059c6f797cf321a619eea52ba6ca535b8ab4023fa6d145f1c85f3ac5e6", "typeString": "literal_string \"incorrect total bonus scores\""}, "value": "incorrect total bonus scores"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_0b97c8059c6f797cf321a619eea52ba6ca535b8ab4023fa6d145f1c85f3ac5e6", "typeString": "literal_string \"incorrect total bonus scores\""}], "id": 7113, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6886:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7118, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6886:75:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7119, "nodeType": "ExpressionStatement", "src": "6886:75:37"}]}}, {"body": {"id": 7144, "nodeType": "Block", "src": "7034:103:37", "statements": [{"expression": {"arguments": [{"id": 7134, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7006, "src": "7072:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7135, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7008, "src": "7084:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"baseExpression": {"id": 7136, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7011, "src": "7096:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7138, "indexExpression": {"id": 7137, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7123, "src": "7111:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7096:17:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"baseExpression": {"id": 7139, "name": "_scores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7017, "src": "7115:7:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 7141, "indexExpression": {"id": 7140, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7123, "src": "7123:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7115:10:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 7133, "name": "_payCollaboratorRewards", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8087, "src": "7048:23:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,address,uint256)"}}, "id": 7142, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7048:78:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7143, "nodeType": "ExpressionStatement", "src": "7048:78:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7126, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7123, "src": "7002:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7127, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7011, "src": "7006:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7021:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "7006:21:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7002:25:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7145, "initializationExpression": {"assignments": [7123], "declarations": [{"constant": false, "id": 7123, "mutability": "mutable", "name": "i", "nameLocation": "6995:1:37", "nodeType": "VariableDeclaration", "scope": 7145, "src": "6987:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7122, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6987:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7125, "initialValue": {"hexValue": "30", "id": 7124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6999:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "6987:13:37"}, "loopExpression": {"expression": {"id": 7131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "7029:3:37", "subExpression": {"id": 7130, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7123, "src": "7029:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7132, "nodeType": "ExpressionStatement", "src": "7029:3:37"}, "nodeType": "ForStatement", "src": "6982:155:37"}, {"body": {"id": 7165, "nodeType": "Block", "src": "7195:79:37", "statements": [{"expression": {"arguments": [{"id": 7158, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7006, "src": "7225:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7159, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7008, "src": "7237:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"baseExpression": {"id": 7160, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7014, "src": "7249:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7162, "indexExpression": {"id": 7161, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7147, "src": "7260:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7249:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 7157, "name": "_payObserverFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8142, "src": "7209:15:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,bytes32,address)"}}, "id": 7163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7209:54:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7164, "nodeType": "ExpressionStatement", "src": "7209:54:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7150, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7147, "src": "7167:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7151, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7014, "src": "7171:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7182:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "7171:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7167:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7166, "initializationExpression": {"assignments": [7147], "declarations": [{"constant": false, "id": 7147, "mutability": "mutable", "name": "i", "nameLocation": "7160:1:37", "nodeType": "VariableDeclaration", "scope": 7166, "src": "7152:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7146, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7152:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7149, "initialValue": {"hexValue": "30", "id": 7148, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7164:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "7152:13:37"}, "loopExpression": {"expression": {"id": 7155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "7190:3:37", "subExpression": {"id": 7154, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7147, "src": "7190:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7156, "nodeType": "ExpressionStatement", "src": "7190:3:37"}, "nodeType": "ForStatement", "src": "7147:127:37"}, {"eventCall": {"arguments": [{"id": 7168, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7006, "src": "7305:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7169, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7008, "src": "7317:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7170, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7060, "src": "7329:11:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 7167, "name": "FinishedPackage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8668, "src": "7289:15:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,uint256)"}}, "id": 7171, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7289:52:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7172, "nodeType": "EmitStatement", "src": "7284:57:37"}]}, "documentation": {"id": 7004, "nodeType": "StructuredDocumentation", "src": "5549:332:37", "text": " @notice Finishes package in project\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborators List of collaborators\n @param _observers List of observers\n @param _scores List of bonus scores for collaborators\n Emit {FinishedPackage}"}, "functionSelector": "2926aa80", "id": 7174, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7020, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7006, "src": "6106:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7021, "kind": "modifierInvocation", "modifierName": {"id": 7019, "name": "onlyInitiator", "nameLocations": ["6092:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "6092:13:37"}, "nodeType": "ModifierInvocation", "src": "6092:25:37"}], "name": "finishPackage", "nameLocation": "5895:13:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7018, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7006, "mutability": "mutable", "name": "_projectId", "nameLocation": "5926:10:37", "nodeType": "VariableDeclaration", "scope": 7174, "src": "5918:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7005, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5918:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7008, "mutability": "mutable", "name": "_packageId", "nameLocation": "5954:10:37", "nodeType": "VariableDeclaration", "scope": 7174, "src": "5946:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7007, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5946:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7011, "mutability": "mutable", "name": "_collaborators", "nameLocation": "5991:14:37", "nodeType": "VariableDeclaration", "scope": 7174, "src": "5974:31:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7009, "name": "address", "nodeType": "ElementaryTypeName", "src": "5974:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7010, "nodeType": "ArrayTypeName", "src": "5974:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 7014, "mutability": "mutable", "name": "_observers", "nameLocation": "6032:10:37", "nodeType": "VariableDeclaration", "scope": 7174, "src": "6015:27:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7012, "name": "address", "nodeType": "ElementaryTypeName", "src": "6015:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7013, "nodeType": "ArrayTypeName", "src": "6015:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 7017, "mutability": "mutable", "name": "_scores", "nameLocation": "6069:7:37", "nodeType": "VariableDeclaration", "scope": 7174, "src": "6052:24:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 7015, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6052:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7016, "nodeType": "ArrayTypeName", "src": "6052:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "visibility": "internal"}], "src": "5908:174:37"}, "returnParameters": {"id": 7022, "nodeType": "ParameterList", "parameters": [], "src": "6118:0:37"}, "scope": 8219, "src": "5886:1462:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8768], "body": {"id": 7303, "nodeType": "Block", "src": "7887:928:37", "statements": [{"assignments": [7195], "declarations": [{"constant": false, "id": 7195, "mutability": "mutable", "name": "package", "nameLocation": "7913:7:37", "nodeType": "VariableDeclaration", "scope": 7303, "src": "7897:23:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 7194, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7193, "name": "Package", "nameLocations": ["7897:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "7897:7:37"}, "referencedDeclaration": 9870, "src": "7897:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "id": 7201, "initialValue": {"baseExpression": {"baseExpression": {"id": 7196, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "7923:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7198, "indexExpression": {"id": 7197, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7177, "src": "7935:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7923:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7200, "indexExpression": {"id": 7199, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7179, "src": "7947:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7923:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "7897:61:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7207, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7203, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7182, "src": "7976:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7204, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7991:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "7976:21:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 7205, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8001:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7206, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8009:18:37", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "8001:26:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7976:51:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c696420636f6c6c61626f7261746f7273206c656e677468", "id": 7208, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8029:30:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_de2fbffae3f4f1ed598a27d64750bfdd6d759009e12a2c10cadc7ceaef8232cc", "typeString": "literal_string \"invalid collaborators length\""}, "value": "invalid collaborators length"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_de2fbffae3f4f1ed598a27d64750bfdd6d759009e12a2c10cadc7ceaef8232cc", "typeString": "literal_string \"invalid collaborators length\""}], "id": 7202, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7968:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7209, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7968:92:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7210, "nodeType": "ExpressionStatement", "src": "7968:92:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7216, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7212, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7185, "src": "8078:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8089:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "8078:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 7214, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8099:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7215, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8107:14:37", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "8099:22:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8078:43:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c6964206f6273657276657273206c656e677468", "id": 7217, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8123:26:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1cef18bcdd12a026dd9eb03d0204bf23685f9062ba55504df4db41eec5fffe88", "typeString": "literal_string \"invalid observers length\""}, "value": "invalid observers length"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1cef18bcdd12a026dd9eb03d0204bf23685f9062ba55504df4db41eec5fffe88", "typeString": "literal_string \"invalid observers length\""}], "id": 7211, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8070:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7218, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8070:80:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7219, "nodeType": "ExpressionStatement", "src": "8070:80:37"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 7220, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8161:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7222, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8169:14:37", "memberName": "_cancelPackage", "nodeType": "MemberAccess", "referencedDeclaration": 9246, "src": "8161:22:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer)"}}, "id": 7223, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8161:24:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7224, "nodeType": "ExpressionStatement", "src": "8161:24:37"}, {"condition": {"id": 7225, "name": "_workStarted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7187, "src": "8200:12:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7268, "nodeType": "IfStatement", "src": "8196:280:37", "trueBody": {"id": 7267, "nodeType": "Block", "src": "8214:262:37", "statements": [{"body": {"expression": {"arguments": [{"id": 7238, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7177, "src": "8304:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7239, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7179, "src": "8316:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"baseExpression": {"id": 7240, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7182, "src": "8328:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7242, "indexExpression": {"id": 7241, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7227, "src": "8343:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8328:17:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"hexValue": "30", "id": 7243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8347:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 7237, "name": "_payCollaboratorRewards", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8087, "src": "8280:23:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,address,uint256)"}}, "id": 7244, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8280:69:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7245, "nodeType": "ExpressionStatement", "src": "8280:69:37"}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7230, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7227, "src": "8248:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7231, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7182, "src": "8252:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8267:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "8252:21:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8248:25:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7246, "initializationExpression": {"assignments": [7227], "declarations": [{"constant": false, "id": 7227, "mutability": "mutable", "name": "i", "nameLocation": "8241:1:37", "nodeType": "VariableDeclaration", "scope": 7246, "src": "8233:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7226, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8233:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7229, "initialValue": {"hexValue": "30", "id": 7228, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8245:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "8233:13:37"}, "loopExpression": {"expression": {"id": 7235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "8275:3:37", "subExpression": {"id": 7234, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7227, "src": "8275:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7236, "nodeType": "ExpressionStatement", "src": "8275:3:37"}, "nodeType": "ForStatement", "src": "8228:121:37"}, {"body": {"expression": {"arguments": [{"id": 7259, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7177, "src": "8427:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7260, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7179, "src": "8439:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"baseExpression": {"id": 7261, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7185, "src": "8451:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7263, "indexExpression": {"id": 7262, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7248, "src": "8462:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8451:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 7258, "name": "_payObserverFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8142, "src": "8411:15:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,bytes32,address)"}}, "id": 7264, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8411:54:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7265, "nodeType": "ExpressionStatement", "src": "8411:54:37"}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7254, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7251, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7248, "src": "8383:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7252, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7185, "src": "8387:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8398:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "8387:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8383:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7266, "initializationExpression": {"assignments": [7248], "declarations": [{"constant": false, "id": 7248, "mutability": "mutable", "name": "i", "nameLocation": "8376:1:37", "nodeType": "VariableDeclaration", "scope": 7266, "src": "8368:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7247, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8368:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7250, "initialValue": {"hexValue": "30", "id": 7249, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8380:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "8368:13:37"}, "loopExpression": {"expression": {"id": 7256, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "8406:3:37", "subExpression": {"id": 7255, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7248, "src": "8406:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7257, "nodeType": "ExpressionStatement", "src": "8406:3:37"}, "nodeType": "ForStatement", "src": "8363:102:37"}]}}, {"assignments": [7270], "declarations": [{"constant": false, "id": 7270, "mutability": "mutable", "name": "budgetToBeReverted_", "nameLocation": "8494:19:37", "nodeType": "VariableDeclaration", "scope": 7303, "src": "8486:27:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7269, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8486:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7280, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7271, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8517:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7272, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8525:6:37", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9839, "src": "8517:14:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 7273, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8534:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7274, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8542:10:37", "memberName": "budgetPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9843, "src": "8534:18:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8517:35:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 7276, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "8516:37:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 7277, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8556:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7278, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8564:5:37", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "8556:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8516:53:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "8486:83:37"}, {"expression": {"id": 7288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 7281, "name": "budgetToBeReverted_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7270, "src": "8579:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7286, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7282, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8603:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7283, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8611:15:37", "memberName": "budgetObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9845, "src": "8603:23:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 7284, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8629:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7285, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8637:19:37", "memberName": "budgetObserversPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9847, "src": "8629:27:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8603:53:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 7287, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "8602:55:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8579:78:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7289, "nodeType": "ExpressionStatement", "src": "8579:78:37"}, {"expression": {"arguments": [{"id": 7294, "name": "budgetToBeReverted_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7270, "src": "8712:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"id": 7290, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "8667:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 7292, "indexExpression": {"id": 7291, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7177, "src": "8679:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8667:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 7293, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8691:20:37", "memberName": "_revertPackageBudget", "nodeType": "MemberAccess", "referencedDeclaration": 9763, "src": "8667:44:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer,uint256)"}}, "id": 7295, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8667:65:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7296, "nodeType": "ExpressionStatement", "src": "8667:65:37"}, {"eventCall": {"arguments": [{"id": 7298, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7177, "src": "8764:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7299, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7179, "src": "8776:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7300, "name": "budgetToBeReverted_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7270, "src": "8788:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 7297, "name": "CanceledPackage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8676, "src": "8748:15:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,uint256)"}}, "id": 7301, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8748:60:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7302, "nodeType": "EmitStatement", "src": "8743:65:37"}]}, "documentation": {"id": 7175, "nodeType": "StructuredDocumentation", "src": "7354:303:37", "text": " @notice Cancel package in project and release project budget\n @param _projectId Id of the project\n @param _packageId Id of the project\n @param _collaborators address of the collaborators\n @param _observers address of the observers\n Emit {CanceledPackage}"}, "functionSelector": "085f8a9c", "id": 7304, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7190, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7177, "src": "7875:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7191, "kind": "modifierInvocation", "modifierName": {"id": 7189, "name": "onlyInitiator", "nameLocations": ["7861:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "7861:13:37"}, "nodeType": "ModifierInvocation", "src": "7861:25:37"}], "name": "cancelPackage", "nameLocation": "7671:13:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7188, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7177, "mutability": "mutable", "name": "_projectId", "nameLocation": "7702:10:37", "nodeType": "VariableDeclaration", "scope": 7304, "src": "7694:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7176, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7694:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7179, "mutability": "mutable", "name": "_packageId", "nameLocation": "7730:10:37", "nodeType": "VariableDeclaration", "scope": 7304, "src": "7722:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7178, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7722:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7182, "mutability": "mutable", "name": "_collaborators", "nameLocation": "7767:14:37", "nodeType": "VariableDeclaration", "scope": 7304, "src": "7750:31:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7180, "name": "address", "nodeType": "ElementaryTypeName", "src": "7750:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7181, "nodeType": "ArrayTypeName", "src": "7750:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 7185, "mutability": "mutable", "name": "_observers", "nameLocation": "7808:10:37", "nodeType": "VariableDeclaration", "scope": 7304, "src": "7791:27:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7183, "name": "address", "nodeType": "ElementaryTypeName", "src": "7791:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7184, "nodeType": "ArrayTypeName", "src": "7791:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 7187, "mutability": "mutable", "name": "_workStarted", "nameLocation": "7833:12:37", "nodeType": "VariableDeclaration", "scope": 7304, "src": "7828:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7186, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7828:4:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "7684:167:37"}, "returnParameters": {"id": 7192, "nodeType": "ParameterList", "parameters": [], "src": "7887:0:37"}, "scope": 8219, "src": "7662:1153:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8780], "body": {"id": 7359, "nodeType": "Block", "src": "9271:321:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 7328, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7323, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7311, "src": "9289:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 7326, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9314:1:37", "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": 7325, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9306:7:37", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 7324, "name": "address", "nodeType": "ElementaryTypeName", "src": "9306:7:37", "typeDescriptions": {}}}, "id": 7327, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9306:10:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9289:27:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "636f6c6c61626f7261746f7227732061646472657373206973207a65726f", "id": 7329, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9318:32:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0d56864eab7e1a9f464ce2347b12a7792ed60e30b582451e7de914be46d841e8", "typeString": "literal_string \"collaborator's address is zero\""}, "value": "collaborator's address is zero"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_0d56864eab7e1a9f464ce2347b12a7792ed60e30b582451e7de914be46d841e8", "typeString": "literal_string \"collaborator's address is zero\""}], "id": 7322, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9281:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7330, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9281:70:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7331, "nodeType": "ExpressionStatement", "src": "9281:70:37"}, {"expression": {"arguments": [{"id": 7340, "name": "_mgp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7313, "src": "9435:4:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7332, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "9362:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7336, "indexExpression": {"id": 7333, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7307, "src": "9379:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9362:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7337, "indexExpression": {"id": 7334, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7309, "src": "9391:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9362:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7338, "indexExpression": {"id": 7335, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7311, "src": "9403:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9362:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "id": 7339, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9418:16:37", "memberName": "_addCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 8954, "src": "9362:72:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Collaborator_$9885_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Collaborator_$9885_storage_ptr_$", "typeString": "function (struct Collaborator storage pointer,uint256)"}}, "id": 7341, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9362:78:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7342, "nodeType": "ExpressionStatement", "src": "9362:78:37"}, {"expression": {"arguments": [{"id": 7349, "name": "_mgp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7313, "src": "9502:4:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7343, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "9450:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7346, "indexExpression": {"id": 7344, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7307, "src": "9462:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9450:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7347, "indexExpression": {"id": 7345, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7309, "src": "9474:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9450:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7348, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9486:15:37", "memberName": "_allocateBudget", "nodeType": "MemberAccess", "referencedDeclaration": 9378, "src": "9450:51:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256)"}}, "id": 7350, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9450:57:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7351, "nodeType": "ExpressionStatement", "src": "9450:57:37"}, {"eventCall": {"arguments": [{"id": 7353, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7307, "src": "9541:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7354, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7309, "src": "9553:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7355, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7311, "src": "9565:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 7356, "name": "_mgp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7313, "src": "9580:4:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 7352, "name": "AddedCollaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8644, "src": "9523:17:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,address,uint256)"}}, "id": 7357, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9523:62:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7358, "nodeType": "EmitStatement", "src": "9518:67:37"}]}, "documentation": {"id": 7305, "nodeType": "StructuredDocumentation", "src": "8821:256:37", "text": " @notice Adds collaborator to package\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator collaborators' addresses\n @param _mgp MGP amount\n Emit {AddedCollaborator}"}, "functionSelector": "ec104ff1", "id": 7360, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7316, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7307, "src": "9245:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7317, "kind": "modifierInvocation", "modifierName": {"id": 7315, "name": "onlyInitiator", "nameLocations": ["9231:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "9231:13:37"}, "nodeType": "ModifierInvocation", "src": "9231:25:37"}, {"arguments": [{"id": 7319, "name": "_mgp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7313, "src": "9265:4:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 7320, "kind": "modifierInvocation", "modifierName": {"id": 7318, "name": "nonZero", "nameLocations": ["9257:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6739, "src": "9257:7:37"}, "nodeType": "ModifierInvocation", "src": "9257:13:37"}], "name": "addCollaborator", "nameLocation": "9091:15:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7314, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7307, "mutability": "mutable", "name": "_projectId", "nameLocation": "9124:10:37", "nodeType": "VariableDeclaration", "scope": 7360, "src": "9116:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7306, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9116:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7309, "mutability": "mutable", "name": "_packageId", "nameLocation": "9152:10:37", "nodeType": "VariableDeclaration", "scope": 7360, "src": "9144:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7308, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9144:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7311, "mutability": "mutable", "name": "_collaborator", "nameLocation": "9180:13:37", "nodeType": "VariableDeclaration", "scope": 7360, "src": "9172:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7310, "name": "address", "nodeType": "ElementaryTypeName", "src": "9172:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 7313, "mutability": "mutable", "name": "_mgp", "nameLocation": "9211:4:37", "nodeType": "VariableDeclaration", "scope": 7360, "src": "9203:12:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7312, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9203:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "9106:115:37"}, "returnParameters": {"id": 7321, "nodeType": "ParameterList", "parameters": [], "src": "9271:0:37"}, "scope": 8219, "src": "9082:510:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8790], "body": {"id": 7407, "nodeType": "Block", "src": "10038:307:37", "statements": [{"expression": {"id": 7381, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7373, "name": "approvedUser", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6707, "src": "10048:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => bool)))"}}, "id": 7377, "indexExpression": {"id": 7374, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7363, "src": "10061:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10048:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))"}}, "id": 7378, "indexExpression": {"id": 7375, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7365, "src": "10073:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10048:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 7379, "indexExpression": {"id": 7376, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7367, "src": "10085:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10048:51:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 7380, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "10102:4:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "10048:58:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7382, "nodeType": "ExpressionStatement", "src": "10048:58:37"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7383, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "10117:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7387, "indexExpression": {"id": 7384, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7363, "src": "10134:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10117:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7388, "indexExpression": {"id": 7385, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7365, "src": "10146:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10117:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7389, "indexExpression": {"id": 7386, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7367, "src": "10158:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10117:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "id": 7390, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10173:20:37", "memberName": "_approveCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 8980, "src": "10117:76:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Collaborator_$9885_storage_ptr_$returns$__$bound_to$_t_struct$_Collaborator_$9885_storage_ptr_$", "typeString": "function (struct Collaborator storage pointer)"}}, "id": 7391, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10117:78:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7392, "nodeType": "ExpressionStatement", "src": "10117:78:37"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"id": 7393, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "10205:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7396, "indexExpression": {"id": 7394, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7363, "src": "10217:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10205:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7397, "indexExpression": {"id": 7395, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7365, "src": "10229:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10205:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7398, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10241:20:37", "memberName": "_approveCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 9394, "src": "10205:56:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer)"}}, "id": 7399, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10205:58:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7400, "nodeType": "ExpressionStatement", "src": "10205:58:37"}, {"eventCall": {"arguments": [{"id": 7402, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7363, "src": "10300:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7403, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7365, "src": "10312:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7404, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7367, "src": "10324:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 7401, "name": "ApprovedCollaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8652, "src": "10279:20:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,bytes32,address)"}}, "id": 7405, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10279:59:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7406, "nodeType": "EmitStatement", "src": "10274:64:37"}]}, "documentation": {"id": 7361, "nodeType": "StructuredDocumentation", "src": "9598:278:37", "text": " @notice Approves collaborator's MGP or deletes collaborator (should be called by admin)\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator collaborator's address\n Emit {ApprovedCollaborator}"}, "functionSelector": "dcce114e", "id": 7408, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7370, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7363, "src": "10026:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7371, "kind": "modifierInvocation", "modifierName": {"id": 7369, "name": "onlyInitiator", "nameLocations": ["10012:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "10012:13:37"}, "nodeType": "ModifierInvocation", "src": "10012:25:37"}], "name": "approveCollaborator", "nameLocation": "9890:19:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7368, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7363, "mutability": "mutable", "name": "_projectId", "nameLocation": "9927:10:37", "nodeType": "VariableDeclaration", "scope": 7408, "src": "9919:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7362, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9919:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7365, "mutability": "mutable", "name": "_packageId", "nameLocation": "9955:10:37", "nodeType": "VariableDeclaration", "scope": 7408, "src": "9947:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7364, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9947:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7367, "mutability": "mutable", "name": "_collaborator", "nameLocation": "9983:13:37", "nodeType": "VariableDeclaration", "scope": 7408, "src": "9975:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7366, "name": "address", "nodeType": "ElementaryTypeName", "src": "9975:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "9909:93:37"}, "returnParameters": {"id": 7372, "nodeType": "ParameterList", "parameters": [], "src": "10038:0:37"}, "scope": 8219, "src": "9881:464:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8802], "body": {"id": 7478, "nodeType": "Block", "src": "10881:549:37", "statements": [{"expression": {"arguments": [{"id": 7431, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "10899:52:37", "subExpression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7424, "name": "approvedUser", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6707, "src": "10900:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => bool)))"}}, "id": 7426, "indexExpression": {"id": 7425, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7411, "src": "10913:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10900:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))"}}, "id": 7428, "indexExpression": {"id": 7427, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7413, "src": "10925:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10900:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 7430, "indexExpression": {"id": 7429, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7415, "src": "10937:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10900:51:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "636f6c6c61626f7261746f7220617070726f76656420616c726561647921", "id": 7432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10953:32:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_f04fffb5edeeb78c7b31b862beaa963147b1688bbce51b90f9d56f719569440c", "typeString": "literal_string \"collaborator approved already!\""}, "value": "collaborator approved already!"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_f04fffb5edeeb78c7b31b862beaa963147b1688bbce51b90f9d56f719569440c", "typeString": "literal_string \"collaborator approved already!\""}], "id": 7423, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10891:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7433, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10891:95:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7434, "nodeType": "ExpressionStatement", "src": "10891:95:37"}, {"assignments": [7437], "declarations": [{"constant": false, "id": 7437, "mutability": "mutable", "name": "collaborator", "nameLocation": "11018:12:37", "nodeType": "VariableDeclaration", "scope": 7478, "src": "10997:33:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 7436, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7435, "name": "Collaborator", "nameLocations": ["10997:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "10997:12:37"}, "referencedDeclaration": 9885, "src": "10997:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "id": 7445, "initialValue": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7438, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "11033:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7440, "indexExpression": {"id": 7439, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7411, "src": "11050:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11033:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7442, "indexExpression": {"id": 7441, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7413, "src": "11062:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11033:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7444, "indexExpression": {"id": 7443, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7415, "src": "11074:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11033:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "10997:91:37"}, {"condition": {"id": 7446, "name": "_shouldPayMgp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7417, "src": "11102:13:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7455, "nodeType": "IfStatement", "src": "11098:109:37", "trueBody": {"id": 7454, "nodeType": "Block", "src": "11117:90:37", "statements": [{"expression": {"arguments": [{"id": 7448, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7411, "src": "11155:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7449, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7413, "src": "11167:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7450, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7415, "src": "11179:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"hexValue": "30", "id": 7451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11194:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 7447, "name": "_payCollaboratorRewards", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8087, "src": "11131:23:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,address,uint256)"}}, "id": 7452, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11131:65:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7453, "nodeType": "ExpressionStatement", "src": "11131:65:37"}]}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 7456, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7437, "src": "11217:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 7458, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11230:19:37", "memberName": "_removeCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 8996, "src": "11217:32:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Collaborator_$9885_storage_ptr_$returns$__$bound_to$_t_struct$_Collaborator_$9885_storage_ptr_$", "typeString": "function (struct Collaborator storage pointer)"}}, "id": 7459, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11217:34:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7460, "nodeType": "ExpressionStatement", "src": "11217:34:37"}, {"expression": {"arguments": [{"id": 7467, "name": "_shouldPayMgp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7417, "src": "11317:13:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"expression": {"id": 7468, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7437, "src": "11332:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 7469, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11345:3:37", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "11332:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7461, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "11261:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7464, "indexExpression": {"id": 7462, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7411, "src": "11273:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11261:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7465, "indexExpression": {"id": 7463, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7413, "src": "11285:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11261:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7466, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11297:19:37", "memberName": "_removeCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 9424, "src": "11261:55:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_bool_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,bool,uint256)"}}, "id": 7470, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11261:88:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7471, "nodeType": "ExpressionStatement", "src": "11261:88:37"}, {"eventCall": {"arguments": [{"id": 7473, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7411, "src": "11385:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7474, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7413, "src": "11397:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7475, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7415, "src": "11409:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 7472, "name": "RemovedCollaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8660, "src": "11365:19:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,bytes32,address)"}}, "id": 7476, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11365:58:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7477, "nodeType": "EmitStatement", "src": "11360:63:37"}]}, "documentation": {"id": 7409, "nodeType": "StructuredDocumentation", "src": "10351:341:37", "text": " @notice Approves collaborator's MGP or deletes collaborator (should be called by admin)\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator collaborator's address\n @param _shouldPayMgp Should pay MGP for the collaborator\n Emit {RemovedCollaborator}"}, "functionSelector": "0eae9d88", "id": 7479, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7420, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7411, "src": "10869:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7421, "kind": "modifierInvocation", "modifierName": {"id": 7419, "name": "onlyInitiator", "nameLocations": ["10855:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "10855:13:37"}, "nodeType": "ModifierInvocation", "src": "10855:25:37"}], "name": "removeCollaborator", "nameLocation": "10706:18:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7418, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7411, "mutability": "mutable", "name": "_projectId", "nameLocation": "10742:10:37", "nodeType": "VariableDeclaration", "scope": 7479, "src": "10734:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7410, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10734:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7413, "mutability": "mutable", "name": "_packageId", "nameLocation": "10770:10:37", "nodeType": "VariableDeclaration", "scope": 7479, "src": "10762:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7412, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10762:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7415, "mutability": "mutable", "name": "_collaborator", "nameLocation": "10798:13:37", "nodeType": "VariableDeclaration", "scope": 7479, "src": "10790:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7414, "name": "address", "nodeType": "ElementaryTypeName", "src": "10790:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 7417, "mutability": "mutable", "name": "_shouldPayMgp", "nameLocation": "10826:13:37", "nodeType": "VariableDeclaration", "scope": 7479, "src": "10821:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7416, "name": "bool", "nodeType": "ElementaryTypeName", "src": "10821:4:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "10724:121:37"}, "returnParameters": {"id": 7422, "nodeType": "ParameterList", "parameters": [], "src": "10881:0:37"}, "scope": 8219, "src": "10697:733:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8810], "body": {"id": 7535, "nodeType": "Block", "src": "11681:419:37", "statements": [{"expression": {"arguments": [{"id": 7496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "11699:51:37", "subExpression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7488, "name": "approvedUser", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6707, "src": "11700:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => bool)))"}}, "id": 7490, "indexExpression": {"id": 7489, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7482, "src": "11713:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11700:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))"}}, "id": 7492, "indexExpression": {"id": 7491, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7484, "src": "11725:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11700:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 7495, "indexExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 7493, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "11737:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 7494, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11737:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11700:50:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "636f6c6c61626f7261746f7220617070726f76656420616c726561647921", "id": 7497, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11752:32:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_f04fffb5edeeb78c7b31b862beaa963147b1688bbce51b90f9d56f719569440c", "typeString": "literal_string \"collaborator approved already!\""}, "value": "collaborator approved already!"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_f04fffb5edeeb78c7b31b862beaa963147b1688bbce51b90f9d56f719569440c", "typeString": "literal_string \"collaborator approved already!\""}], "id": 7487, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11691:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7498, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11691:94:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7499, "nodeType": "ExpressionStatement", "src": "11691:94:37"}, {"assignments": [7502], "declarations": [{"constant": false, "id": 7502, "mutability": "mutable", "name": "collaborator", "nameLocation": "11817:12:37", "nodeType": "VariableDeclaration", "scope": 7535, "src": "11796:33:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 7501, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7500, "name": "Collaborator", "nameLocations": ["11796:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "11796:12:37"}, "referencedDeclaration": 9885, "src": "11796:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "id": 7511, "initialValue": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7503, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "11832:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7505, "indexExpression": {"id": 7504, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7482, "src": "11849:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11832:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7507, "indexExpression": {"id": 7506, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7484, "src": "11861:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11832:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7510, "indexExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 7508, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "11873:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 7509, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11873:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11832:54:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "11796:90:37"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 7512, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7502, "src": "11896:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 7514, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11909:19:37", "memberName": "_removeCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 8996, "src": "11896:32:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Collaborator_$9885_storage_ptr_$returns$__$bound_to$_t_struct$_Collaborator_$9885_storage_ptr_$", "typeString": "function (struct Collaborator storage pointer)"}}, "id": 7515, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11896:34:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7516, "nodeType": "ExpressionStatement", "src": "11896:34:37"}, {"expression": {"arguments": [{"hexValue": "66616c7365", "id": 7523, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "11996:5:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"expression": {"id": 7524, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7502, "src": "12003:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 7525, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "12016:3:37", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "12003:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7517, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "11940:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7520, "indexExpression": {"id": 7518, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7482, "src": "11952:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11940:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7521, "indexExpression": {"id": 7519, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7484, "src": "11964:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11940:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7522, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11976:19:37", "memberName": "_removeCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 9424, "src": "11940:55:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_bool_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,bool,uint256)"}}, "id": 7526, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11940:80:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7527, "nodeType": "ExpressionStatement", "src": "11940:80:37"}, {"eventCall": {"arguments": [{"id": 7529, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7482, "src": "12056:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7530, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7484, "src": "12068:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"arguments": [], "expression": {"argumentTypes": [], "id": 7531, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "12080:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 7532, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12080:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 7528, "name": "RemovedCollaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8660, "src": "12036:19:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,bytes32,address)"}}, "id": 7533, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12036:57:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7534, "nodeType": "EmitStatement", "src": "12031:62:37"}]}, "documentation": {"id": 7480, "nodeType": "StructuredDocumentation", "src": "11436:171:37", "text": " @notice Self remove collaborator\n @param _projectId Id of the project\n @param _packageId Id of the package\n Emit {RemovedCollaborator}"}, "functionSelector": "03a1fc22", "id": 7536, "implemented": true, "kind": "function", "modifiers": [], "name": "selfRemove", "nameLocation": "11621:10:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7485, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7482, "mutability": "mutable", "name": "_projectId", "nameLocation": "11640:10:37", "nodeType": "VariableDeclaration", "scope": 7536, "src": "11632:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7481, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11632:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7484, "mutability": "mutable", "name": "_packageId", "nameLocation": "11660:10:37", "nodeType": "VariableDeclaration", "scope": 7536, "src": "11652:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7483, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11652:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "11631:40:37"}, "returnParameters": {"id": 7486, "nodeType": "ParameterList", "parameters": [], "src": "11681:0:37"}, "scope": 8219, "src": "11612:488:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 7607, "nodeType": "Block", "src": "12236:444:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7547, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7543, "src": "12254:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12265:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "12254:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7549, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12274:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "12254:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "656d707479206f627365727665727320617272617921", "id": 7551, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "12277:24:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_3455c48edf0cadfcbb54fa5d64f69c9a0ba6371f9887114ced22a8e237385a55", "typeString": "literal_string \"empty observers array!\""}, "value": "empty observers array!"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_3455c48edf0cadfcbb54fa5d64f69c9a0ba6371f9887114ced22a8e237385a55", "typeString": "literal_string \"empty observers array!\""}], "id": 7546, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "12246:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7552, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12246:56:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7553, "nodeType": "ExpressionStatement", "src": "12246:56:37"}, {"body": {"id": 7589, "nodeType": "Block", "src": "12361:169:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 7573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 7566, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7543, "src": "12383:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7568, "indexExpression": {"id": 7567, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7555, "src": "12394:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12383:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 7571, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12408:1:37", "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": 7570, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "12400:7:37", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 7569, "name": "address", "nodeType": "ElementaryTypeName", "src": "12400:7:37", "typeDescriptions": {}}}, "id": 7572, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12400:10:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "12383:27:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "7a65726f206f627365727665722773206164647265737321", "id": 7574, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "12412:26:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_ac7178626af83d7667a919a8511949a621a2a6d80c3a578036b7c2e2e1c15a3a", "typeString": "literal_string \"zero observer's address!\""}, "value": "zero observer's address!"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_ac7178626af83d7667a919a8511949a621a2a6d80c3a578036b7c2e2e1c15a3a", "typeString": "literal_string \"zero observer's address!\""}], "id": 7565, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "12375:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7575, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12375:64:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7576, "nodeType": "ExpressionStatement", "src": "12375:64:37"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7577, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "12453:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 7583, "indexExpression": {"id": 7578, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7538, "src": "12466:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12453:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 7584, "indexExpression": {"id": 7579, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7540, "src": "12478:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12453:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 7585, "indexExpression": {"baseExpression": {"id": 7580, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7543, "src": "12490:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7582, "indexExpression": {"id": 7581, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7555, "src": "12501:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12490:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12453:51:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "id": 7586, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "12505:12:37", "memberName": "_addObserver", "nodeType": "MemberAccess", "referencedDeclaration": 9090, "src": "12453:64:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Observer_$9892_storage_ptr_$returns$__$bound_to$_t_struct$_Observer_$9892_storage_ptr_$", "typeString": "function (struct Observer storage pointer)"}}, "id": 7587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12453:66:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7588, "nodeType": "ExpressionStatement", "src": "12453:66:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7558, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7555, "src": "12333:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7559, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7543, "src": "12337:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12348:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "12337:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12333:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7590, "initializationExpression": {"assignments": [7555], "declarations": [{"constant": false, "id": 7555, "mutability": "mutable", "name": "i", "nameLocation": "12326:1:37", "nodeType": "VariableDeclaration", "scope": 7590, "src": "12318:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7554, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12318:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7557, "initialValue": {"hexValue": "30", "id": 7556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12330:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "12318:13:37"}, "loopExpression": {"expression": {"id": 7563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "12356:3:37", "subExpression": {"id": 7562, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7555, "src": "12356:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7564, "nodeType": "ExpressionStatement", "src": "12356:3:37"}, "nodeType": "ForStatement", "src": "12313:217:37"}, {"expression": {"arguments": [{"expression": {"id": 7597, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7543, "src": "12589:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7598, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12600:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "12589:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7591, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "12539:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7594, "indexExpression": {"id": 7592, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7538, "src": "12551:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12539:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7595, "indexExpression": {"id": 7593, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7540, "src": "12563:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12539:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7596, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "12575:13:37", "memberName": "_addObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9299, "src": "12539:49:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256)"}}, "id": 7599, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12539:68:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7600, "nodeType": "ExpressionStatement", "src": "12539:68:37"}, {"eventCall": {"arguments": [{"id": 7602, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7538, "src": "12638:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7603, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7540, "src": "12650:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7604, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7543, "src": "12662:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}], "id": 7601, "name": "AddedObservers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8625, "src": "12623:14:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes32,address[] memory)"}}, "id": 7605, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12623:50:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7606, "nodeType": "EmitStatement", "src": "12618:55:37"}]}, "id": 7608, "implemented": true, "kind": "function", "modifiers": [], "name": "_addObservers", "nameLocation": "12115:13:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7544, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7538, "mutability": "mutable", "name": "_projectId", "nameLocation": "12146:10:37", "nodeType": "VariableDeclaration", "scope": 7608, "src": "12138:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7537, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12138:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7540, "mutability": "mutable", "name": "_packageId", "nameLocation": "12174:10:37", "nodeType": "VariableDeclaration", "scope": 7608, "src": "12166:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7539, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12166:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7543, "mutability": "mutable", "name": "_observers", "nameLocation": "12211:10:37", "nodeType": "VariableDeclaration", "scope": 7608, "src": "12194:27:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7541, "name": "address", "nodeType": "ElementaryTypeName", "src": "12194:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7542, "nodeType": "ArrayTypeName", "src": "12194:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "12128:99:37"}, "returnParameters": {"id": 7545, "nodeType": "ParameterList", "parameters": [], "src": "12236:0:37"}, "scope": 8219, "src": "12106:574:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"baseFunctions": [8821], "body": {"id": 7628, "nodeType": "Block", "src": "13060:66:37", "statements": [{"expression": {"arguments": [{"id": 7623, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7611, "src": "13084:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7624, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7613, "src": "13096:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7625, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7616, "src": "13108:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}], "id": 7622, "name": "_addObservers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7608, "src": "13070:13:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes32,address[] memory)"}}, "id": 7626, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13070:49:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7627, "nodeType": "ExpressionStatement", "src": "13070:49:37"}]}, "documentation": {"id": 7609, "nodeType": "StructuredDocumentation", "src": "12686:213:37", "text": " @notice Adds observer to packages\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _observers observers' addresses\n Emit {AddedObservers}"}, "functionSelector": "be06555e", "id": 7629, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7619, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7611, "src": "13048:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7620, "kind": "modifierInvocation", "modifierName": {"id": 7618, "name": "onlyInitiator", "nameLocations": ["13034:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "13034:13:37"}, "nodeType": "ModifierInvocation", "src": "13034:25:37"}], "name": "addObservers", "nameLocation": "12913:12:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7617, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7611, "mutability": "mutable", "name": "_projectId", "nameLocation": "12943:10:37", "nodeType": "VariableDeclaration", "scope": 7629, "src": "12935:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7610, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12935:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7613, "mutability": "mutable", "name": "_packageId", "nameLocation": "12971:10:37", "nodeType": "VariableDeclaration", "scope": 7629, "src": "12963:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7612, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12963:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7616, "mutability": "mutable", "name": "_observers", "nameLocation": "13008:10:37", "nodeType": "VariableDeclaration", "scope": 7629, "src": "12991:27:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7614, "name": "address", "nodeType": "ElementaryTypeName", "src": "12991:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7615, "nodeType": "ArrayTypeName", "src": "12991:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "12925:99:37"}, "returnParameters": {"id": 7621, "nodeType": "ParameterList", "parameters": [], "src": "13060:0:37"}, "scope": 8219, "src": "12904:222:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8832], "body": {"id": 7692, "nodeType": "Block", "src": "13509:374:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7644, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7637, "src": "13527:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13538:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "13527:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7646, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13547:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "13527:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "656d707479206f627365727665727320617272617921", "id": 7648, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "13550:24:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_3455c48edf0cadfcbb54fa5d64f69c9a0ba6371f9887114ced22a8e237385a55", "typeString": "literal_string \"empty observers array!\""}, "value": "empty observers array!"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_3455c48edf0cadfcbb54fa5d64f69c9a0ba6371f9887114ced22a8e237385a55", "typeString": "literal_string \"empty observers array!\""}], "id": 7643, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "13519:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13519:56:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7650, "nodeType": "ExpressionStatement", "src": "13519:56:37"}, {"body": {"id": 7674, "nodeType": "Block", "src": "13634:94:37", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7662, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "13648:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 7668, "indexExpression": {"id": 7663, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7632, "src": "13661:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13648:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 7669, "indexExpression": {"id": 7664, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7634, "src": "13673:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13648:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 7670, "indexExpression": {"baseExpression": {"id": 7665, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7637, "src": "13685:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7667, "indexExpression": {"id": 7666, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7652, "src": "13696:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13685:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13648:51:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "id": 7671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "13700:15:37", "memberName": "_removeObserver", "nodeType": "MemberAccess", "referencedDeclaration": 9107, "src": "13648:67:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Observer_$9892_storage_ptr_$returns$__$bound_to$_t_struct$_Observer_$9892_storage_ptr_$", "typeString": "function (struct Observer storage pointer)"}}, "id": 7672, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13648:69:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7673, "nodeType": "ExpressionStatement", "src": "13648:69:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7655, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7652, "src": "13606:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7656, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7637, "src": "13610:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13621:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "13610:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "13606:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7675, "initializationExpression": {"assignments": [7652], "declarations": [{"constant": false, "id": 7652, "mutability": "mutable", "name": "i", "nameLocation": "13599:1:37", "nodeType": "VariableDeclaration", "scope": 7675, "src": "13591:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7651, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13591:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7654, "initialValue": {"hexValue": "30", "id": 7653, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13603:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "13591:13:37"}, "loopExpression": {"expression": {"id": 7660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "13629:3:37", "subExpression": {"id": 7659, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7652, "src": "13629:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7661, "nodeType": "ExpressionStatement", "src": "13629:3:37"}, "nodeType": "ForStatement", "src": "13586:142:37"}, {"expression": {"arguments": [{"expression": {"id": 7682, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7637, "src": "13790:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13801:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "13790:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7676, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "13737:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7679, "indexExpression": {"id": 7677, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7632, "src": "13749:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13737:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7680, "indexExpression": {"id": 7678, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7634, "src": "13761:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13737:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7681, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "13773:16:37", "memberName": "_removeObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9334, "src": "13737:52:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256)"}}, "id": 7684, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13737:71:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7685, "nodeType": "ExpressionStatement", "src": "13737:71:37"}, {"eventCall": {"arguments": [{"id": 7687, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7632, "src": "13841:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7688, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7634, "src": "13853:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7689, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7637, "src": "13865:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}], "id": 7686, "name": "RemovedObservers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8634, "src": "13824:16:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes32,address[] memory)"}}, "id": 7690, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13824:52:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7691, "nodeType": "EmitStatement", "src": "13819:57:37"}]}, "documentation": {"id": 7630, "nodeType": "StructuredDocumentation", "src": "13132:213:37", "text": " @notice Removes observer from packages\n @param _projectId Id of the project\n @param _packageId package id\n @param _observers observers' addresses\n Emit {RemovedObservers}"}, "functionSelector": "3a7efc84", "id": 7693, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7640, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7632, "src": "13497:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7641, "kind": "modifierInvocation", "modifierName": {"id": 7639, "name": "onlyInitiator", "nameLocations": ["13483:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "13483:13:37"}, "nodeType": "ModifierInvocation", "src": "13483:25:37"}], "name": "removeObservers", "nameLocation": "13359:15:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7638, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7632, "mutability": "mutable", "name": "_projectId", "nameLocation": "13392:10:37", "nodeType": "VariableDeclaration", "scope": 7693, "src": "13384:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7631, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13384:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7634, "mutability": "mutable", "name": "_packageId", "nameLocation": "13420:10:37", "nodeType": "VariableDeclaration", "scope": 7693, "src": "13412:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7633, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13412:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7637, "mutability": "mutable", "name": "_observers", "nameLocation": "13457:10:37", "nodeType": "VariableDeclaration", "scope": 7693, "src": "13440:27:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7635, "name": "address", "nodeType": "ElementaryTypeName", "src": "13440:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7636, "nodeType": "ArrayTypeName", "src": "13440:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "13374:99:37"}, "returnParameters": {"id": 7642, "nodeType": "ParameterList", "parameters": [], "src": "13509:0:37"}, "scope": 8219, "src": "13350:533:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8846], "body": {"id": 7816, "nodeType": "Block", "src": "14090:858:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 7718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7710, "name": "_observersIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7700, "src": "14108:12:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7711, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14121:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14108:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7712, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14130:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "14108:23:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7717, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7714, "name": "_observersOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7703, "src": "14135:13:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7715, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14149:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14135:20:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7716, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14158:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "14135:24:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "14108:51:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "656d707479206f62736572766572732061727261797321", "id": 7719, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "14161:25:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_77cc571188b2beee7667919d41671683f04090d89a0e5b4ad077c1de65e85635", "typeString": "literal_string \"empty observers arrays!\""}, "value": "empty observers arrays!"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_77cc571188b2beee7667919d41671683f04090d89a0e5b4ad077c1de65e85635", "typeString": "literal_string \"empty observers arrays!\""}], "id": 7709, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "14100:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7720, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14100:87:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7721, "nodeType": "ExpressionStatement", "src": "14100:87:37"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7722, "name": "_observersIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7700, "src": "14202:12:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14215:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14202:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7724, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14224:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "14202:23:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7768, "nodeType": "IfStatement", "src": "14198:360:37", "trueBody": {"id": 7767, "nodeType": "Block", "src": "14227:331:37", "statements": [{"body": {"id": 7749, "nodeType": "Block", "src": "14291:101:37", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7737, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "14309:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 7743, "indexExpression": {"id": 7738, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14322:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14309:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 7744, "indexExpression": {"id": 7739, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7697, "src": "14334:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14309:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 7745, "indexExpression": {"baseExpression": {"id": 7740, "name": "_observersIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7700, "src": "14346:12:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7742, "indexExpression": {"id": 7741, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7727, "src": "14359:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14346:15:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14309:53:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "id": 7746, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "14363:12:37", "memberName": "_addObserver", "nodeType": "MemberAccess", "referencedDeclaration": 9090, "src": "14309:66:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Observer_$9892_storage_ptr_$returns$__$bound_to$_t_struct$_Observer_$9892_storage_ptr_$", "typeString": "function (struct Observer storage pointer)"}}, "id": 7747, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14309:68:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7748, "nodeType": "ExpressionStatement", "src": "14309:68:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7730, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7727, "src": "14261:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7731, "name": "_observersIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7700, "src": "14265:12:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14278:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14265:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "14261:23:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7750, "initializationExpression": {"assignments": [7727], "declarations": [{"constant": false, "id": 7727, "mutability": "mutable", "name": "i", "nameLocation": "14254:1:37", "nodeType": "VariableDeclaration", "scope": 7750, "src": "14246:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7726, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14246:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7729, "initialValue": {"hexValue": "30", "id": 7728, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14258:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "14246:13:37"}, "loopExpression": {"expression": {"id": 7735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "14286:3:37", "subExpression": {"id": 7734, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7727, "src": "14286:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7736, "nodeType": "ExpressionStatement", "src": "14286:3:37"}, "nodeType": "ForStatement", "src": "14241:151:37"}, {"expression": {"arguments": [{"expression": {"id": 7757, "name": "_observersIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7700, "src": "14455:12:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14468:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14455:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7751, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "14405:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7754, "indexExpression": {"id": 7752, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14417:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14405:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7755, "indexExpression": {"id": 7753, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7697, "src": "14429:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14405:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7756, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "14441:13:37", "memberName": "_addObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9299, "src": "14405:49:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256)"}}, "id": 7759, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14405:70:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7760, "nodeType": "ExpressionStatement", "src": "14405:70:37"}, {"eventCall": {"arguments": [{"id": 7762, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14510:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7763, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7697, "src": "14522:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7764, "name": "_observersIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7700, "src": "14534:12:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}], "id": 7761, "name": "AddedObservers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8625, "src": "14495:14:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes32,address[] memory)"}}, "id": 7765, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14495:52:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7766, "nodeType": "EmitStatement", "src": "14490:57:37"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7772, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7769, "name": "_observersOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7703, "src": "14572:13:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7770, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14586:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14572:20:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7771, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14595:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "14572:24:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7815, "nodeType": "IfStatement", "src": "14568:374:37", "trueBody": {"id": 7814, "nodeType": "Block", "src": "14598:344:37", "statements": [{"body": {"id": 7796, "nodeType": "Block", "src": "14663:105:37", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7784, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "14681:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 7790, "indexExpression": {"id": 7785, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14694:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14681:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 7791, "indexExpression": {"id": 7786, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7697, "src": "14706:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14681:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 7792, "indexExpression": {"baseExpression": {"id": 7787, "name": "_observersOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7703, "src": "14718:13:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7789, "indexExpression": {"id": 7788, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7774, "src": "14732:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14718:16:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14681:54:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "id": 7793, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "14736:15:37", "memberName": "_removeObserver", "nodeType": "MemberAccess", "referencedDeclaration": 9107, "src": "14681:70:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Observer_$9892_storage_ptr_$returns$__$bound_to$_t_struct$_Observer_$9892_storage_ptr_$", "typeString": "function (struct Observer storage pointer)"}}, "id": 7794, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14681:72:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7795, "nodeType": "ExpressionStatement", "src": "14681:72:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7777, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7774, "src": "14632:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7778, "name": "_observersOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7703, "src": "14636:13:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14650:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14636:20:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "14632:24:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7797, "initializationExpression": {"assignments": [7774], "declarations": [{"constant": false, "id": 7774, "mutability": "mutable", "name": "i", "nameLocation": "14625:1:37", "nodeType": "VariableDeclaration", "scope": 7797, "src": "14617:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7773, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14617:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7776, "initialValue": {"hexValue": "30", "id": 7775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14629:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "14617:13:37"}, "loopExpression": {"expression": {"id": 7782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "14658:3:37", "subExpression": {"id": 7781, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7774, "src": "14658:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7783, "nodeType": "ExpressionStatement", "src": "14658:3:37"}, "nodeType": "ForStatement", "src": "14612:156:37"}, {"expression": {"arguments": [{"expression": {"id": 7804, "name": "_observersOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7703, "src": "14835:13:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7805, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14849:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14835:20:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7798, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "14782:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7801, "indexExpression": {"id": 7799, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14794:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14782:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7802, "indexExpression": {"id": 7800, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7697, "src": "14806:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14782:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7803, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "14818:16:37", "memberName": "_removeObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9334, "src": "14782:52:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256)"}}, "id": 7806, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14782:74:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7807, "nodeType": "ExpressionStatement", "src": "14782:74:37"}, {"eventCall": {"arguments": [{"id": 7809, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14893:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7810, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7697, "src": "14905:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7811, "name": "_observersOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7703, "src": "14917:13:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}], "id": 7808, "name": "RemovedObservers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8634, "src": "14876:16:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes32,address[] memory)"}}, "id": 7812, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14876:55:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7813, "nodeType": "EmitStatement", "src": "14871:60:37"}]}}]}, "functionSelector": "71af530b", "id": 7817, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7706, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14078:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7707, "kind": "modifierInvocation", "modifierName": {"id": 7705, "name": "onlyInitiator", "nameLocations": ["14064:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "14064:13:37"}, "nodeType": "ModifierInvocation", "src": "14064:25:37"}], "name": "updateObservers", "nameLocation": "13898:15:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7704, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7695, "mutability": "mutable", "name": "_projectId", "nameLocation": "13931:10:37", "nodeType": "VariableDeclaration", "scope": 7817, "src": "13923:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7694, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13923:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7697, "mutability": "mutable", "name": "_packageId", "nameLocation": "13959:10:37", "nodeType": "VariableDeclaration", "scope": 7817, "src": "13951:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7696, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13951:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7700, "mutability": "mutable", "name": "_observersIn", "nameLocation": "13996:12:37", "nodeType": "VariableDeclaration", "scope": 7817, "src": "13979:29:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7698, "name": "address", "nodeType": "ElementaryTypeName", "src": "13979:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7699, "nodeType": "ArrayTypeName", "src": "13979:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 7703, "mutability": "mutable", "name": "_observersOut", "nameLocation": "14035:13:37", "nodeType": "VariableDeclaration", "scope": 7817, "src": "14018:30:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7701, "name": "address", "nodeType": "ElementaryTypeName", "src": "14018:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7702, "nodeType": "ArrayTypeName", "src": "14018:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "13913:141:37"}, "returnParameters": {"id": 7708, "nodeType": "ParameterList", "parameters": [], "src": "14090:0:37"}, "scope": 8219, "src": "13889:1059:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 7830, "nodeType": "Block", "src": "15173:47:37", "statements": [{"expression": {"baseExpression": {"id": 7826, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "15190:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 7828, "indexExpression": {"id": 7827, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7820, "src": "15202:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15190:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "functionReturnParameters": 7825, "id": 7829, "nodeType": "Return", "src": "15183:30:37"}]}, "documentation": {"id": 7818, "nodeType": "StructuredDocumentation", "src": "14996:89:37", "text": " @notice Get project details\n @param _projectId Id of the project"}, "functionSelector": "23d683e7", "id": 7831, "implemented": true, "kind": "function", "modifiers": [], "name": "getProjectData", "nameLocation": "15099:14:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7821, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7820, "mutability": "mutable", "name": "_projectId", "nameLocation": "15122:10:37", "nodeType": "VariableDeclaration", "scope": 7831, "src": "15114:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7819, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "15114:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "15113:20:37"}, "returnParameters": {"id": 7825, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7824, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7831, "src": "15157:14:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_memory_ptr", "typeString": "struct Project"}, "typeName": {"id": 7823, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7822, "name": "Project", "nameLocations": ["15157:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "15157:7:37"}, "referencedDeclaration": 9837, "src": "15157:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}], "src": "15156:16:37"}, "scope": 8219, "src": "15090:130:37", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"body": {"id": 7849, "nodeType": "Block", "src": "15466:61:37", "statements": [{"expression": {"components": [{"baseExpression": {"baseExpression": {"id": 7842, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "15484:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7844, "indexExpression": {"id": 7843, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7834, "src": "15496:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15484:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7846, "indexExpression": {"id": 7845, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7836, "src": "15508:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15484:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}], "id": 7847, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "15483:37:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "functionReturnParameters": 7841, "id": 7848, "nodeType": "Return", "src": "15476:44:37"}]}, "documentation": {"id": 7832, "nodeType": "StructuredDocumentation", "src": "15226:132:37", "text": " @notice Get package details\n @param _projectId Id of the project\n @param _packageId Id of the package"}, "functionSelector": "20000478", "id": 7850, "implemented": true, "kind": "function", "modifiers": [], "name": "getPackageData", "nameLocation": "15372:14:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7837, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7834, "mutability": "mutable", "name": "_projectId", "nameLocation": "15395:10:37", "nodeType": "VariableDeclaration", "scope": 7850, "src": "15387:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7833, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "15387:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7836, "mutability": "mutable", "name": "_packageId", "nameLocation": "15415:10:37", "nodeType": "VariableDeclaration", "scope": 7850, "src": "15407:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7835, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "15407:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "15386:40:37"}, "returnParameters": {"id": 7841, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7840, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7850, "src": "15450:14:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_memory_ptr", "typeString": "struct Package"}, "typeName": {"id": 7839, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7838, "name": "Package", "nameLocations": ["15450:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "15450:7:37"}, "referencedDeclaration": 9870, "src": "15450:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "15449:16:37"}, "scope": 8219, "src": "15363:164:37", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"body": {"id": 7871, "nodeType": "Block", "src": "15890:79:37", "statements": [{"expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7863, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "15907:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7865, "indexExpression": {"id": 7864, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7853, "src": "15924:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15907:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7867, "indexExpression": {"id": 7866, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7855, "src": "15936:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15907:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7869, "indexExpression": {"id": 7868, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7857, "src": "15948:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15907:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "functionReturnParameters": 7862, "id": 7870, "nodeType": "Return", "src": "15900:62:37"}]}, "documentation": {"id": 7851, "nodeType": "StructuredDocumentation", "src": "15533:186:37", "text": " @notice Get collaborator details\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator Collaborator address"}, "functionSelector": "2008002e", "id": 7872, "implemented": true, "kind": "function", "modifiers": [], "name": "getCollaboratorData", "nameLocation": "15733:19:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7858, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7853, "mutability": "mutable", "name": "_projectId", "nameLocation": "15770:10:37", "nodeType": "VariableDeclaration", "scope": 7872, "src": "15762:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7852, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "15762:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7855, "mutability": "mutable", "name": "_packageId", "nameLocation": "15798:10:37", "nodeType": "VariableDeclaration", "scope": 7872, "src": "15790:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7854, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "15790:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7857, "mutability": "mutable", "name": "_collaborator", "nameLocation": "15826:13:37", "nodeType": "VariableDeclaration", "scope": 7872, "src": "15818:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7856, "name": "address", "nodeType": "ElementaryTypeName", "src": "15818:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "15752:93:37"}, "returnParameters": {"id": 7862, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7861, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7872, "src": "15869:19:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_memory_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 7860, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7859, "name": "Collaborator", "nameLocations": ["15869:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "15869:12:37"}, "referencedDeclaration": 9885, "src": "15869:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "src": "15868:21:37"}, "scope": 8219, "src": "15724:245:37", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"body": {"id": 7903, "nodeType": "Block", "src": "16330:164:37", "statements": [{"assignments": [7888], "declarations": [{"constant": false, "id": 7888, "mutability": "mutable", "name": "collaborator", "nameLocation": "16361:12:37", "nodeType": "VariableDeclaration", "scope": 7903, "src": "16340:33:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 7887, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7886, "name": "Collaborator", "nameLocations": ["16340:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "16340:12:37"}, "referencedDeclaration": 9885, "src": "16340:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "id": 7896, "initialValue": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7889, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "16376:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7891, "indexExpression": {"id": 7890, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7875, "src": "16393:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16376:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7893, "indexExpression": {"id": 7892, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7877, "src": "16405:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16376:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7895, "indexExpression": {"id": 7894, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7879, "src": "16417:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16376:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "16340:91:37"}, {"expression": {"components": [{"expression": {"id": 7897, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7888, "src": "16450:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 7898, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "16463:3:37", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "16450:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 7899, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7888, "src": "16468:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 7900, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "16481:5:37", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9874, "src": "16468:18:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 7901, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "16449:38:37", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint256)"}}, "functionReturnParameters": 7885, "id": 7902, "nodeType": "Return", "src": "16442:45:37"}]}, "documentation": {"id": 7873, "nodeType": "StructuredDocumentation", "src": "15975:186:37", "text": " @notice Get collaborator rewards\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator Collaborator address"}, "functionSelector": "58ff3e47", "id": 7904, "implemented": true, "kind": "function", "modifiers": [], "name": "getCollaboratorRewards", "nameLocation": "16175:22:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7880, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7875, "mutability": "mutable", "name": "_projectId", "nameLocation": "16215:10:37", "nodeType": "VariableDeclaration", "scope": 7904, "src": "16207:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7874, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "16207:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7877, "mutability": "mutable", "name": "_packageId", "nameLocation": "16243:10:37", "nodeType": "VariableDeclaration", "scope": 7904, "src": "16235:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7876, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "16235:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7879, "mutability": "mutable", "name": "_collaborator", "nameLocation": "16271:13:37", "nodeType": "VariableDeclaration", "scope": 7904, "src": "16263:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7878, "name": "address", "nodeType": "ElementaryTypeName", "src": "16263:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "16197:93:37"}, "returnParameters": {"id": 7885, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7882, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7904, "src": "16312:7:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7881, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16312:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 7884, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7904, "src": "16321:7:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7883, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16321:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "16311:18:37"}, "scope": 8219, "src": "16166:328:37", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 7925, "nodeType": "Block", "src": "16833:71:37", "statements": [{"expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7917, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "16850:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 7919, "indexExpression": {"id": 7918, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7907, "src": "16863:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16850:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 7921, "indexExpression": {"id": 7920, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7909, "src": "16875:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16850:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 7923, "indexExpression": {"id": 7922, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7911, "src": "16887:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16850:47:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "functionReturnParameters": 7916, "id": 7924, "nodeType": "Return", "src": "16843:54:37"}]}, "documentation": {"id": 7905, "nodeType": "StructuredDocumentation", "src": "16500:174:37", "text": " @notice Get observer details\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _observer Observer address"}, "functionSelector": "590ab7db", "id": 7926, "implemented": true, "kind": "function", "modifiers": [], "name": "getObserverData", "nameLocation": "16688:15:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7912, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7907, "mutability": "mutable", "name": "_projectId", "nameLocation": "16721:10:37", "nodeType": "VariableDeclaration", "scope": 7926, "src": "16713:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7906, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "16713:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7909, "mutability": "mutable", "name": "_packageId", "nameLocation": "16749:10:37", "nodeType": "VariableDeclaration", "scope": 7926, "src": "16741:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7908, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "16741:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7911, "mutability": "mutable", "name": "_observer", "nameLocation": "16777:9:37", "nodeType": "VariableDeclaration", "scope": 7926, "src": "16769:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7910, "name": "address", "nodeType": "ElementaryTypeName", "src": "16769:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "16703:89:37"}, "returnParameters": {"id": 7916, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7915, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7926, "src": "16816:15:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_memory_ptr", "typeString": "struct Observer"}, "typeName": {"id": 7914, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7913, "name": "Observer", "nameLocations": ["16816:8:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "16816:8:37"}, "referencedDeclaration": 9892, "src": "16816:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}, "visibility": "internal"}], "src": "16815:17:37"}, "scope": 8219, "src": "16679:225:37", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"body": {"id": 7973, "nodeType": "Block", "src": "17228:282:37", "statements": [{"assignments": [7940], "declarations": [{"constant": false, "id": 7940, "mutability": "mutable", "name": "observer", "nameLocation": "17255:8:37", "nodeType": "VariableDeclaration", "scope": 7973, "src": "17238:25:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}, "typeName": {"id": 7939, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7938, "name": "Observer", "nameLocations": ["17238:8:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "17238:8:37"}, "referencedDeclaration": 9892, "src": "17238:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}, "visibility": "internal"}], "id": 7948, "initialValue": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7941, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "17266:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 7943, "indexExpression": {"id": 7942, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7929, "src": "17279:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "17266:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 7945, "indexExpression": {"id": 7944, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7931, "src": "17291:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "17266:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 7947, "indexExpression": {"id": 7946, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7933, "src": "17303:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "17266:47:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "17238:75:37"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 7960, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 7957, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7952, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7949, "name": "observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7940, "src": "17327:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 7950, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17336:8:37", "memberName": "timePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9889, "src": "17327:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7951, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17347:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "17327:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7956, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7953, "name": "observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7940, "src": "17352:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 7954, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17361:11:37", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9887, "src": "17352:20:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 7955, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17376:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "17352:25:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "17327:50:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"expression": {"id": 7958, "name": "observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7940, "src": "17381:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 7959, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17390:9:37", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9891, "src": "17381:18:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "17327:72:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7964, "nodeType": "IfStatement", "src": "17323:111:37", "trueBody": {"id": 7963, "nodeType": "Block", "src": "17401:33:37", "statements": [{"expression": {"hexValue": "30", "id": 7961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17422:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "functionReturnParameters": 7937, "id": 7962, "nodeType": "Return", "src": "17415:8:37"}]}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"id": 7965, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "17450:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7967, "indexExpression": {"id": 7966, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7929, "src": "17462:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "17450:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7969, "indexExpression": {"id": 7968, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7931, "src": "17474:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "17450:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7970, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17486:15:37", "memberName": "_getObserverFee", "nodeType": "MemberAccess", "referencedDeclaration": 9525, "src": "17450:51:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Package_$9870_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer) view returns (uint256)"}}, "id": 7971, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "17450:53:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 7937, "id": 7972, "nodeType": "Return", "src": "17443:60:37"}]}, "documentation": {"id": 7927, "nodeType": "StructuredDocumentation", "src": "16910:170:37", "text": " @notice Get observer fee\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _observer Observer address"}, "functionSelector": "7cbe62c6", "id": 7974, "implemented": true, "kind": "function", "modifiers": [], "name": "getObserverFee", "nameLocation": "17094:14:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7934, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7929, "mutability": "mutable", "name": "_projectId", "nameLocation": "17126:10:37", "nodeType": "VariableDeclaration", "scope": 7974, "src": "17118:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7928, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "17118:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7931, "mutability": "mutable", "name": "_packageId", "nameLocation": "17154:10:37", "nodeType": "VariableDeclaration", "scope": 7974, "src": "17146:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7930, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "17146:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7933, "mutability": "mutable", "name": "_observer", "nameLocation": "17182:9:37", "nodeType": "VariableDeclaration", "scope": 7974, "src": "17174:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7932, "name": "address", "nodeType": "ElementaryTypeName", "src": "17174:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "17108:89:37"}, "returnParameters": {"id": 7937, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7936, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7974, "src": "17219:7:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7935, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "17219:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "17218:9:37"}, "scope": 8219, "src": "17085:425:37", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 8086, "nodeType": "Block", "src": "17988:822:37", "statements": [{"assignments": [7988], "declarations": [{"constant": false, "id": 7988, "mutability": "mutable", "name": "collaborator", "nameLocation": "18019:12:37", "nodeType": "VariableDeclaration", "scope": 8086, "src": "17998:33:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 7987, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7986, "name": "Collaborator", "nameLocations": ["17998:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "17998:12:37"}, "referencedDeclaration": 9885, "src": "17998:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "id": 7996, "initialValue": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7989, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "18034:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7991, "indexExpression": {"id": 7990, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7977, "src": "18051:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18034:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7993, "indexExpression": {"id": 7992, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7979, "src": "18063:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18034:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7995, "indexExpression": {"id": 7994, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7981, "src": "18075:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18034:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "17998:91:37"}, {"assignments": [7999], "declarations": [{"constant": false, "id": 7999, "mutability": "mutable", "name": "package", "nameLocation": "18115:7:37", "nodeType": "VariableDeclaration", "scope": 8086, "src": "18099:23:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 7998, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7997, "name": "Package", "nameLocations": ["18099:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "18099:7:37"}, "referencedDeclaration": 9870, "src": "18099:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "id": 8005, "initialValue": {"baseExpression": {"baseExpression": {"id": 8000, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "18125:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 8002, "indexExpression": {"id": 8001, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7977, "src": "18137:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18125:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 8004, "indexExpression": {"id": 8003, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7979, "src": "18149:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18125:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "18099:61:37"}, {"assignments": [8007], "declarations": [{"constant": false, "id": 8007, "mutability": "mutable", "name": "bonus_", "nameLocation": "18179:6:37", "nodeType": "VariableDeclaration", "scope": 8086, "src": "18171:14:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8006, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18171:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 8008, "nodeType": "VariableDeclarationStatement", "src": "18171:14:37"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 8016, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8009, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7999, "src": "18199:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 8010, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18207:5:37", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "18199:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 8011, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "18215:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "18199:17:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 8013, "name": "_score", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7983, "src": "18220:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 8014, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "18229:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "18220:10:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "18199:31:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 8043, "nodeType": "IfStatement", "src": "18195:258:37", "trueBody": {"id": 8042, "nodeType": "Block", "src": "18232:221:37", "statements": [{"expression": {"id": 8040, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8017, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8007, "src": "18246:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"condition": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8024, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8021, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8018, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7999, "src": "18256:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 8019, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18264:22:37", "memberName": "collaboratorsPaidBonus", "nodeType": "MemberAccess", "referencedDeclaration": 9853, "src": "18256:30:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 8020, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "18289:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "18256:34:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 8022, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7999, "src": "18294:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 8023, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18302:18:37", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "18294:26:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18256:64:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 8025, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "18255:66:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8038, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8032, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7999, "src": "18403:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 8033, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18411:5:37", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "18403:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 8034, "name": "_score", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7983, "src": "18419:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18403:22:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 8036, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "18402:24:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 8037, "name": "PCT_PRECISION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6685, "src": "18429:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18402:40:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8039, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "18255:187:37", "trueExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8030, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8026, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7999, "src": "18345:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 8027, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18353:5:37", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "18345:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 8028, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7999, "src": "18361:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 8029, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18369:9:37", "memberName": "bonusPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9851, "src": "18361:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18345:33:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 8031, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "18344:35:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18246:196:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8041, "nodeType": "ExpressionStatement", "src": "18246:196:37"}]}}, {"expression": {"arguments": [{"id": 8052, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8007, "src": "18530:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 8044, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "18463:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 8048, "indexExpression": {"id": 8045, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7977, "src": "18480:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18463:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 8049, "indexExpression": {"id": 8046, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7979, "src": "18492:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18463:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 8050, "indexExpression": {"id": 8047, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7981, "src": "18504:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18463:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "id": 8051, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18519:10:37", "memberName": "_payReward", "nodeType": "MemberAccess", "referencedDeclaration": 9042, "src": "18463:66:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Collaborator_$9885_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Collaborator_$9885_storage_ptr_$", "typeString": "function (struct Collaborator storage pointer,uint256)"}}, "id": 8053, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "18463:74:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8054, "nodeType": "ExpressionStatement", "src": "18463:74:37"}, {"expression": {"arguments": [{"expression": {"id": 8061, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7988, "src": "18594:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8062, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18607:3:37", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "18594:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 8063, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8007, "src": "18612:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 8055, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "18547:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 8058, "indexExpression": {"id": 8056, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7977, "src": "18559:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18547:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 8059, "indexExpression": {"id": 8057, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7979, "src": "18571:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18547:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 8060, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18583:10:37", "memberName": "_payReward", "nodeType": "MemberAccess", "referencedDeclaration": 9575, "src": "18547:46:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256,uint256)"}}, "id": 8064, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "18547:72:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8065, "nodeType": "ExpressionStatement", "src": "18547:72:37"}, {"expression": {"arguments": [{"id": 8070, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7981, "src": "18658:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8071, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7988, "src": "18673:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8072, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18686:3:37", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "18673:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 8073, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8007, "src": "18692:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18673:25:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"id": 8066, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "18629:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 8068, "indexExpression": {"id": 8067, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7977, "src": "18641:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18629:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 8069, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18653:4:37", "memberName": "_pay", "nodeType": "MemberAccess", "referencedDeclaration": 9815, "src": "18629:28:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer,address,uint256)"}}, "id": 8075, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "18629:70:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8076, "nodeType": "ExpressionStatement", "src": "18629:70:37"}, {"eventCall": {"arguments": [{"id": 8078, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7977, "src": "18739:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 8079, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7979, "src": "18751:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 8080, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7981, "src": "18763:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"expression": {"id": 8081, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7988, "src": "18778:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8082, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18791:3:37", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "18778:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 8083, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8007, "src": "18796:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 8077, "name": "PaidCollaboratorRewards", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8698, "src": "18715:23:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,address,uint256,uint256)"}}, "id": 8084, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "18715:88:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8085, "nodeType": "EmitStatement", "src": "18710:93:37"}]}, "documentation": {"id": 7975, "nodeType": "StructuredDocumentation", "src": "17561:264:37", "text": " @notice Pay fee to observer\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator observer address\n @param _score Bonus score of collaborator\n Emit {PaidCollaboratorRewards}"}, "id": 8087, "implemented": true, "kind": "function", "modifiers": [], "name": "_payCollaboratorRewards", "nameLocation": "17839:23:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7984, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7977, "mutability": "mutable", "name": "_projectId", "nameLocation": "17880:10:37", "nodeType": "VariableDeclaration", "scope": 8087, "src": "17872:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7976, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "17872:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7979, "mutability": "mutable", "name": "_packageId", "nameLocation": "17908:10:37", "nodeType": "VariableDeclaration", "scope": 8087, "src": "17900:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7978, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "17900:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7981, "mutability": "mutable", "name": "_collaborator", "nameLocation": "17936:13:37", "nodeType": "VariableDeclaration", "scope": 8087, "src": "17928:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7980, "name": "address", "nodeType": "ElementaryTypeName", "src": "17928:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 7983, "mutability": "mutable", "name": "_score", "nameLocation": "17967:6:37", "nodeType": "VariableDeclaration", "scope": 8087, "src": "17959:14:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7982, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "17959:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "17862:117:37"}, "returnParameters": {"id": 7985, "nodeType": "ParameterList", "parameters": [], "src": "17988:0:37"}, "scope": 8219, "src": "17830:980:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 8141, "nodeType": "Block", "src": "19146:367:37", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 8097, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "19156:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 8101, "indexExpression": {"id": 8098, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8090, "src": "19169:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19156:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 8102, "indexExpression": {"id": 8099, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8092, "src": "19181:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19156:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 8103, "indexExpression": {"id": 8100, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8094, "src": "19193:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19156:47:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "id": 8104, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19204:15:37", "memberName": "_payObserverFee", "nodeType": "MemberAccess", "referencedDeclaration": 9133, "src": "19156:63:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Observer_$9892_storage_ptr_$returns$__$bound_to$_t_struct$_Observer_$9892_storage_ptr_$", "typeString": "function (struct Observer storage pointer)"}}, "id": 8105, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19156:65:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8106, "nodeType": "ExpressionStatement", "src": "19156:65:37"}, {"assignments": [8108], "declarations": [{"constant": false, "id": 8108, "mutability": "mutable", "name": "amount_", "nameLocation": "19240:7:37", "nodeType": "VariableDeclaration", "scope": 8141, "src": "19232:15:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8107, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19232:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 8116, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"id": 8109, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "19250:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 8111, "indexExpression": {"id": 8110, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8090, "src": "19262:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19250:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 8113, "indexExpression": {"id": 8112, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8092, "src": "19274:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19250:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 8114, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19286:15:37", "memberName": "_getObserverFee", "nodeType": "MemberAccess", "referencedDeclaration": 9525, "src": "19250:51:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Package_$9870_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer) view returns (uint256)"}}, "id": 8115, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19250:53:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "19232:71:37"}, {"expression": {"arguments": [{"id": 8123, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8108, "src": "19365:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 8117, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "19313:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 8120, "indexExpression": {"id": 8118, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8090, "src": "19325:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19313:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 8121, "indexExpression": {"id": 8119, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8092, "src": "19337:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19313:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 8122, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19349:15:37", "memberName": "_payObserverFee", "nodeType": "MemberAccess", "referencedDeclaration": 9541, "src": "19313:51:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256)"}}, "id": 8124, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19313:60:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8125, "nodeType": "ExpressionStatement", "src": "19313:60:37"}, {"expression": {"arguments": [{"id": 8130, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8094, "src": "19412:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 8131, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8108, "src": "19423:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"id": 8126, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "19383:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 8128, "indexExpression": {"id": 8127, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8090, "src": "19395:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19383:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 8129, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19407:4:37", "memberName": "_pay", "nodeType": "MemberAccess", "referencedDeclaration": 9815, "src": "19383:28:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer,address,uint256)"}}, "id": 8132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19383:48:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8133, "nodeType": "ExpressionStatement", "src": "19383:48:37"}, {"eventCall": {"arguments": [{"id": 8135, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8090, "src": "19463:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 8136, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8092, "src": "19475:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 8137, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8094, "src": "19487:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 8138, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8108, "src": "19498:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 8134, "name": "PaidObserverFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8686, "src": "19447:15:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,address,uint256)"}}, "id": 8139, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19447:59:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8140, "nodeType": "EmitStatement", "src": "19442:64:37"}]}, "documentation": {"id": 8088, "nodeType": "StructuredDocumentation", "src": "18816:203:37", "text": " @notice Pay fee to observer\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _observer observer address\n Emit {PaidObserverFee}"}, "id": 8142, "implemented": true, "kind": "function", "modifiers": [], "name": "_payObserverFee", "nameLocation": "19033:15:37", "nodeType": "FunctionDefinition", "parameters": {"id": 8095, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8090, "mutability": "mutable", "name": "_projectId", "nameLocation": "19066:10:37", "nodeType": "VariableDeclaration", "scope": 8142, "src": "19058:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8089, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "19058:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8092, "mutability": "mutable", "name": "_packageId", "nameLocation": "19094:10:37", "nodeType": "VariableDeclaration", "scope": 8142, "src": "19086:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8091, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "19086:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8094, "mutability": "mutable", "name": "_observer", "nameLocation": "19122:9:37", "nodeType": "VariableDeclaration", "scope": 8142, "src": "19114:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8093, "name": "address", "nodeType": "ElementaryTypeName", "src": "19114:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "19048:89:37"}, "returnParameters": {"id": 8096, "nodeType": "ParameterList", "parameters": [], "src": "19146:0:37"}, "scope": 8219, "src": "19024:489:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 8165, "nodeType": "Block", "src": "19743:102:37", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 8153, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "19787:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 8154, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19787:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8156, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "19811:5:37", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 8157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "19817:6:37", "memberName": "number", "nodeType": "MemberAccess", "src": "19811:12:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 8158, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "19826:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "19811:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 8155, "name": "blockhash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -5, "src": "19801:9:37", "typeDescriptions": {"typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 8160, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19801:27:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 8161, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8145, "src": "19830:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 8151, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "19770:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8152, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "19774:12:37", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "19770:16:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 8162, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19770:67:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 8150, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "19760:9:37", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 8163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19760:78:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 8149, "id": 8164, "nodeType": "Return", "src": "19753:85:37"}]}, "documentation": {"id": 8143, "nodeType": "StructuredDocumentation", "src": "19519:151:37", "text": " @notice Generates unique id hash based on _msgSender() address and previous block hash.\n @param _nonce nonce\n @return Id"}, "id": 8166, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateId", "nameLocation": "19684:11:37", "nodeType": "FunctionDefinition", "parameters": {"id": 8146, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8145, "mutability": "mutable", "name": "_nonce", "nameLocation": "19704:6:37", "nodeType": "VariableDeclaration", "scope": 8166, "src": "19696:14:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8144, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19696:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "19695:16:37"}, "returnParameters": {"id": 8149, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8148, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 8166, "src": "19734:7:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8147, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "19734:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "19733:9:37"}, "scope": 8219, "src": "19675:170:37", "stateMutability": "view", "virtual": false, "visibility": "private"}, {"body": {"id": 8188, "nodeType": "Block", "src": "20032:127:37", "statements": [{"expression": {"id": 8176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8172, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8170, "src": "20042:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"hexValue": "30", "id": 8174, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "20067:1:37", "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": 8173, "name": "_generateId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8166, "src": "20055:11:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 8175, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20055:14:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "20042:27:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 8177, "nodeType": "ExpressionStatement", "src": "20042:27:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 8179, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "20087:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 8181, "indexExpression": {"id": 8180, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8170, "src": "20099:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "20087:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 8182, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "20111:11:37", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9830, "src": "20087:35:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 8183, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "20126:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "20087:40:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6475706c69636174652070726f6a656374206964", "id": 8185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "20129:22:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_68967a457615f77b7697a47076fb17bbf6f7d4825cfc89ced439d62c03e944a9", "typeString": "literal_string \"duplicate project id\""}, "value": "duplicate project id"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_68967a457615f77b7697a47076fb17bbf6f7d4825cfc89ced439d62c03e944a9", "typeString": "literal_string \"duplicate project id\""}], "id": 8178, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "20079:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8186, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20079:73:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8187, "nodeType": "ExpressionStatement", "src": "20079:73:37"}]}, "documentation": {"id": 8167, "nodeType": "StructuredDocumentation", "src": "19851:104:37", "text": " @notice Returns a new unique project id.\n @return _projectId Id of the project."}, "id": 8189, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateProjectId", "nameLocation": "19969:18:37", "nodeType": "FunctionDefinition", "parameters": {"id": 8168, "nodeType": "ParameterList", "parameters": [], "src": "19987:2:37"}, "returnParameters": {"id": 8171, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8170, "mutability": "mutable", "name": "_projectId", "nameLocation": "20020:10:37", "nodeType": "VariableDeclaration", "scope": 8189, "src": "20012:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8169, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "20012:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "20011:20:37"}, "scope": 8219, "src": "19960:199:37", "stateMutability": "view", "virtual": false, "visibility": "private"}, {"body": {"id": 8217, "nodeType": "Block", "src": "20449:144:37", "statements": [{"expression": {"id": 8203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8199, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8197, "src": "20459:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 8201, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8194, "src": "20484:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 8200, "name": "_generateId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8166, "src": "20472:11:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 8202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20472:19:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "20459:32:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 8204, "nodeType": "ExpressionStatement", "src": "20459:32:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"baseExpression": {"id": 8206, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "20509:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 8208, "indexExpression": {"id": 8207, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8192, "src": "20521:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "20509:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 8210, "indexExpression": {"id": 8209, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8197, "src": "20533:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "20509:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 8211, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "20545:11:37", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9855, "src": "20509:47:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 8212, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "20560:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "20509:52:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6475706c6963617465207061636b616765206964", "id": 8214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "20563:22:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_96906676e0f9aec65d7630ac3179e5c1c36d7eb4ebcae6a9a481730b171f3eed", "typeString": "literal_string \"duplicate package id\""}, "value": "duplicate package id"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_96906676e0f9aec65d7630ac3179e5c1c36d7eb4ebcae6a9a481730b171f3eed", "typeString": "literal_string \"duplicate package id\""}], "id": 8205, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "20501:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8215, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20501:85:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8216, "nodeType": "ExpressionStatement", "src": "20501:85:37"}]}, "documentation": {"id": 8190, "nodeType": "StructuredDocumentation", "src": "20165:173:37", "text": " @notice Returns a new unique package id.\n @param _projectId Id of the project\n @param _nonce nonce\n @return _packageId Id of the package"}, "id": 8218, "implemented": true, "kind": "function", "modifiers": [], "name": "_generatePackageId", "nameLocation": "20352:18:37", "nodeType": "FunctionDefinition", "parameters": {"id": 8195, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8192, "mutability": "mutable", "name": "_projectId", "nameLocation": "20379:10:37", "nodeType": "VariableDeclaration", "scope": 8218, "src": "20371:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8191, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "20371:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8194, "mutability": "mutable", "name": "_nonce", "nameLocation": "20399:6:37", "nodeType": "VariableDeclaration", "scope": 8218, "src": "20391:14:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8193, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "20391:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "20370:36:37"}, "returnParameters": {"id": 8198, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8197, "mutability": "mutable", "name": "_packageId", "nameLocation": "20437:10:37", "nodeType": "VariableDeclaration", "scope": 8218, "src": "20429:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8196, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "20429:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "20428:20:37"}, "scope": 8219, "src": "20343:250:37", "stateMutability": "view", "virtual": false, "visibility": "private"}], "scope": 8220, "src": "860:19735:37", "usedErrors": []}], "src": "32:20564:37"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/TokenFactory.sol": {"AST": {"absolutePath": "contracts/TokenFactory.sol", "exportedSymbols": {"Clones": [2888], "ERC165CheckerUpgradeable": [2639], "INFTReward": [8572], "IOUToken": [5429], "ITokenFactory": [8890], "OwnableUpgradeable": [131], "TokenFactory": [8401]}, "id": 8402, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 8221, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:38"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "id": 8223, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8402, "sourceUnit": 132, "src": "56:103:38", "symbolAliases": [{"foreign": {"id": 8222, "name": "OwnableUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "65:18:38", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol", "id": 8225, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8402, "sourceUnit": 2640, "src": "160:128:38", "symbolAliases": [{"foreign": {"id": 8224, "name": "ERC165CheckerUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2639, "src": "169:24:38", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/proxy/Clones.sol", "file": "@openzeppelin/contracts/proxy/Clones.sol", "id": 8227, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8402, "sourceUnit": 2889, "src": "289:66:38", "symbolAliases": [{"foreign": {"id": 8226, "name": "Clones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2888, "src": "298:6:38", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ITokenFactory.sol", "file": "./interfaces/ITokenFactory.sol", "id": 8229, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8402, "sourceUnit": 8891, "src": "356:63:38", "symbolAliases": [{"foreign": {"id": 8228, "name": "ITokenFactory", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8890, "src": "365:13:38", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/IOUToken.sol", "file": "./IOUToken.sol", "id": 8231, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8402, "sourceUnit": 5430, "src": "420:42:38", "symbolAliases": [{"foreign": {"id": 8230, "name": "IOUToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5429, "src": "429:8:38", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/INFTReward.sol", "file": "./interfaces/INFTReward.sol", "id": 8233, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8402, "sourceUnit": 8573, "src": "463:57:38", "symbolAliases": [{"foreign": {"id": 8232, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "472:10:38", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 8235, "name": "OwnableUpgradeable", "nameLocations": ["644:18:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 131, "src": "644:18:38"}, "id": 8236, "nodeType": "InheritanceSpecifier", "src": "644:18:38"}, {"baseName": {"id": 8237, "name": "ITokenFactory", "nameLocations": ["664:13:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 8890, "src": "664:13:38"}, "id": 8238, "nodeType": "InheritanceSpecifier", "src": "664:13:38"}], "canonicalName": "TokenFactory", "contractDependencies": [5429], "contractKind": "contract", "documentation": {"id": 8234, "nodeType": "StructuredDocumentation", "src": "522:96:38", "text": " @title TokenFactory Contract\n @notice This contract using for creating IOU Token"}, "fullyImplemented": true, "id": 8401, "linearizedBaseContracts": [8401, 8890, 131, 2219, 282], "name": "TokenFactory", "nameLocation": "628:12:38", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 8241, "libraryName": {"id": 8239, "name": "ERC165CheckerUpgradeable", "nameLocations": ["690:24:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 2639, "src": "690:24:38"}, "nodeType": "UsingForDirective", "src": "684:43:38", "typeName": {"id": 8240, "name": "address", "nodeType": "ElementaryTypeName", "src": "719:7:38", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, {"constant": false, "functionSelector": "a4e8aaae", "id": 8243, "mutability": "mutable", "name": "learnToEarn", "nameLocation": "791:11:38", "nodeType": "VariableDeclaration", "scope": 8401, "src": "776:26:38", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8242, "name": "address", "nodeType": "ElementaryTypeName", "src": "776:7:38", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "public"}, {"constant": false, "documentation": {"id": 8244, "nodeType": "StructuredDocumentation", "src": "809:120:38", "text": " @dev NFTReward contract interface\n Using this contract to deploy new contract NFT for user"}, "functionSelector": "c455ed40", "id": 8247, "mutability": "mutable", "name": "templateNFTReward", "nameLocation": "952:17:38", "nodeType": "VariableDeclaration", "scope": 8401, "src": "934:35:38", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}, "typeName": {"id": 8246, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8245, "name": "INFTReward", "nameLocations": ["934:10:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 8572, "src": "934:10:38"}, "referencedDeclaration": 8572, "src": "934:10:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "visibility": "public"}, {"body": {"id": 8277, "nodeType": "Block", "src": "1175:191:38", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 8256, "name": "__Ownable_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1185:14:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 8257, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1185:16:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8258, "nodeType": "ExpressionStatement", "src": "1185:16:38"}, {"expression": {"arguments": [{"arguments": [{"expression": {"arguments": [{"id": 8266, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "1264:10:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}], "id": 8265, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1259:4:38", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8267, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1259:16:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_INFTReward_$8572", "typeString": "type(contract INFTReward)"}}, "id": 8268, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1276:11:38", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1259:28:38", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"arguments": [{"id": 8262, "name": "_nftRewared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8251, "src": "1228:11:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}], "id": 8261, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1220:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8260, "name": "address", "nodeType": "ElementaryTypeName", "src": "1220:7:38", "typeDescriptions": {}}}, "id": 8263, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1220:20:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1241:17:38", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 2495, "src": "1220:38:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 8269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1220:68:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c6964204e46545265776172642061646472657373", "id": 8270, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1290:27:38", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b6c6bbd82dadd86e4a801f7b97b5c6d0b6b5a3163d3c3e4e26f9a41061aa205d", "typeString": "literal_string \"Invalid NFTReward address\""}, "value": "Invalid NFTReward address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b6c6bbd82dadd86e4a801f7b97b5c6d0b6b5a3163d3c3e4e26f9a41061aa205d", "typeString": "literal_string \"Invalid NFTReward address\""}], "id": 8259, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1212:7:38", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8271, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1212:106:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8272, "nodeType": "ExpressionStatement", "src": "1212:106:38"}, {"expression": {"id": 8275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8273, "name": "templateNFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8247, "src": "1328:17:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 8274, "name": "_nftRewared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8251, "src": "1348:11:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "src": "1328:31:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "id": 8276, "nodeType": "ExpressionStatement", "src": "1328:31:38"}]}, "documentation": {"id": 8248, "nodeType": "StructuredDocumentation", "src": "976:131:38", "text": " @notice Initialize of contract (replace for constructor)\n @param _nftRewared Address of NFTReward contract"}, "functionSelector": "c4d66de8", "id": 8278, "implemented": true, "kind": "function", "modifiers": [{"id": 8254, "kind": "modifierInvocation", "modifierName": {"id": 8253, "name": "initializer", "nameLocations": ["1163:11:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 202, "src": "1163:11:38"}, "nodeType": "ModifierInvocation", "src": "1163:11:38"}], "name": "initialize", "nameLocation": "1121:10:38", "nodeType": "FunctionDefinition", "parameters": {"id": 8252, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8251, "mutability": "mutable", "name": "_nftRewared", "nameLocation": "1143:11:38", "nodeType": "VariableDeclaration", "scope": 8278, "src": "1132:22:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}, "typeName": {"id": 8250, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8249, "name": "INFTReward", "nameLocations": ["1132:10:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 8572, "src": "1132:10:38"}, "referencedDeclaration": 8572, "src": "1132:10:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "visibility": "internal"}], "src": "1131:24:38"}, "returnParameters": {"id": 8255, "nodeType": "ParameterList", "parameters": [], "src": "1175:0:38"}, "scope": 8401, "src": "1112:254:38", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 8309, "nodeType": "Block", "src": "1589:228:38", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 8292, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 8287, "name": "_learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8281, "src": "1607:12:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 8290, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1631:1:38", "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": 8289, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1623:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8288, "name": "address", "nodeType": "ElementaryTypeName", "src": "1623:7:38", "typeDescriptions": {}}}, "id": 8291, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1623:10:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1607:26:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6c6561726e546f4561726e2061646472657373206973206e6f742076616c6964", "id": 8293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1635:34:38", "typeDescriptions": {"typeIdentifier": "t_stringliteral_495b5e6e54469f16ec20c98c65a15cdc1abd6eea5f21b2ecb4a605c54561cec3", "typeString": "literal_string \"learnToEarn address is not valid\""}, "value": "learnToEarn address is not valid"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_495b5e6e54469f16ec20c98c65a15cdc1abd6eea5f21b2ecb4a605c54561cec3", "typeString": "literal_string \"learnToEarn address is not valid\""}], "id": 8286, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1599:7:38", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1599:71:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8295, "nodeType": "ExpressionStatement", "src": "1599:71:38"}, {"assignments": [8297], "declarations": [{"constant": false, "id": 8297, "mutability": "mutable", "name": "oldLearnToEarn", "nameLocation": "1688:14:38", "nodeType": "VariableDeclaration", "scope": 8309, "src": "1680:22:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8296, "name": "address", "nodeType": "ElementaryTypeName", "src": "1680:7:38", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 8299, "initialValue": {"id": 8298, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8243, "src": "1705:11:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "1680:36:38"}, {"expression": {"id": 8302, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8300, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8243, "src": "1726:11:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 8301, "name": "_learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8281, "src": "1740:12:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1726:26:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8303, "nodeType": "ExpressionStatement", "src": "1726:26:38"}, {"eventCall": {"arguments": [{"id": 8305, "name": "oldLearnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8297, "src": "1782:14:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 8306, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8243, "src": "1798:11:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 8304, "name": "SetLearnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8861, "src": "1767:14:38", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 8307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1767:43:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8308, "nodeType": "EmitStatement", "src": "1762:48:38"}]}, "documentation": {"id": 8279, "nodeType": "StructuredDocumentation", "src": "1372:147:38", "text": " @notice Update LearnToEarn contract address\n @param _learnToEarn LearnToEarn contract address\n Emit {SetLearnToEarn}"}, "functionSelector": "3025928f", "id": 8310, "implemented": true, "kind": "function", "modifiers": [{"id": 8284, "kind": "modifierInvocation", "modifierName": {"id": 8283, "name": "onlyOwner", "nameLocations": ["1579:9:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 45, "src": "1579:9:38"}, "nodeType": "ModifierInvocation", "src": "1579:9:38"}], "name": "setLearnToEarn", "nameLocation": "1533:14:38", "nodeType": "FunctionDefinition", "parameters": {"id": 8282, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8281, "mutability": "mutable", "name": "_learnToEarn", "nameLocation": "1556:12:38", "nodeType": "VariableDeclaration", "scope": 8310, "src": "1548:20:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8280, "name": "address", "nodeType": "ElementaryTypeName", "src": "1548:7:38", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1547:22:38"}, "returnParameters": {"id": 8285, "nodeType": "ParameterList", "parameters": [], "src": "1589:0:38"}, "scope": 8401, "src": "1524:293:38", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8877], "body": {"id": 8342, "nodeType": "Block", "src": "2259:139:38", "statements": [{"expression": {"id": 8335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8322, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8320, "src": "2269:6:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"expression": {"id": 8328, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2299:3:38", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 8329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2303:6:38", "memberName": "sender", "nodeType": "MemberAccess", "src": "2299:10:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 8330, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8313, "src": "2311:12:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 8331, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8315, "src": "2325:5:38", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 8332, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8317, "src": "2332:7:38", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 8327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "2286:12:38", "typeDescriptions": {"typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_IOUToken_$5429_$", "typeString": "function (address,uint256,string memory,string memory) returns (contract IOUToken)"}, "typeName": {"id": 8326, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8325, "name": "IOUToken", "nameLocations": ["2290:8:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 5429, "src": "2290:8:38"}, "referencedDeclaration": 5429, "src": "2290:8:38", "typeDescriptions": {"typeIdentifier": "t_contract$_IOUToken_$5429", "typeString": "contract IOUToken"}}}, "id": 8333, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2286:54:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IOUToken_$5429", "typeString": "contract IOUToken"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IOUToken_$5429", "typeString": "contract IOUToken"}], "id": 8324, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2278:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8323, "name": "address", "nodeType": "ElementaryTypeName", "src": "2278:7:38", "typeDescriptions": {}}}, "id": 8334, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2278:63:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2269:72:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8336, "nodeType": "ExpressionStatement", "src": "2269:72:38"}, {"eventCall": {"arguments": [{"id": 8338, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8320, "src": "2370:6:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 8339, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8313, "src": "2378:12:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 8337, "name": "DeployedToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8855, "src": "2356:13:38", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 8340, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2356:35:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8341, "nodeType": "EmitStatement", "src": "2351:40:38"}]}, "documentation": {"id": 8311, "nodeType": "StructuredDocumentation", "src": "1822:281:38", "text": " @notice Deploys IOUT with totalSupply equal to project budget\n @param _totalSupply Token total supply\n @param _name Name of token\n @param _symbol Symbol of token\n @return token_ IOU token address\n \n emit {DeployedToken} events"}, "functionSelector": "da68ed12", "id": 8343, "implemented": true, "kind": "function", "modifiers": [], "name": "deployToken", "nameLocation": "2117:11:38", "nodeType": "FunctionDefinition", "parameters": {"id": 8318, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8313, "mutability": "mutable", "name": "_totalSupply", "nameLocation": "2146:12:38", "nodeType": "VariableDeclaration", "scope": 8343, "src": "2138:20:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8312, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2138:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8315, "mutability": "mutable", "name": "_name", "nameLocation": "2182:5:38", "nodeType": "VariableDeclaration", "scope": 8343, "src": "2168:19:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8314, "name": "string", "nodeType": "ElementaryTypeName", "src": "2168:6:38", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8317, "mutability": "mutable", "name": "_symbol", "nameLocation": "2211:7:38", "nodeType": "VariableDeclaration", "scope": 8343, "src": "2197:21:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8316, "name": "string", "nodeType": "ElementaryTypeName", "src": "2197:6:38", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2128:96:38"}, "returnParameters": {"id": 8321, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8320, "mutability": "mutable", "name": "token_", "nameLocation": "2251:6:38", "nodeType": "VariableDeclaration", "scope": 8343, "src": "2243:14:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8319, "name": "address", "nodeType": "ElementaryTypeName", "src": "2243:7:38", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2242:16:38"}, "scope": 8401, "src": "2108:290:38", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8889], "body": {"id": 8399, "nodeType": "Block", "src": "2861:299:38", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 8361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 8356, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8243, "src": "2879:11:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 8359, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2902:1:38", "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": 8358, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2894:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8357, "name": "address", "nodeType": "ElementaryTypeName", "src": "2894:7:38", "typeDescriptions": {}}}, "id": 8360, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2894:10:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2879:25:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4c6561726e546f4561726e2061646472657373206973206e6f742076616c6964", "id": 8362, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2906:34:38", "typeDescriptions": {"typeIdentifier": "t_stringliteral_e45ddec8cf1d5d9cee2b8ead83e3387b5c6f4942841363d86bcd1848a75adc94", "typeString": "literal_string \"LearnToEarn address is not valid\""}, "value": "LearnToEarn address is not valid"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_e45ddec8cf1d5d9cee2b8ead83e3387b5c6f4942841363d86bcd1848a75adc94", "typeString": "literal_string \"LearnToEarn address is not valid\""}], "id": 8355, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2871:7:38", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8363, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2871:70:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8364, "nodeType": "ExpressionStatement", "src": "2871:70:38"}, {"assignments": [8367], "declarations": [{"constant": false, "id": 8367, "mutability": "mutable", "name": "nft_", "nameLocation": "2962:4:38", "nodeType": "VariableDeclaration", "scope": 8399, "src": "2951:15:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}, "typeName": {"id": 8366, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8365, "name": "INFTReward", "nameLocations": ["2951:10:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 8572, "src": "2951:10:38"}, "referencedDeclaration": 8572, "src": "2951:10:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "visibility": "internal"}], "id": 8377, "initialValue": {"arguments": [{"arguments": [{"arguments": [{"id": 8373, "name": "templateNFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8247, "src": "3001:17:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}], "id": 8372, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2993:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8371, "name": "address", "nodeType": "ElementaryTypeName", "src": "2993:7:38", "typeDescriptions": {}}}, "id": 8374, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2993:26:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 8369, "name": "Clones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2888, "src": "2980:6:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_Clones_$2888_$", "typeString": "type(library Clones)"}}, "id": 8370, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2987:5:38", "memberName": "clone", "nodeType": "MemberAccess", "referencedDeclaration": 2831, "src": "2980:12:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$", "typeString": "function (address) returns (address)"}}, "id": 8375, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2980:40:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 8368, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "2969:10:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}}, "id": 8376, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2969:52:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "nodeType": "VariableDeclarationStatement", "src": "2951:70:38"}, {"expression": {"arguments": [{"id": 8381, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8243, "src": "3047:11:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 8382, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8346, "src": "3060:5:38", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 8383, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8348, "src": "3067:7:38", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 8384, "name": "_uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8350, "src": "3076:4:38", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "expression": {"id": 8378, "name": "nft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8367, "src": "3031:4:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "id": 8380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3036:10:38", "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 8571, "src": "3031:15:38", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory,string memory,string memory) external"}}, "id": 8385, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3031:50:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8386, "nodeType": "ExpressionStatement", "src": "3031:50:38"}, {"eventCall": {"arguments": [{"arguments": [{"id": 8390, "name": "nft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8367, "src": "3117:4:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}], "id": 8389, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3109:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8388, "name": "address", "nodeType": "ElementaryTypeName", "src": "3109:7:38", "typeDescriptions": {}}}, "id": 8391, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3109:13:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 8387, "name": "DeployedNFT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8865, "src": "3097:11:38", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 8392, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3097:26:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8393, "nodeType": "EmitStatement", "src": "3092:31:38"}, {"expression": {"arguments": [{"id": 8396, "name": "nft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8367, "src": "3148:4:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}], "id": 8395, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3140:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8394, "name": "address", "nodeType": "ElementaryTypeName", "src": "3140:7:38", "typeDescriptions": {}}}, "id": 8397, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3140:13:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 8354, "id": 8398, "nodeType": "Return", "src": "3133:20:38"}]}, "documentation": {"id": 8344, "nodeType": "StructuredDocumentation", "src": "2408:338:38", "text": " @dev Using Clones library to clone a contract instead of deploying new contract\n @notice Deploy new contract to mint NFT\n @param _name Name of NFT\n @param _symbol Symbol of NFT\n @param _uri Ipfs of NFT\n @return address(nft_) address of new contract\n \n emit {DeployedNFT} events"}, "functionSelector": "7309fe22", "id": 8400, "implemented": true, "kind": "function", "modifiers": [], "name": "deployNFT", "nameLocation": "2760:9:38", "nodeType": "FunctionDefinition", "parameters": {"id": 8351, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8346, "mutability": "mutable", "name": "_name", "nameLocation": "2784:5:38", "nodeType": "VariableDeclaration", "scope": 8400, "src": "2770:19:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8345, "name": "string", "nodeType": "ElementaryTypeName", "src": "2770:6:38", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8348, "mutability": "mutable", "name": "_symbol", "nameLocation": "2805:7:38", "nodeType": "VariableDeclaration", "scope": 8400, "src": "2791:21:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8347, "name": "string", "nodeType": "ElementaryTypeName", "src": "2791:6:38", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8350, "mutability": "mutable", "name": "_uri", "nameLocation": "2828:4:38", "nodeType": "VariableDeclaration", "scope": 8400, "src": "2814:18:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8349, "name": "string", "nodeType": "ElementaryTypeName", "src": "2814:6:38", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2769:64:38"}, "returnParameters": {"id": 8354, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8353, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 8400, "src": "2852:7:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8352, "name": "address", "nodeType": "ElementaryTypeName", "src": "2852:7:38", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2851:9:38"}, "scope": 8401, "src": "2751:409:38", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 8402, "src": "619:2543:38", "usedErrors": []}], "src": "32:3131:38"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/ILearnToEarn.sol": {"AST": {"absolutePath": "contracts/interfaces/ILearnToEarn.sol", "exportedSymbols": {"Course": [8428], "ILearnToEarn": [8537], "Learner": [8438]}, "id": 8538, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 8403, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:39"}, {"canonicalName": "Course", "id": 8428, "members": [{"constant": false, "id": 8405, "mutability": "mutable", "name": "creator", "nameLocation": "85:7:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "77:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8404, "name": "address", "nodeType": "ElementaryTypeName", "src": "77:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8407, "mutability": "mutable", "name": "rewardAddress", "nameLocation": "106:13:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "98:21:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8406, "name": "address", "nodeType": "ElementaryTypeName", "src": "98:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8409, "mutability": "mutable", "name": "budget", "nameLocation": "133:6:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "125:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8408, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "125:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8411, "mutability": "mutable", "name": "budgetAvailable", "nameLocation": "153:15:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "145:23:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8410, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "145:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8413, "mutability": "mutable", "name": "bonus", "nameLocation": "182:5:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "174:13:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8412, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "174:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8415, "mutability": "mutable", "name": "totalLearnersClaimedBonus", "nameLocation": "201:25:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "193:33:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8414, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8417, "mutability": "mutable", "name": "timeCreated", "nameLocation": "240:11:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "232:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8416, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "232:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8419, "mutability": "mutable", "name": "timeEndBonus", "nameLocation": "265:12:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "257:20:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8418, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "257:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8421, "mutability": "mutable", "name": "timeRemoved", "nameLocation": "291:11:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "283:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8420, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "283:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8423, "mutability": "mutable", "name": "isBonusToken", "nameLocation": "313:12:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "308:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8422, "name": "bool", "nodeType": "ElementaryTypeName", "src": "308:4:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 8425, "mutability": "mutable", "name": "canMintNFT", "nameLocation": "336:10:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "331:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8424, "name": "bool", "nodeType": "ElementaryTypeName", "src": "331:4:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 8427, "mutability": "mutable", "name": "isUsingDuration", "nameLocation": "357:15:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "352:20:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8426, "name": "bool", "nodeType": "ElementaryTypeName", "src": "352:4:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "name": "Course", "nameLocation": "64:6:39", "nodeType": "StructDefinition", "scope": 8538, "src": "57:318:39", "visibility": "public"}, {"canonicalName": "Learner", "id": 8438, "members": [{"constant": false, "id": 8430, "mutability": "mutable", "name": "timeStarted", "nameLocation": "406:11:39", "nodeType": "VariableDeclaration", "scope": 8438, "src": "398:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8429, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "398:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8432, "mutability": "mutable", "name": "timeCompleted", "nameLocation": "431:13:39", "nodeType": "VariableDeclaration", "scope": 8438, "src": "423:21:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8431, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "423:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8434, "mutability": "mutable", "name": "timeRewarded", "nameLocation": "458:12:39", "nodeType": "VariableDeclaration", "scope": 8438, "src": "450:20:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8437, "mutability": "mutable", "name": "nftIds", "nameLocation": "486:6:39", "nodeType": "VariableDeclaration", "scope": 8438, "src": "476:16:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 8435, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "476:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8436, "nodeType": "ArrayTypeName", "src": "476:9:39", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "visibility": "internal"}], "name": "Learner", "nameLocation": "384:7:39", "nodeType": "StructDefinition", "scope": 8538, "src": "377:118:39", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "ILearnToEarn", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 8537, "linearizedBaseContracts": [8537], "name": "ILearnToEarn", "nameLocation": "508:12:39", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "ef048bc89a4d92f598f18e11c600d5cc675b387c770c6c49012d166043db64a2", "id": 8450, "name": "CreatedCourse", "nameLocation": "533:13:39", "nodeType": "EventDefinition", "parameters": {"id": 8449, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8440, "indexed": true, "mutability": "mutable", "name": "courseId", "nameLocation": "563:8:39", "nodeType": "VariableDeclaration", "scope": 8450, "src": "547:24:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8439, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "547:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8442, "indexed": false, "mutability": "mutable", "name": "creator", "nameLocation": "581:7:39", "nodeType": "VariableDeclaration", "scope": 8450, "src": "573:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8441, "name": "address", "nodeType": "ElementaryTypeName", "src": "573:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8444, "indexed": false, "mutability": "mutable", "name": "token", "nameLocation": "598:5:39", "nodeType": "VariableDeclaration", "scope": 8450, "src": "590:13:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8443, "name": "address", "nodeType": "ElementaryTypeName", "src": "590:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8446, "indexed": false, "mutability": "mutable", "name": "bonus", "nameLocation": "613:5:39", "nodeType": "VariableDeclaration", "scope": 8450, "src": "605:13:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8445, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "605:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8448, "indexed": false, "mutability": "mutable", "name": "timeStarted", "nameLocation": "628:11:39", "nodeType": "VariableDeclaration", "scope": 8450, "src": "620:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8447, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "620:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "546:94:39"}, "src": "527:114:39"}, {"anonymous": false, "eventSelector": "5cd42cadabfcfe861e1f12322ae257de37d1240ae38863b4c8b0b50fd0e32a26", "id": 8456, "name": "AddedBudget", "nameLocation": "652:11:39", "nodeType": "EventDefinition", "parameters": {"id": 8455, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8452, "indexed": true, "mutability": "mutable", "name": "courseId", "nameLocation": "680:8:39", "nodeType": "VariableDeclaration", "scope": 8456, "src": "664:24:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8451, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "664:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8454, "indexed": false, "mutability": "mutable", "name": "budget", "nameLocation": "698:6:39", "nodeType": "VariableDeclaration", "scope": 8456, "src": "690:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8453, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "690:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "663:42:39"}, "src": "646:60:39"}, {"anonymous": false, "eventSelector": "b14f5aab91d7f1973be0a7f66b9f50b5da882aaf454b27c50d6a9d7b2172616c", "id": 8462, "name": "CompletedCourse", "nameLocation": "717:15:39", "nodeType": "EventDefinition", "parameters": {"id": 8461, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8458, "indexed": true, "mutability": "mutable", "name": "courseId", "nameLocation": "749:8:39", "nodeType": "VariableDeclaration", "scope": 8462, "src": "733:24:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8457, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "733:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8460, "indexed": false, "mutability": "mutable", "name": "learner", "nameLocation": "767:7:39", "nodeType": "VariableDeclaration", "scope": 8462, "src": "759:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8459, "name": "address", "nodeType": "ElementaryTypeName", "src": "759:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "732:43:39"}, "src": "711:65:39"}, {"anonymous": false, "eventSelector": "d7168ab8576ce4d8336598fe8c588ccb843823a522fe33c98365c3e082daa2ca", "id": 8475, "name": "ClaimedReward", "nameLocation": "787:13:39", "nodeType": "EventDefinition", "parameters": {"id": 8474, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8464, "indexed": true, "mutability": "mutable", "name": "courseId", "nameLocation": "817:8:39", "nodeType": "VariableDeclaration", "scope": 8475, "src": "801:24:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8463, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "801:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8466, "indexed": true, "mutability": "mutable", "name": "learner", "nameLocation": "843:7:39", "nodeType": "VariableDeclaration", "scope": 8475, "src": "827:23:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8465, "name": "address", "nodeType": "ElementaryTypeName", "src": "827:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8468, "indexed": true, "mutability": "mutable", "name": "rewardAddress", "nameLocation": "868:13:39", "nodeType": "VariableDeclaration", "scope": 8475, "src": "852:29:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8467, "name": "address", "nodeType": "ElementaryTypeName", "src": "852:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8470, "indexed": false, "mutability": "mutable", "name": "bonus", "nameLocation": "891:5:39", "nodeType": "VariableDeclaration", "scope": 8475, "src": "883:13:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8469, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "883:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8473, "indexed": false, "mutability": "mutable", "name": "nftIds", "nameLocation": "908:6:39", "nodeType": "VariableDeclaration", "scope": 8475, "src": "898:16:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 8471, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "898:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8472, "nodeType": "ArrayTypeName", "src": "898:9:39", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "visibility": "internal"}], "src": "800:115:39"}, "src": "781:135:39"}, {"anonymous": false, "eventSelector": "aa558890c86253324a06b9e861f61281fd0810f170827987572e7123581a779f", "id": 8483, "name": "WithdrawnBudget", "nameLocation": "927:15:39", "nodeType": "EventDefinition", "parameters": {"id": 8482, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8477, "indexed": true, "mutability": "mutable", "name": "courseId", "nameLocation": "959:8:39", "nodeType": "VariableDeclaration", "scope": 8483, "src": "943:24:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8476, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "943:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8479, "indexed": true, "mutability": "mutable", "name": "creator", "nameLocation": "985:7:39", "nodeType": "VariableDeclaration", "scope": 8483, "src": "969:23:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8478, "name": "address", "nodeType": "ElementaryTypeName", "src": "969:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8481, "indexed": false, "mutability": "mutable", "name": "amount", "nameLocation": "1002:6:39", "nodeType": "VariableDeclaration", "scope": 8483, "src": "994:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8480, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "994:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "942:67:39"}, "src": "921:89:39"}, {"anonymous": false, "eventSelector": "10156d1d3e0caa069c8a10325a1dae1512b2ff6bb941c18e16194970746f30a4", "id": 8489, "name": "RemovedCourse", "nameLocation": "1021:13:39", "nodeType": "EventDefinition", "parameters": {"id": 8488, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8485, "indexed": true, "mutability": "mutable", "name": "courseId", "nameLocation": "1051:8:39", "nodeType": "VariableDeclaration", "scope": 8489, "src": "1035:24:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8484, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1035:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8487, "indexed": true, "mutability": "mutable", "name": "creator", "nameLocation": "1077:7:39", "nodeType": "VariableDeclaration", "scope": 8489, "src": "1061:23:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8486, "name": "address", "nodeType": "ElementaryTypeName", "src": "1061:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1034:51:39"}, "src": "1015:71:39"}, {"documentation": {"id": 8490, "nodeType": "StructuredDocumentation", "src": "1092:603:39", "text": " @notice Create new course\n @param _rewardAddress Address of token that reward to student after completing course\n @param _budget Total tokens/NFTs that reward\n @param _bonus Bonus when learner completed course\n @param _timeStart Start time of course\n @param _timeEndBonus end date will finish bonus or duration to receive bonus after enrolling in course \n @param _isUsingDuration Using duration for rewarding (true) or using end time (false)\n @param _isBonusToken Awards is token (true) or NFT (false)\n emit {CreatedCourse} event"}, "functionSelector": "b149fd18", "id": 8507, "implemented": false, "kind": "function", "modifiers": [], "name": "createCourse", "nameLocation": "1709:12:39", "nodeType": "FunctionDefinition", "parameters": {"id": 8505, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8492, "mutability": "mutable", "name": "_rewardAddress", "nameLocation": "1730:14:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1722:22:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8491, "name": "address", "nodeType": "ElementaryTypeName", "src": "1722:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8494, "mutability": "mutable", "name": "_budget", "nameLocation": "1754:7:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1746:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8493, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1746:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8496, "mutability": "mutable", "name": "_bonus", "nameLocation": "1771:6:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1763:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8495, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1763:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8498, "mutability": "mutable", "name": "_timeStart", "nameLocation": "1787:10:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1779:18:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8497, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1779:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8500, "mutability": "mutable", "name": "_timeEndBonus", "nameLocation": "1807:13:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1799:21:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8499, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1799:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8502, "mutability": "mutable", "name": "_isUsingDuration", "nameLocation": "1827:16:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1822:21:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8501, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1822:4:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 8504, "mutability": "mutable", "name": "_isBonusToken", "nameLocation": "1850:13:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1845:18:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8503, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1845:4:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1721:143:39"}, "returnParameters": {"id": 8506, "nodeType": "ParameterList", "parameters": [], "src": "1873:0:39"}, "scope": 8537, "src": "1700:174:39", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8508, "nodeType": "StructuredDocumentation", "src": "1880:179:39", "text": " @notice Add more budget to course\n @param _courseId Id of course\n @param _budget Budget that added to course\n emit {AddedBudget} events"}, "functionSelector": "caca4ad3", "id": 8515, "implemented": false, "kind": "function", "modifiers": [], "name": "addBudget", "nameLocation": "2073:9:39", "nodeType": "FunctionDefinition", "parameters": {"id": 8513, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8510, "mutability": "mutable", "name": "_courseId", "nameLocation": "2091:9:39", "nodeType": "VariableDeclaration", "scope": 8515, "src": "2083:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8509, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2083:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8512, "mutability": "mutable", "name": "_budget", "nameLocation": "2110:7:39", "nodeType": "VariableDeclaration", "scope": 8515, "src": "2102:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8511, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2102:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2082:36:39"}, "returnParameters": {"id": 8514, "nodeType": "ParameterList", "parameters": [], "src": "2127:0:39"}, "scope": 8537, "src": "2064:64:39", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8516, "nodeType": "StructuredDocumentation", "src": "2134:331:39", "text": " @notice Mark as learner completed course when the user submitted all assignments and accepted by creator\n @param _courseId Id of course\n @param _learner Address of learner\n @param _timeStarted Time when learner enrollred in course\n @param _nftIds List Id of nfts that learner will receive"}, "functionSelector": "3c41b482", "id": 8530, "implemented": false, "kind": "function", "modifiers": [], "name": "completeCourse", "nameLocation": "2479:14:39", "nodeType": "FunctionDefinition", "parameters": {"id": 8528, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8518, "mutability": "mutable", "name": "_courseId", "nameLocation": "2502:9:39", "nodeType": "VariableDeclaration", "scope": 8530, "src": "2494:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8517, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2494:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8520, "mutability": "mutable", "name": "_learner", "nameLocation": "2521:8:39", "nodeType": "VariableDeclaration", "scope": 8530, "src": "2513:16:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8519, "name": "address", "nodeType": "ElementaryTypeName", "src": "2513:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8522, "mutability": "mutable", "name": "_timeStarted", "nameLocation": "2539:12:39", "nodeType": "VariableDeclaration", "scope": 8530, "src": "2531:20:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8521, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2531:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8524, "mutability": "mutable", "name": "_timeCompleted", "nameLocation": "2561:14:39", "nodeType": "VariableDeclaration", "scope": 8530, "src": "2553:22:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8523, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2553:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8527, "mutability": "mutable", "name": "_nftIds", "nameLocation": "2594:7:39", "nodeType": "VariableDeclaration", "scope": 8530, "src": "2577:24:39", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 8525, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2577:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8526, "nodeType": "ArrayTypeName", "src": "2577:9:39", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "visibility": "internal"}], "src": "2493:109:39"}, "returnParameters": {"id": 8529, "nodeType": "ParameterList", "parameters": [], "src": "2611:0:39"}, "scope": 8537, "src": "2470:142:39", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8531, "nodeType": "StructuredDocumentation", "src": "2618:124:39", "text": " @notice Creator can withdraw tokens bonus after time bonus ended\n @param _courseId Id of the course"}, "functionSelector": "669e88a1", "id": 8536, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawBudget", "nameLocation": "2756:14:39", "nodeType": "FunctionDefinition", "parameters": {"id": 8534, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8533, "mutability": "mutable", "name": "_courseId", "nameLocation": "2779:9:39", "nodeType": "VariableDeclaration", "scope": 8536, "src": "2771:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8532, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2771:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2770:19:39"}, "returnParameters": {"id": 8535, "nodeType": "ParameterList", "parameters": [], "src": "2798:0:39"}, "scope": 8537, "src": "2747:52:39", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 8538, "src": "498:2303:39", "usedErrors": []}], "src": "32:2770:39"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/INFTReward.sol": {"AST": {"absolutePath": "contracts/interfaces/INFTReward.sol", "exportedSymbols": {"IERC721Upgradeable": [1762], "INFTReward": [8572]}, "id": 8573, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 8539, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:40"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", "id": 8541, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8573, "sourceUnit": 1629, "src": "56:108:40", "symbolAliases": [{"foreign": {"id": 8540, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "65:18:40", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 8542, "name": "IERC721Upgradeable", "nameLocations": ["190:18:40"], "nodeType": "IdentifierPath", "referencedDeclaration": 1762, "src": "190:18:40"}, "id": 8543, "nodeType": "InheritanceSpecifier", "src": "190:18:40"}], "canonicalName": "INFTReward", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 8572, "linearizedBaseContracts": [8572, 1762, 2695], "name": "INFTReward", "nameLocation": "176:10:40", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "e7cd4ce7f2a465edc730269a1305e8a48bad821e8fb7e152ec413829c01a53c4", "id": 8551, "name": "Minted", "nameLocation": "221:6:40", "nodeType": "EventDefinition", "parameters": {"id": 8550, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8545, "indexed": false, "mutability": "mutable", "name": "account", "nameLocation": "236:7:40", "nodeType": "VariableDeclaration", "scope": 8551, "src": "228:15:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8544, "name": "address", "nodeType": "ElementaryTypeName", "src": "228:7:40", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8547, "indexed": false, "mutability": "mutable", "name": "tokenId", "nameLocation": "253:7:40", "nodeType": "VariableDeclaration", "scope": 8551, "src": "245:15:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8546, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "245:7:40", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8549, "indexed": false, "mutability": "mutable", "name": "uri", "nameLocation": "269:3:40", "nodeType": "VariableDeclaration", "scope": 8551, "src": "262:10:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8548, "name": "string", "nodeType": "ElementaryTypeName", "src": "262:6:40", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "227:46:40"}, "src": "215:59:40"}, {"documentation": {"id": 8552, "nodeType": "StructuredDocumentation", "src": "280:125:40", "text": " @notice mint a NFT for _to address\n @param _to address of user\n \n emit { Minted } events"}, "functionSelector": "6a627842", "id": 8559, "implemented": false, "kind": "function", "modifiers": [], "name": "mint", "nameLocation": "419:4:40", "nodeType": "FunctionDefinition", "parameters": {"id": 8555, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8554, "mutability": "mutable", "name": "_to", "nameLocation": "432:3:40", "nodeType": "VariableDeclaration", "scope": 8559, "src": "424:11:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8553, "name": "address", "nodeType": "ElementaryTypeName", "src": "424:7:40", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "423:13:40"}, "returnParameters": {"id": 8558, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8557, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 8559, "src": "454:7:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8556, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "454:7:40", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "453:9:40"}, "scope": 8572, "src": "410:53:40", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8560, "nodeType": "StructuredDocumentation", "src": "469:210:40", "text": " @notice Replace for contructor\n @param _learnToEarn Address of LearnToEarn contract\n @param _name Name of NFTs\n @param _symbol Symbol of NFTs\n @param _uri ipfs of NFts"}, "functionSelector": "5f1e6f6d", "id": 8571, "implemented": false, "kind": "function", "modifiers": [], "name": "initialize", "nameLocation": "693:10:40", "nodeType": "FunctionDefinition", "parameters": {"id": 8569, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8562, "mutability": "mutable", "name": "_learnToEarn", "nameLocation": "712:12:40", "nodeType": "VariableDeclaration", "scope": 8571, "src": "704:20:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8561, "name": "address", "nodeType": "ElementaryTypeName", "src": "704:7:40", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8564, "mutability": "mutable", "name": "_name", "nameLocation": "740:5:40", "nodeType": "VariableDeclaration", "scope": 8571, "src": "726:19:40", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8563, "name": "string", "nodeType": "ElementaryTypeName", "src": "726:6:40", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8566, "mutability": "mutable", "name": "_symbol", "nameLocation": "761:7:40", "nodeType": "VariableDeclaration", "scope": 8571, "src": "747:21:40", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8565, "name": "string", "nodeType": "ElementaryTypeName", "src": "747:6:40", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8568, "mutability": "mutable", "name": "_uri", "nameLocation": "784:4:40", "nodeType": "VariableDeclaration", "scope": 8571, "src": "770:18:40", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8567, "name": "string", "nodeType": "ElementaryTypeName", "src": "770:6:40", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "703:86:40"}, "returnParameters": {"id": 8570, "nodeType": "ParameterList", "parameters": [], "src": "798:0:40"}, "scope": 8572, "src": "684:115:40", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 8573, "src": "166:635:40", "usedErrors": []}], "src": "32:769:40"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/IReBakedDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/IReBakedDAO.sol", "exportedSymbols": {"IReBakedDAO": [8847]}, "id": 8848, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 8574, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:41"}, {"abstract": false, "baseContracts": [], "canonicalName": "IReBakedDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 8847, "linearizedBaseContracts": [8847], "name": "IReBakedDAO", "nameLocation": "67:11:41", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "2ac12ebf7dfd56173c73b2e43941f0faed1c3f7fb6f959191a4ab4bdd3d32e21", "id": 8580, "name": "UpdatedTreasury", "nameLocation": "91:15:41", "nodeType": "EventDefinition", "parameters": {"id": 8579, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8576, "indexed": false, "mutability": "mutable", "name": "oldTreasury", "nameLocation": "115:11:41", "nodeType": "VariableDeclaration", "scope": 8580, "src": "107:19:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8575, "name": "address", "nodeType": "ElementaryTypeName", "src": "107:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8578, "indexed": false, "mutability": "mutable", "name": "newTreasury", "nameLocation": "136:11:41", "nodeType": "VariableDeclaration", "scope": 8580, "src": "128:19:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8577, "name": "address", "nodeType": "ElementaryTypeName", "src": "128:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "106:42:41"}, "src": "85:64:41"}, {"anonymous": false, "eventSelector": "e13f31eeb084676e55593cb99c5bef76fadde467d9bc2653f56a4c9c3f3302c6", "id": 8590, "name": "CreatedProject", "nameLocation": "160:14:41", "nodeType": "EventDefinition", "parameters": {"id": 8589, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8582, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "191:9:41", "nodeType": "VariableDeclaration", "scope": 8590, "src": "175:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8581, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "175:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8584, "indexed": false, "mutability": "mutable", "name": "initiator", "nameLocation": "210:9:41", "nodeType": "VariableDeclaration", "scope": 8590, "src": "202:17:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8583, "name": "address", "nodeType": "ElementaryTypeName", "src": "202:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8586, "indexed": false, "mutability": "mutable", "name": "token", "nameLocation": "229:5:41", "nodeType": "VariableDeclaration", "scope": 8590, "src": "221:13:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8585, "name": "address", "nodeType": "ElementaryTypeName", "src": "221:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8588, "indexed": false, "mutability": "mutable", "name": "budget", "nameLocation": "244:6:41", "nodeType": "VariableDeclaration", "scope": 8590, "src": "236:14:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8587, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "236:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "174:77:41"}, "src": "154:98:41"}, {"anonymous": false, "eventSelector": "12962f2a364d2a11057d83ee13838ccc9ef2cfcabf5948f69117d12676f7fb97", "id": 8594, "name": "StartedProject", "nameLocation": "263:14:41", "nodeType": "EventDefinition", "parameters": {"id": 8593, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8592, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "294:9:41", "nodeType": "VariableDeclaration", "scope": 8594, "src": "278:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8591, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "278:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "277:27:41"}, "src": "257:48:41"}, {"anonymous": false, "eventSelector": "f8cff203664824068f2b9b06611412aa2f566078fb8d0ffdbbc9eb3b11042b18", "id": 8598, "name": "ApprovedProject", "nameLocation": "316:15:41", "nodeType": "EventDefinition", "parameters": {"id": 8597, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8596, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "348:9:41", "nodeType": "VariableDeclaration", "scope": 8598, "src": "332:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8595, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "332:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "331:27:41"}, "src": "310:49:41"}, {"anonymous": false, "eventSelector": "57854ae7fa7dd108a735bb91879e7ef3ba109e004981ca9d6df5f72510ddb731", "id": 8604, "name": "FinishedProject", "nameLocation": "370:15:41", "nodeType": "EventDefinition", "parameters": {"id": 8603, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8600, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "402:9:41", "nodeType": "VariableDeclaration", "scope": 8604, "src": "386:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8599, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "386:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8602, "indexed": false, "mutability": "mutable", "name": "budgetLeft", "nameLocation": "421:10:41", "nodeType": "VariableDeclaration", "scope": 8604, "src": "413:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8601, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "413:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "385:47:41"}, "src": "364:69:41"}, {"anonymous": false, "eventSelector": "078c5efce40e0c0891ebda17cfbf5d7cdd9d5eb4afb16375d39b8243451871e2", "id": 8616, "name": "CreatedPackage", "nameLocation": "444:14:41", "nodeType": "EventDefinition", "parameters": {"id": 8615, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8606, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "475:9:41", "nodeType": "VariableDeclaration", "scope": 8616, "src": "459:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8605, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "459:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8608, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "502:9:41", "nodeType": "VariableDeclaration", "scope": 8616, "src": "486:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8607, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "486:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8610, "indexed": false, "mutability": "mutable", "name": "budget", "nameLocation": "521:6:41", "nodeType": "VariableDeclaration", "scope": 8616, "src": "513:14:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8609, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "513:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8612, "indexed": false, "mutability": "mutable", "name": "bonus", "nameLocation": "537:5:41", "nodeType": "VariableDeclaration", "scope": 8616, "src": "529:13:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8611, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "529:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8614, "indexed": false, "mutability": "mutable", "name": "observerBudget", "nameLocation": "552:14:41", "nodeType": "VariableDeclaration", "scope": 8616, "src": "544:22:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8613, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "544:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "458:109:41"}, "src": "438:130:41"}, {"anonymous": false, "eventSelector": "b1cc0cc3834b00e41fce4d1b26e0683b2457f753ec2683b88651d001476a6e38", "id": 8625, "name": "AddedObservers", "nameLocation": "579:14:41", "nodeType": "EventDefinition", "parameters": {"id": 8624, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8618, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "610:9:41", "nodeType": "VariableDeclaration", "scope": 8625, "src": "594:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8617, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "594:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8620, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "637:9:41", "nodeType": "VariableDeclaration", "scope": 8625, "src": "621:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8619, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "621:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8623, "indexed": false, "mutability": "mutable", "name": "observers", "nameLocation": "658:9:41", "nodeType": "VariableDeclaration", "scope": 8625, "src": "648:19:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8621, "name": "address", "nodeType": "ElementaryTypeName", "src": "648:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8622, "nodeType": "ArrayTypeName", "src": "648:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "593:75:41"}, "src": "573:96:41"}, {"anonymous": false, "eventSelector": "85572f85b2bc590a66fd61ccb26b098a3e1e5be48c230a5cc1f4c1d23603d1e1", "id": 8634, "name": "RemovedObservers", "nameLocation": "680:16:41", "nodeType": "EventDefinition", "parameters": {"id": 8633, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8627, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "713:9:41", "nodeType": "VariableDeclaration", "scope": 8634, "src": "697:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8626, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "697:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8629, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "740:9:41", "nodeType": "VariableDeclaration", "scope": 8634, "src": "724:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8628, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "724:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8632, "indexed": false, "mutability": "mutable", "name": "observers", "nameLocation": "761:9:41", "nodeType": "VariableDeclaration", "scope": 8634, "src": "751:19:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8630, "name": "address", "nodeType": "ElementaryTypeName", "src": "751:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8631, "nodeType": "ArrayTypeName", "src": "751:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "696:75:41"}, "src": "674:98:41"}, {"anonymous": false, "eventSelector": "8aa39f8fa6c78a00b31a805b7955eb3e38d4cb7bd4d87c84655269141bd8477e", "id": 8644, "name": "AddedCollaborator", "nameLocation": "783:17:41", "nodeType": "EventDefinition", "parameters": {"id": 8643, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8636, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "817:9:41", "nodeType": "VariableDeclaration", "scope": 8644, "src": "801:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8635, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "801:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8638, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "844:9:41", "nodeType": "VariableDeclaration", "scope": 8644, "src": "828:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8637, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "828:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8640, "indexed": false, "mutability": "mutable", "name": "collaborator", "nameLocation": "863:12:41", "nodeType": "VariableDeclaration", "scope": 8644, "src": "855:20:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8639, "name": "address", "nodeType": "ElementaryTypeName", "src": "855:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8642, "indexed": false, "mutability": "mutable", "name": "mgp", "nameLocation": "885:3:41", "nodeType": "VariableDeclaration", "scope": 8644, "src": "877:11:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8641, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "877:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "800:89:41"}, "src": "777:113:41"}, {"anonymous": false, "eventSelector": "89d75bad6a27d516d326126cd95a5626e99ce9548579494bb6d51f59b9c88783", "id": 8652, "name": "ApprovedCollaborator", "nameLocation": "901:20:41", "nodeType": "EventDefinition", "parameters": {"id": 8651, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8646, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "938:9:41", "nodeType": "VariableDeclaration", "scope": 8652, "src": "922:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8645, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "922:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8648, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "965:9:41", "nodeType": "VariableDeclaration", "scope": 8652, "src": "949:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8647, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "949:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8650, "indexed": false, "mutability": "mutable", "name": "collaborator", "nameLocation": "984:12:41", "nodeType": "VariableDeclaration", "scope": 8652, "src": "976:20:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8649, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "921:76:41"}, "src": "895:103:41"}, {"anonymous": false, "eventSelector": "1810672a3dad8f995260ba0777de0e36f462980ce02a3951804f83aac9c2d455", "id": 8660, "name": "RemovedCollaborator", "nameLocation": "1009:19:41", "nodeType": "EventDefinition", "parameters": {"id": 8659, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8654, "indexed": true, "mutability": "mutable", "name": "projectId_", "nameLocation": "1045:10:41", "nodeType": "VariableDeclaration", "scope": 8660, "src": "1029:26:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8653, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1029:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8656, "indexed": true, "mutability": "mutable", "name": "packageId_", "nameLocation": "1073:10:41", "nodeType": "VariableDeclaration", "scope": 8660, "src": "1057:26:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8655, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1057:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8658, "indexed": false, "mutability": "mutable", "name": "collaborator_", "nameLocation": "1093:13:41", "nodeType": "VariableDeclaration", "scope": 8660, "src": "1085:21:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8657, "name": "address", "nodeType": "ElementaryTypeName", "src": "1085:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1028:79:41"}, "src": "1003:105:41"}, {"anonymous": false, "eventSelector": "ca0673658d6abd07a7992b1c692276e95e5693b83c44ebcbc0f5661add8f274f", "id": 8668, "name": "FinishedPackage", "nameLocation": "1119:15:41", "nodeType": "EventDefinition", "parameters": {"id": 8667, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8662, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "1151:9:41", "nodeType": "VariableDeclaration", "scope": 8668, "src": "1135:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8661, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1135:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8664, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "1178:9:41", "nodeType": "VariableDeclaration", "scope": 8668, "src": "1162:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8663, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1162:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8666, "indexed": true, "mutability": "mutable", "name": "budgetLeft", "nameLocation": "1205:10:41", "nodeType": "VariableDeclaration", "scope": 8668, "src": "1189:26:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8665, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1189:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1134:82:41"}, "src": "1113:104:41"}, {"anonymous": false, "eventSelector": "56829e4c362b83a2633cd58ab80f95a4c661582416ca0dd74cf6844198ef9390", "id": 8676, "name": "CanceledPackage", "nameLocation": "1228:15:41", "nodeType": "EventDefinition", "parameters": {"id": 8675, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8670, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "1260:9:41", "nodeType": "VariableDeclaration", "scope": 8676, "src": "1244:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8669, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1244:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8672, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "1287:9:41", "nodeType": "VariableDeclaration", "scope": 8676, "src": "1271:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8671, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1271:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8674, "indexed": true, "mutability": "mutable", "name": "revertedBudget", "nameLocation": "1314:14:41", "nodeType": "VariableDeclaration", "scope": 8676, "src": "1298:30:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8673, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1298:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1243:86:41"}, "src": "1222:108:41"}, {"anonymous": false, "eventSelector": "f791dbe60269baac78be1afe586f70aa816e7a19b3ff88e228ca638e41142dae", "id": 8686, "name": "PaidObserverFee", "nameLocation": "1341:15:41", "nodeType": "EventDefinition", "parameters": {"id": 8685, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8678, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "1373:9:41", "nodeType": "VariableDeclaration", "scope": 8686, "src": "1357:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8677, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1357:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8680, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "1400:9:41", "nodeType": "VariableDeclaration", "scope": 8686, "src": "1384:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8679, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1384:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8682, "indexed": false, "mutability": "mutable", "name": "collaborator", "nameLocation": "1419:12:41", "nodeType": "VariableDeclaration", "scope": 8686, "src": "1411:20:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8681, "name": "address", "nodeType": "ElementaryTypeName", "src": "1411:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8684, "indexed": false, "mutability": "mutable", "name": "amount", "nameLocation": "1441:6:41", "nodeType": "VariableDeclaration", "scope": 8686, "src": "1433:14:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8683, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1433:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1356:92:41"}, "src": "1335:114:41"}, {"anonymous": false, "eventSelector": "53aa87b28abc70f0fb4d2402a35d5e4d91386b5b045ad43d598a715982e32d20", "id": 8698, "name": "PaidCollaboratorRewards", "nameLocation": "1460:23:41", "nodeType": "EventDefinition", "parameters": {"id": 8697, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8688, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "1500:9:41", "nodeType": "VariableDeclaration", "scope": 8698, "src": "1484:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8687, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1484:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8690, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "1527:9:41", "nodeType": "VariableDeclaration", "scope": 8698, "src": "1511:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8689, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1511:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8692, "indexed": false, "mutability": "mutable", "name": "collaborator", "nameLocation": "1546:12:41", "nodeType": "VariableDeclaration", "scope": 8698, "src": "1538:20:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8691, "name": "address", "nodeType": "ElementaryTypeName", "src": "1538:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8694, "indexed": false, "mutability": "mutable", "name": "mgp", "nameLocation": "1568:3:41", "nodeType": "VariableDeclaration", "scope": 8698, "src": "1560:11:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8693, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1560:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8696, "indexed": false, "mutability": "mutable", "name": "bonus", "nameLocation": "1581:5:41", "nodeType": "VariableDeclaration", "scope": 8698, "src": "1573:13:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8695, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1573:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1483:104:41"}, "src": "1454:134:41"}, {"documentation": {"id": 8699, "nodeType": "StructuredDocumentation", "src": "1594:121:41", "text": " @notice Update treasury address\n @param treasury_ Treasury address\n Emit {UpdatedTreasury}"}, "functionSelector": "7f51bb1f", "id": 8704, "implemented": false, "kind": "function", "modifiers": [], "name": "updateTreasury", "nameLocation": "1729:14:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8702, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8701, "mutability": "mutable", "name": "treasury_", "nameLocation": "1752:9:41", "nodeType": "VariableDeclaration", "scope": 8704, "src": "1744:17:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8700, "name": "address", "nodeType": "ElementaryTypeName", "src": "1744:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1743:19:41"}, "returnParameters": {"id": 8703, "nodeType": "ParameterList", "parameters": [], "src": "1771:0:41"}, "scope": 8847, "src": "1720:52:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8705, "nodeType": "StructuredDocumentation", "src": "1778:443:41", "text": " @dev Creates project proposal\n @param token_ project token address, zero addres if project has not token yet\n (IOUToken will be deployed on project approval)\n @param budget_ total budget (has to be approved on token contract if project has its own token)\n @dev (`token_` == ZERO_ADDRESS) ? project has no token yet : `IOUToken` will be deployed on project approval\n Emit {CreatedProject}"}, "functionSelector": "e82d6572", "id": 8712, "implemented": false, "kind": "function", "modifiers": [], "name": "createProject", "nameLocation": "2235:13:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8710, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8707, "mutability": "mutable", "name": "token_", "nameLocation": "2257:6:41", "nodeType": "VariableDeclaration", "scope": 8712, "src": "2249:14:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8706, "name": "address", "nodeType": "ElementaryTypeName", "src": "2249:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8709, "mutability": "mutable", "name": "budget_", "nameLocation": "2273:7:41", "nodeType": "VariableDeclaration", "scope": 8712, "src": "2265:15:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8708, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2265:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2248:33:41"}, "returnParameters": {"id": 8711, "nodeType": "ParameterList", "parameters": [], "src": "2290:0:41"}, "scope": 8847, "src": "2226:65:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8713, "nodeType": "StructuredDocumentation", "src": "2297:116:41", "text": " @notice Finishes project\n @param _projectId Id of the project\n Emit {FinishedProject}"}, "functionSelector": "85ceab29", "id": 8718, "implemented": false, "kind": "function", "modifiers": [], "name": "finishProject", "nameLocation": "2427:13:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8716, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8715, "mutability": "mutable", "name": "_projectId", "nameLocation": "2449:10:41", "nodeType": "VariableDeclaration", "scope": 8718, "src": "2441:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8714, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2441:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2440:20:41"}, "returnParameters": {"id": 8717, "nodeType": "ParameterList", "parameters": [], "src": "2469:0:41"}, "scope": 8847, "src": "2418:52:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8719, "nodeType": "StructuredDocumentation", "src": "2476:337:41", "text": " @notice Creates package in project\n @param _projectId Id of the project\n @param _budget MGP budget\n @param _bonus Bonus budget\n @param _observerBudget Observer budget\n @param _collaboratorsLimit maximum collaborators\n @param _observers List of observers\n Emit {CreatedPackage}"}, "functionSelector": "b2b57114", "id": 8735, "implemented": false, "kind": "function", "modifiers": [], "name": "createPackage", "nameLocation": "2827:13:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8733, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8721, "mutability": "mutable", "name": "_projectId", "nameLocation": "2858:10:41", "nodeType": "VariableDeclaration", "scope": 8735, "src": "2850:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8720, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2850:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8723, "mutability": "mutable", "name": "_budget", "nameLocation": "2886:7:41", "nodeType": "VariableDeclaration", "scope": 8735, "src": "2878:15:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8722, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2878:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8725, "mutability": "mutable", "name": "_bonus", "nameLocation": "2911:6:41", "nodeType": "VariableDeclaration", "scope": 8735, "src": "2903:14:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8724, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2903:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8727, "mutability": "mutable", "name": "_observerBudget", "nameLocation": "2935:15:41", "nodeType": "VariableDeclaration", "scope": 8735, "src": "2927:23:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8726, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2927:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8729, "mutability": "mutable", "name": "_collaboratorsLimit", "nameLocation": "2968:19:41", "nodeType": "VariableDeclaration", "scope": 8735, "src": "2960:27:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8728, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2960:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8732, "mutability": "mutable", "name": "_observers", "nameLocation": "3014:10:41", "nodeType": "VariableDeclaration", "scope": 8735, "src": "2997:27:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8730, "name": "address", "nodeType": "ElementaryTypeName", "src": "2997:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8731, "nodeType": "ArrayTypeName", "src": "2997:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "2840:190:41"}, "returnParameters": {"id": 8734, "nodeType": "ParameterList", "parameters": [], "src": "3039:0:41"}, "scope": 8847, "src": "2818:222:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8736, "nodeType": "StructuredDocumentation", "src": "3046:333:41", "text": " @notice Finishes package in project\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborators List of collaborators\n @param _observers List of observers\n @param _scores List of bonus scores for collaborators\n \n Emit {FinishedPackage}"}, "functionSelector": "2926aa80", "id": 8752, "implemented": false, "kind": "function", "modifiers": [], "name": "finishPackage", "nameLocation": "3393:13:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8750, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8738, "mutability": "mutable", "name": "_projectId", "nameLocation": "3424:10:41", "nodeType": "VariableDeclaration", "scope": 8752, "src": "3416:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8737, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3416:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8740, "mutability": "mutable", "name": "_packageId", "nameLocation": "3452:10:41", "nodeType": "VariableDeclaration", "scope": 8752, "src": "3444:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8739, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3444:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8743, "mutability": "mutable", "name": "_collaborators", "nameLocation": "3489:14:41", "nodeType": "VariableDeclaration", "scope": 8752, "src": "3472:31:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8741, "name": "address", "nodeType": "ElementaryTypeName", "src": "3472:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8742, "nodeType": "ArrayTypeName", "src": "3472:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 8746, "mutability": "mutable", "name": "_observers", "nameLocation": "3530:10:41", "nodeType": "VariableDeclaration", "scope": 8752, "src": "3513:27:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8744, "name": "address", "nodeType": "ElementaryTypeName", "src": "3513:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8745, "nodeType": "ArrayTypeName", "src": "3513:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 8749, "mutability": "mutable", "name": "_scores", "nameLocation": "3567:7:41", "nodeType": "VariableDeclaration", "scope": 8752, "src": "3550:24:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 8747, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3550:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8748, "nodeType": "ArrayTypeName", "src": "3550:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "visibility": "internal"}], "src": "3406:174:41"}, "returnParameters": {"id": 8751, "nodeType": "ParameterList", "parameters": [], "src": "3589:0:41"}, "scope": 8847, "src": "3384:206:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8753, "nodeType": "StructuredDocumentation", "src": "3596:303:41", "text": " @notice Cancel package in project and release project budget\n @param _projectId Id of the project\n @param _packageId Id of the project\n @param _collaborators address of the collaborators\n @param _observers address of the observers\n Emit {CanceledPackage}"}, "functionSelector": "085f8a9c", "id": 8768, "implemented": false, "kind": "function", "modifiers": [], "name": "cancelPackage", "nameLocation": "3913:13:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8766, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8755, "mutability": "mutable", "name": "_projectId", "nameLocation": "3944:10:41", "nodeType": "VariableDeclaration", "scope": 8768, "src": "3936:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8754, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3936:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8757, "mutability": "mutable", "name": "_packageId", "nameLocation": "3972:10:41", "nodeType": "VariableDeclaration", "scope": 8768, "src": "3964:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8756, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3964:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8760, "mutability": "mutable", "name": "_collaborators", "nameLocation": "4009:14:41", "nodeType": "VariableDeclaration", "scope": 8768, "src": "3992:31:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8758, "name": "address", "nodeType": "ElementaryTypeName", "src": "3992:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8759, "nodeType": "ArrayTypeName", "src": "3992:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 8763, "mutability": "mutable", "name": "_observers", "nameLocation": "4050:10:41", "nodeType": "VariableDeclaration", "scope": 8768, "src": "4033:27:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8761, "name": "address", "nodeType": "ElementaryTypeName", "src": "4033:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8762, "nodeType": "ArrayTypeName", "src": "4033:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 8765, "mutability": "mutable", "name": "_workStarted", "nameLocation": "4075:12:41", "nodeType": "VariableDeclaration", "scope": 8768, "src": "4070:17:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8764, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4070:4:41", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "3926:167:41"}, "returnParameters": {"id": 8767, "nodeType": "ParameterList", "parameters": [], "src": "4102:0:41"}, "scope": 8847, "src": "3904:199:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8769, "nodeType": "StructuredDocumentation", "src": "4109:256:41", "text": " @notice Adds collaborator to package\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator collaborators' addresses\n @param _mgp MGP amount\n Emit {AddedCollaborator}"}, "functionSelector": "ec104ff1", "id": 8780, "implemented": false, "kind": "function", "modifiers": [], "name": "addCollaborator", "nameLocation": "4379:15:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8778, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8771, "mutability": "mutable", "name": "_projectId", "nameLocation": "4403:10:41", "nodeType": "VariableDeclaration", "scope": 8780, "src": "4395:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8770, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4395:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8773, "mutability": "mutable", "name": "_packageId", "nameLocation": "4423:10:41", "nodeType": "VariableDeclaration", "scope": 8780, "src": "4415:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8772, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4415:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8775, "mutability": "mutable", "name": "_collaborator", "nameLocation": "4443:13:41", "nodeType": "VariableDeclaration", "scope": 8780, "src": "4435:21:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8774, "name": "address", "nodeType": "ElementaryTypeName", "src": "4435:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8777, "mutability": "mutable", "name": "_mgp", "nameLocation": "4466:4:41", "nodeType": "VariableDeclaration", "scope": 8780, "src": "4458:12:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8776, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4458:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4394:77:41"}, "returnParameters": {"id": 8779, "nodeType": "ParameterList", "parameters": [], "src": "4480:0:41"}, "scope": 8847, "src": "4370:111:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8781, "nodeType": "StructuredDocumentation", "src": "4487:278:41", "text": " @notice Approves collaborator's MGP or deletes collaborator (should be called by admin)\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator collaborator's address\n Emit {ApprovedCollaborator}"}, "functionSelector": "dcce114e", "id": 8790, "implemented": false, "kind": "function", "modifiers": [], "name": "approveCollaborator", "nameLocation": "4779:19:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8788, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8783, "mutability": "mutable", "name": "_projectId", "nameLocation": "4807:10:41", "nodeType": "VariableDeclaration", "scope": 8790, "src": "4799:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8782, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4799:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8785, "mutability": "mutable", "name": "_packageId", "nameLocation": "4827:10:41", "nodeType": "VariableDeclaration", "scope": 8790, "src": "4819:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8784, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4819:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8787, "mutability": "mutable", "name": "_collaborator", "nameLocation": "4847:13:41", "nodeType": "VariableDeclaration", "scope": 8790, "src": "4839:21:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8786, "name": "address", "nodeType": "ElementaryTypeName", "src": "4839:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4798:63:41"}, "returnParameters": {"id": 8789, "nodeType": "ParameterList", "parameters": [], "src": "4870:0:41"}, "scope": 8847, "src": "4770:101:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8791, "nodeType": "StructuredDocumentation", "src": "4877:341:41", "text": " @notice Approves collaborator's MGP or deletes collaborator (should be called by admin)\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator collaborator's address\n @param _shouldPayMgp Should pay MGP for the collaborator\n Emit {RemovedCollaborator}"}, "functionSelector": "0eae9d88", "id": 8802, "implemented": false, "kind": "function", "modifiers": [], "name": "removeCollaborator", "nameLocation": "5232:18:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8800, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8793, "mutability": "mutable", "name": "_projectId", "nameLocation": "5259:10:41", "nodeType": "VariableDeclaration", "scope": 8802, "src": "5251:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8792, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5251:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8795, "mutability": "mutable", "name": "_packageId", "nameLocation": "5279:10:41", "nodeType": "VariableDeclaration", "scope": 8802, "src": "5271:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8794, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5271:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8797, "mutability": "mutable", "name": "_collaborator", "nameLocation": "5299:13:41", "nodeType": "VariableDeclaration", "scope": 8802, "src": "5291:21:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8796, "name": "address", "nodeType": "ElementaryTypeName", "src": "5291:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8799, "mutability": "mutable", "name": "_shouldPayMgp", "nameLocation": "5319:13:41", "nodeType": "VariableDeclaration", "scope": 8802, "src": "5314:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8798, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5314:4:41", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "5250:83:41"}, "returnParameters": {"id": 8801, "nodeType": "ParameterList", "parameters": [], "src": "5342:0:41"}, "scope": 8847, "src": "5223:120:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8803, "nodeType": "StructuredDocumentation", "src": "5349:171:41", "text": " @notice Self remove collaborator\n @param _projectId Id of the project\n @param _packageId Id of the package\n Emit {RemovedCollaborator}"}, "functionSelector": "03a1fc22", "id": 8810, "implemented": false, "kind": "function", "modifiers": [], "name": "selfRemove", "nameLocation": "5534:10:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8808, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8805, "mutability": "mutable", "name": "_projectId", "nameLocation": "5553:10:41", "nodeType": "VariableDeclaration", "scope": 8810, "src": "5545:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8804, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5545:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8807, "mutability": "mutable", "name": "_packageId", "nameLocation": "5573:10:41", "nodeType": "VariableDeclaration", "scope": 8810, "src": "5565:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8806, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5565:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "5544:40:41"}, "returnParameters": {"id": 8809, "nodeType": "ParameterList", "parameters": [], "src": "5593:0:41"}, "scope": 8847, "src": "5525:69:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8811, "nodeType": "StructuredDocumentation", "src": "5600:213:41", "text": " @notice Adds observers to package\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _observers observers' addresses\n Emit {AddedObservers}"}, "functionSelector": "be06555e", "id": 8821, "implemented": false, "kind": "function", "modifiers": [], "name": "addObservers", "nameLocation": "5827:12:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8819, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8813, "mutability": "mutable", "name": "_projectId", "nameLocation": "5848:10:41", "nodeType": "VariableDeclaration", "scope": 8821, "src": "5840:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8812, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5840:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8815, "mutability": "mutable", "name": "_packageId", "nameLocation": "5868:10:41", "nodeType": "VariableDeclaration", "scope": 8821, "src": "5860:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8814, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5860:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8818, "mutability": "mutable", "name": "_observers", "nameLocation": "5897:10:41", "nodeType": "VariableDeclaration", "scope": 8821, "src": "5880:27:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8816, "name": "address", "nodeType": "ElementaryTypeName", "src": "5880:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8817, "nodeType": "ArrayTypeName", "src": "5880:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "5839:69:41"}, "returnParameters": {"id": 8820, "nodeType": "ParameterList", "parameters": [], "src": "5917:0:41"}, "scope": 8847, "src": "5818:100:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8822, "nodeType": "StructuredDocumentation", "src": "5924:213:41", "text": " @notice Removes observers from package\n @param _projectId Id of the project\n @param _packageId package id\n @param _observers observers' addresses\n Emit {RemovedObservers}"}, "functionSelector": "3a7efc84", "id": 8832, "implemented": false, "kind": "function", "modifiers": [], "name": "removeObservers", "nameLocation": "6151:15:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8830, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8824, "mutability": "mutable", "name": "_projectId", "nameLocation": "6175:10:41", "nodeType": "VariableDeclaration", "scope": 8832, "src": "6167:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8823, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6167:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8826, "mutability": "mutable", "name": "_packageId", "nameLocation": "6195:10:41", "nodeType": "VariableDeclaration", "scope": 8832, "src": "6187:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8825, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6187:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8829, "mutability": "mutable", "name": "_observers", "nameLocation": "6224:10:41", "nodeType": "VariableDeclaration", "scope": 8832, "src": "6207:27:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8827, "name": "address", "nodeType": "ElementaryTypeName", "src": "6207:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8828, "nodeType": "ArrayTypeName", "src": "6207:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "6166:69:41"}, "returnParameters": {"id": 8831, "nodeType": "ParameterList", "parameters": [], "src": "6244:0:41"}, "scope": 8847, "src": "6142:103:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8833, "nodeType": "StructuredDocumentation", "src": "6251:313:41", "text": " @notice Adds, removes observers from package\n @param _projectId Id of the project\n @param _packageId package id\n @param _observersIn observers' addresses to be added\n @param _observersOut observers' addresses to be removed\n Emit {AddedObservers} {RemovedObservers}"}, "functionSelector": "71af530b", "id": 8846, "implemented": false, "kind": "function", "modifiers": [], "name": "updateObservers", "nameLocation": "6578:15:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8844, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8835, "mutability": "mutable", "name": "_projectId", "nameLocation": "6611:10:41", "nodeType": "VariableDeclaration", "scope": 8846, "src": "6603:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8834, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6603:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8837, "mutability": "mutable", "name": "_packageId", "nameLocation": "6639:10:41", "nodeType": "VariableDeclaration", "scope": 8846, "src": "6631:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8836, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6631:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8840, "mutability": "mutable", "name": "_observersIn", "nameLocation": "6676:12:41", "nodeType": "VariableDeclaration", "scope": 8846, "src": "6659:29:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8838, "name": "address", "nodeType": "ElementaryTypeName", "src": "6659:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8839, "nodeType": "ArrayTypeName", "src": "6659:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 8843, "mutability": "mutable", "name": "_observersOut", "nameLocation": "6715:13:41", "nodeType": "VariableDeclaration", "scope": 8846, "src": "6698:30:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8841, "name": "address", "nodeType": "ElementaryTypeName", "src": "6698:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8842, "nodeType": "ArrayTypeName", "src": "6698:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "6593:141:41"}, "returnParameters": {"id": 8845, "nodeType": "ParameterList", "parameters": [], "src": "6743:0:41"}, "scope": 8847, "src": "6569:175:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 8848, "src": "57:6690:41", "usedErrors": []}], "src": "32:6716:41"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/ITokenFactory.sol": {"AST": {"absolutePath": "contracts/interfaces/ITokenFactory.sol", "exportedSymbols": {"ITokenFactory": [8890]}, "id": 8891, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 8849, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:42"}, {"abstract": false, "baseContracts": [], "canonicalName": "ITokenFactory", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 8890, "linearizedBaseContracts": [8890], "name": "ITokenFactory", "nameLocation": "67:13:42", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "9d4a605126592dbb92f903ac98e8c937282fbe6325f14bf4d5eacf3544edc35c", "id": 8855, "name": "DeployedToken", "nameLocation": "93:13:42", "nodeType": "EventDefinition", "parameters": {"id": 8854, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8851, "indexed": true, "mutability": "mutable", "name": "token", "nameLocation": "123:5:42", "nodeType": "VariableDeclaration", "scope": 8855, "src": "107:21:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8850, "name": "address", "nodeType": "ElementaryTypeName", "src": "107:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8853, "indexed": true, "mutability": "mutable", "name": "totalSupply", "nameLocation": "146:11:42", "nodeType": "VariableDeclaration", "scope": 8855, "src": "130:27:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8852, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "130:7:42", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "106:52:42"}, "src": "87:72:42"}, {"anonymous": false, "eventSelector": "448700cd409e255b87a8a438a7cd86b88452daafacabc31ab74b8da7b039a478", "id": 8861, "name": "SetLearnToEarn", "nameLocation": "170:14:42", "nodeType": "EventDefinition", "parameters": {"id": 8860, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8857, "indexed": true, "mutability": "mutable", "name": "oldLearnToEarn", "nameLocation": "201:14:42", "nodeType": "VariableDeclaration", "scope": 8861, "src": "185:30:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8856, "name": "address", "nodeType": "ElementaryTypeName", "src": "185:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8859, "indexed": true, "mutability": "mutable", "name": "newLearnToEarn", "nameLocation": "233:14:42", "nodeType": "VariableDeclaration", "scope": 8861, "src": "217:30:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8858, "name": "address", "nodeType": "ElementaryTypeName", "src": "217:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "184:64:42"}, "src": "164:85:42"}, {"anonymous": false, "eventSelector": "f784f9219f2a6abce53e3cbad9cdb6703c11c16fe0fb6e2525b74f9a04fed14c", "id": 8865, "name": "DeployedNFT", "nameLocation": "260:11:42", "nodeType": "EventDefinition", "parameters": {"id": 8864, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8863, "indexed": true, "mutability": "mutable", "name": "nft", "nameLocation": "288:3:42", "nodeType": "VariableDeclaration", "scope": 8865, "src": "272:19:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8862, "name": "address", "nodeType": "ElementaryTypeName", "src": "272:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "271:21:42"}, "src": "254:39:42"}, {"documentation": {"id": 8866, "nodeType": "StructuredDocumentation", "src": "299:280:42", "text": " @notice Deploys IOUT with totalSupply equal to project budget\n @param _totalSupply Token total supply\n @param _name Name of token\n @param _symbol Symbol of token\n @return token_ IOU token address\n emit {DeployedToken} events"}, "functionSelector": "da68ed12", "id": 8877, "implemented": false, "kind": "function", "modifiers": [], "name": "deployToken", "nameLocation": "593:11:42", "nodeType": "FunctionDefinition", "parameters": {"id": 8873, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8868, "mutability": "mutable", "name": "_totalSupply", "nameLocation": "613:12:42", "nodeType": "VariableDeclaration", "scope": 8877, "src": "605:20:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8867, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "605:7:42", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8870, "mutability": "mutable", "name": "_name", "nameLocation": "641:5:42", "nodeType": "VariableDeclaration", "scope": 8877, "src": "627:19:42", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8869, "name": "string", "nodeType": "ElementaryTypeName", "src": "627:6:42", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8872, "mutability": "mutable", "name": "_symbol", "nameLocation": "662:7:42", "nodeType": "VariableDeclaration", "scope": 8877, "src": "648:21:42", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8871, "name": "string", "nodeType": "ElementaryTypeName", "src": "648:6:42", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "604:66:42"}, "returnParameters": {"id": 8876, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8875, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 8877, "src": "689:7:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8874, "name": "address", "nodeType": "ElementaryTypeName", "src": "689:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "688:9:42"}, "scope": 8890, "src": "584:114:42", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8878, "nodeType": "StructuredDocumentation", "src": "704:225:42", "text": " @notice Deploy new contract to mint NFT\n @param _name Name of NFT\n @param _symbol Symbol of NFT\n @param _uri Ipfs of NFT\n @return nft_ address\n emit {DeployedNFT} events"}, "functionSelector": "7309fe22", "id": 8889, "implemented": false, "kind": "function", "modifiers": [], "name": "deployNFT", "nameLocation": "943:9:42", "nodeType": "FunctionDefinition", "parameters": {"id": 8885, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8880, "mutability": "mutable", "name": "_name", "nameLocation": "967:5:42", "nodeType": "VariableDeclaration", "scope": 8889, "src": "953:19:42", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8879, "name": "string", "nodeType": "ElementaryTypeName", "src": "953:6:42", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8882, "mutability": "mutable", "name": "_symbol", "nameLocation": "988:7:42", "nodeType": "VariableDeclaration", "scope": 8889, "src": "974:21:42", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8881, "name": "string", "nodeType": "ElementaryTypeName", "src": "974:6:42", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8884, "mutability": "mutable", "name": "_uri", "nameLocation": "1011:4:42", "nodeType": "VariableDeclaration", "scope": 8889, "src": "997:18:42", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8883, "name": "string", "nodeType": "ElementaryTypeName", "src": "997:6:42", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "952:64:42"}, "returnParameters": {"id": 8888, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8887, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 8889, "src": "1035:7:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8886, "name": "address", "nodeType": "ElementaryTypeName", "src": "1035:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1034:9:42"}, "scope": 8890, "src": "934:110:42", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 8891, "src": "57:989:42", "usedErrors": []}], "src": "32:1015:42"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/CollaboratorLibrary.sol": {"AST": {"absolutePath": "contracts/libraries/CollaboratorLibrary.sol", "exportedSymbols": {"Collaborator": [9885], "CollaboratorLibrary": [9043]}, "id": 9044, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 8892, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:43"}, {"absolutePath": "contracts/libraries/Structs.sol", "file": "./Structs.sol", "id": 8894, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 9044, "sourceUnit": 9893, "src": "56:45:43", "symbolAliases": [{"foreign": {"id": 8893, "name": "Collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9885, "src": "65:12:43", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CollaboratorLibrary", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 9043, "linearizedBaseContracts": [9043], "name": "CollaboratorLibrary", "nameLocation": "111:19:43", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 8913, "nodeType": "Block", "src": "266:118:43", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 8908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8904, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8901, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8898, "src": "284:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8902, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "298:11:43", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9876, "src": "284:25:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 8903, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "312:1:43", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "284:29:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"id": 8907, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "317:24:43", "subExpression": {"expression": {"id": 8905, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8898, "src": "318:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8906, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "332:9:43", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9884, "src": "318:23:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "284:57:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6e6f207375636820636f6c6c61626f7261746f72", "id": 8909, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "343:22:43", "typeDescriptions": {"typeIdentifier": "t_stringliteral_dd3eaee9af26edf5ca20b4ad4102ff9e79ac65014d13981382f36c87d6d097ec", "typeString": "literal_string \"no such collaborator\""}, "value": "no such collaborator"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_dd3eaee9af26edf5ca20b4ad4102ff9e79ac65014d13981382f36c87d6d097ec", "typeString": "literal_string \"no such collaborator\""}], "id": 8900, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "276:7:43", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8910, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "276:90:43", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8911, "nodeType": "ExpressionStatement", "src": "276:90:43"}, {"id": 8912, "nodeType": "PlaceholderStatement", "src": "376:1:43"}]}, "documentation": {"id": 8895, "nodeType": "StructuredDocumentation", "src": "137:56:43", "text": "@notice Throws if there is no such collaborator"}, "id": 8914, "name": "onlyActiveCollaborator", "nameLocation": "207:22:43", "nodeType": "ModifierDefinition", "parameters": {"id": 8899, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8898, "mutability": "mutable", "name": "collaborator_", "nameLocation": "251:13:43", "nodeType": "VariableDeclaration", "scope": 8914, "src": "230:34:43", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 8897, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8896, "name": "Collaborator", "nameLocations": ["230:12:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "230:12:43"}, "referencedDeclaration": 9885, "src": "230:12:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "src": "229:36:43"}, "src": "198:186:43", "virtual": false, "visibility": "internal"}, {"body": {"id": 8953, "nodeType": "Block", "src": "741:242:43", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 8930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8924, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8918, "src": "759:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8925, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "773:9:43", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9884, "src": "759:23:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8929, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8926, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8918, "src": "786:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8927, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "800:11:43", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9876, "src": "786:25:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 8928, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "815:1:43", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "786:30:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "759:57:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "636f6c6c61626f7261746f7220616c7265616479206164646564", "id": 8931, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "818:28:43", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9f81182aebc803f8492b4fa57889e5cd006f6d8d0213413e13215356efc2594b", "typeString": "literal_string \"collaborator already added\""}, "value": "collaborator already added"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9f81182aebc803f8492b4fa57889e5cd006f6d8d0213413e13215356efc2594b", "typeString": "literal_string \"collaborator already added\""}], "id": 8923, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "751:7:43", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "751:96:43", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8933, "nodeType": "ExpressionStatement", "src": "751:96:43"}, {"expression": {"id": 8938, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 8934, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8918, "src": "858:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8936, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "872:3:43", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "858:17:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 8937, "name": "mgp_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8920, "src": "878:4:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "858:24:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8939, "nodeType": "ExpressionStatement", "src": "858:24:43"}, {"expression": {"id": 8944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 8940, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8918, "src": "892:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8942, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "906:9:43", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9884, "src": "892:23:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 8943, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "918:5:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "892:31:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 8945, "nodeType": "ExpressionStatement", "src": "892:31:43"}, {"expression": {"id": 8951, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 8946, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8918, "src": "933:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8948, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "947:11:43", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9876, "src": "933:25:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 8949, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "961:5:43", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 8950, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "967:9:43", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "961:15:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "933:43:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8952, "nodeType": "ExpressionStatement", "src": "933:43:43"}]}, "documentation": {"id": 8915, "nodeType": "StructuredDocumentation", "src": "390:261:43", "text": " @notice Adds collaborator, checks for zero address and if already added, records mgp\n @param collaborator_ reference to Collaborator struct\n @param collaborator_ collaborator's address\n @param mgp_ minimum guaranteed payment"}, "id": 8954, "implemented": true, "kind": "function", "modifiers": [], "name": "_addCollaborator", "nameLocation": "665:16:43", "nodeType": "FunctionDefinition", "parameters": {"id": 8921, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8918, "mutability": "mutable", "name": "collaborator_", "nameLocation": "703:13:43", "nodeType": "VariableDeclaration", "scope": 8954, "src": "682:34:43", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 8917, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8916, "name": "Collaborator", "nameLocations": ["682:12:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "682:12:43"}, "referencedDeclaration": 9885, "src": "682:12:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}, {"constant": false, "id": 8920, "mutability": "mutable", "name": "mgp_", "nameLocation": "726:4:43", "nodeType": "VariableDeclaration", "scope": 8954, "src": "718:12:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8919, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "718:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "681:50:43"}, "returnParameters": {"id": 8922, "nodeType": "ParameterList", "parameters": [], "src": "741:0:43"}, "scope": 9043, "src": "656:327:43", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 8979, "nodeType": "Block", "src": "1246:150:43", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8965, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8958, "src": "1264:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8966, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1278:15:43", "memberName": "timeMgpApproved", "nodeType": "MemberAccess", "referencedDeclaration": 9878, "src": "1264:29:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 8967, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1297:1:43", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1264:34:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "636f6c6c61626f7261746f7220616c726561647920617070726f766564", "id": 8969, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1300:31:43", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9aa32d0c3db36a241e731db8b39086c1a0c45112959f9ddfc19f6c546bd4eeb5", "typeString": "literal_string \"collaborator already approved\""}, "value": "collaborator already approved"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9aa32d0c3db36a241e731db8b39086c1a0c45112959f9ddfc19f6c546bd4eeb5", "typeString": "literal_string \"collaborator already approved\""}], "id": 8964, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1256:7:43", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8970, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1256:76:43", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8971, "nodeType": "ExpressionStatement", "src": "1256:76:43"}, {"expression": {"id": 8977, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 8972, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8958, "src": "1342:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8974, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1356:15:43", "memberName": "timeMgpApproved", "nodeType": "MemberAccess", "referencedDeclaration": 9878, "src": "1342:29:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 8975, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1374:5:43", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 8976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1380:9:43", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1374:15:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1342:47:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8978, "nodeType": "ExpressionStatement", "src": "1342:47:43"}]}, "documentation": {"id": 8955, "nodeType": "StructuredDocumentation", "src": "989:139:43", "text": " @notice Approves collaborator's MGP or deletes collaborator\n @param collaborator_ reference to Collaborator struct"}, "id": 8980, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 8961, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8958, "src": "1231:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}], "id": 8962, "kind": "modifierInvocation", "modifierName": {"id": 8960, "name": "onlyActiveCollaborator", "nameLocations": ["1208:22:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 8914, "src": "1208:22:43"}, "nodeType": "ModifierInvocation", "src": "1208:37:43"}], "name": "_approveCollaborator", "nameLocation": "1142:20:43", "nodeType": "FunctionDefinition", "parameters": {"id": 8959, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8958, "mutability": "mutable", "name": "collaborator_", "nameLocation": "1184:13:43", "nodeType": "VariableDeclaration", "scope": 8980, "src": "1163:34:43", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 8957, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8956, "name": "Collaborator", "nameLocations": ["1163:12:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "1163:12:43"}, "referencedDeclaration": 9885, "src": "1163:12:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "src": "1162:36:43"}, "returnParameters": {"id": 8963, "nodeType": "ParameterList", "parameters": [], "src": "1246:0:43"}, "scope": 9043, "src": "1133:263:43", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 8995, "nodeType": "Block", "src": "1514:47:43", "statements": [{"expression": {"id": 8993, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 8989, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8983, "src": "1524:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8991, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1538:9:43", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9884, "src": "1524:23:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 8992, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1550:4:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "1524:30:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 8994, "nodeType": "ExpressionStatement", "src": "1524:30:43"}]}, "id": 8996, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 8986, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8983, "src": "1499:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}], "id": 8987, "kind": "modifierInvocation", "modifierName": {"id": 8985, "name": "onlyActiveCollaborator", "nameLocations": ["1476:22:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 8914, "src": "1476:22:43"}, "nodeType": "ModifierInvocation", "src": "1476:37:43"}], "name": "_removeCollaborator", "nameLocation": "1411:19:43", "nodeType": "FunctionDefinition", "parameters": {"id": 8984, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8983, "mutability": "mutable", "name": "collaborator_", "nameLocation": "1452:13:43", "nodeType": "VariableDeclaration", "scope": 8996, "src": "1431:34:43", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 8982, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8981, "name": "Collaborator", "nameLocations": ["1431:12:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "1431:12:43"}, "referencedDeclaration": 9885, "src": "1431:12:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "src": "1430:36:43"}, "returnParameters": {"id": 8988, "nodeType": "ParameterList", "parameters": [], "src": "1514:0:43"}, "scope": 9043, "src": "1402:159:43", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9041, "nodeType": "Block", "src": "1828:269:43", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9009, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9000, "src": "1846:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 9010, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1860:11:43", "memberName": "timeMgpPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9880, "src": "1846:25:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9011, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1875:1:43", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1846:30:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "72657761726420616c72656164792070616964", "id": 9013, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1878:21:43", "typeDescriptions": {"typeIdentifier": "t_stringliteral_f53c2500433bb0b85f01600844b341babdb8856d948cdb67a1d17e1bab9f9a46", "typeString": "literal_string \"reward already paid\""}, "value": "reward already paid"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_f53c2500433bb0b85f01600844b341babdb8856d948cdb67a1d17e1bab9f9a46", "typeString": "literal_string \"reward already paid\""}], "id": 9008, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1838:7:43", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9014, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1838:62:43", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9015, "nodeType": "ExpressionStatement", "src": "1838:62:43"}, {"expression": {"id": 9021, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9016, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9000, "src": "1910:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 9018, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1924:11:43", "memberName": "timeMgpPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9880, "src": "1910:25:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9019, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1938:5:43", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9020, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:9:43", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1938:15:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1910:43:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9022, "nodeType": "ExpressionStatement", "src": "1910:43:43"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9025, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 9023, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9002, "src": "1967:6:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 9024, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1976:1:43", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1967:10:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9040, "nodeType": "IfStatement", "src": "1963:128:43", "trueBody": {"id": 9039, "nodeType": "Block", "src": "1979:112:43", "statements": [{"expression": {"id": 9030, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9026, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9000, "src": "1993:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 9028, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2007:5:43", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9874, "src": "1993:19:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9029, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9002, "src": "2015:6:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1993:28:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9031, "nodeType": "ExpressionStatement", "src": "1993:28:43"}, {"expression": {"id": 9037, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9032, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9000, "src": "2035:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 9034, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2049:13:43", "memberName": "timeBonusPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9882, "src": "2035:27:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9035, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "2065:5:43", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2071:9:43", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "2065:15:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2035:45:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9038, "nodeType": "ExpressionStatement", "src": "2035:45:43"}]}}]}, "documentation": {"id": 8997, "nodeType": "StructuredDocumentation", "src": "1567:137:43", "text": " @notice Pay Reward to collaborator\n @param collaborator_ collaborator\n @param bonus_ bonus of collaborator"}, "id": 9042, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9005, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9000, "src": "1813:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}], "id": 9006, "kind": "modifierInvocation", "modifierName": {"id": 9004, "name": "onlyActiveCollaborator", "nameLocations": ["1790:22:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 8914, "src": "1790:22:43"}, "nodeType": "ModifierInvocation", "src": "1790:37:43"}], "name": "_payReward", "nameLocation": "1718:10:43", "nodeType": "FunctionDefinition", "parameters": {"id": 9003, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9000, "mutability": "mutable", "name": "collaborator_", "nameLocation": "1750:13:43", "nodeType": "VariableDeclaration", "scope": 9042, "src": "1729:34:43", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 8999, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8998, "name": "Collaborator", "nameLocations": ["1729:12:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "1729:12:43"}, "referencedDeclaration": 9885, "src": "1729:12:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}, {"constant": false, "id": 9002, "mutability": "mutable", "name": "bonus_", "nameLocation": "1773:6:43", "nodeType": "VariableDeclaration", "scope": 9042, "src": "1765:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9001, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1765:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1728:52:43"}, "returnParameters": {"id": 9007, "nodeType": "ParameterList", "parameters": [], "src": "1828:0:43"}, "scope": 9043, "src": "1709:388:43", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 9044, "src": "103:1996:43", "usedErrors": []}], "src": "32:2068:43"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/ObserverLibrary.sol": {"AST": {"absolutePath": "contracts/libraries/ObserverLibrary.sol", "exportedSymbols": {"Observer": [9892], "ObserverLibrary": [9134]}, "id": 9135, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 9045, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:44"}, {"absolutePath": "contracts/libraries/Structs.sol", "file": "./Structs.sol", "id": 9047, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 9135, "sourceUnit": 9893, "src": "56:41:44", "symbolAliases": [{"foreign": {"id": 9046, "name": "Observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9892, "src": "65:8:44", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ObserverLibrary", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 9134, "linearizedBaseContracts": [9134], "name": "ObserverLibrary", "nameLocation": "107:15:44", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 9066, "nodeType": "Block", "src": "243:106:44", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 9061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9054, "name": "observer_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9051, "src": "261:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9055, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "271:11:44", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9887, "src": "261:21:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 9056, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "285:1:44", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "261:25:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"id": 9060, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "290:20:44", "subExpression": {"expression": {"id": 9058, "name": "observer_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9051, "src": "291:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9059, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "301:9:44", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9891, "src": "291:19:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "261:49:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6e6f2073756368206f62736572766572", "id": 9062, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "312:18:44", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fb1f2102dd620d8db71c215406addd7f1da90c80756b1661c74f5edaf19afaf0", "typeString": "literal_string \"no such observer\""}, "value": "no such observer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_fb1f2102dd620d8db71c215406addd7f1da90c80756b1661c74f5edaf19afaf0", "typeString": "literal_string \"no such observer\""}], "id": 9053, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "253:7:44", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9063, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "253:78:44", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9064, "nodeType": "ExpressionStatement", "src": "253:78:44"}, {"id": 9065, "nodeType": "PlaceholderStatement", "src": "341:1:44"}]}, "documentation": {"id": 9048, "nodeType": "StructuredDocumentation", "src": "129:53:44", "text": "@notice Throws if there is no such observer"}, "id": 9067, "name": "onlyActiveObserver", "nameLocation": "196:18:44", "nodeType": "ModifierDefinition", "parameters": {"id": 9052, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9051, "mutability": "mutable", "name": "observer_", "nameLocation": "232:9:44", "nodeType": "VariableDeclaration", "scope": 9067, "src": "215:26:44", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}, "typeName": {"id": 9050, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9049, "name": "Observer", "nameLocations": ["215:8:44"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "215:8:44"}, "referencedDeclaration": 9892, "src": "215:8:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}, "visibility": "internal"}], "src": "214:28:44"}, "src": "187:162:44", "virtual": false, "visibility": "internal"}, {"body": {"id": 9089, "nodeType": "Block", "src": "510:127:44", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9075, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9071, "src": "528:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9076, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "538:11:44", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9887, "src": "528:21:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9077, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "553:1:44", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "528:26:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6f6273657276657220616c7265616479206164646564", "id": 9079, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "556:24:44", "typeDescriptions": {"typeIdentifier": "t_stringliteral_01db46ba4e9a905e53e493d9618107ebf5213085ffb9e60273f9e53fa60ac1d3", "typeString": "literal_string \"observer already added\""}, "value": "observer already added"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_01db46ba4e9a905e53e493d9618107ebf5213085ffb9e60273f9e53fa60ac1d3", "typeString": "literal_string \"observer already added\""}], "id": 9074, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "520:7:44", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9080, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "520:61:44", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9081, "nodeType": "ExpressionStatement", "src": "520:61:44"}, {"expression": {"id": 9087, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9082, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9071, "src": "591:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9084, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "601:11:44", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9887, "src": "591:21:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9085, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "615:5:44", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "621:9:44", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "615:15:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "591:39:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9088, "nodeType": "ExpressionStatement", "src": "591:39:44"}]}, "documentation": {"id": 9068, "nodeType": "StructuredDocumentation", "src": "355:91:44", "text": " @notice Add observer to package\n @param _observer Observer address"}, "id": 9090, "implemented": true, "kind": "function", "modifiers": [], "name": "_addObserver", "nameLocation": "460:12:44", "nodeType": "FunctionDefinition", "parameters": {"id": 9072, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9071, "mutability": "mutable", "name": "_observer", "nameLocation": "490:9:44", "nodeType": "VariableDeclaration", "scope": 9090, "src": "473:26:44", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}, "typeName": {"id": 9070, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9069, "name": "Observer", "nameLocations": ["473:8:44"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "473:8:44"}, "referencedDeclaration": 9892, "src": "473:8:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}, "visibility": "internal"}], "src": "472:28:44"}, "returnParameters": {"id": 9073, "nodeType": "ParameterList", "parameters": [], "src": "510:0:44"}, "scope": 9134, "src": "451:186:44", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9106, "nodeType": "Block", "src": "836:43:44", "statements": [{"expression": {"id": 9104, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9100, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9094, "src": "846:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9102, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "856:9:44", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9891, "src": "846:19:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 9103, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "868:4:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "846:26:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9105, "nodeType": "ExpressionStatement", "src": "846:26:44"}]}, "documentation": {"id": 9091, "nodeType": "StructuredDocumentation", "src": "643:96:44", "text": " @notice Remove observer from package\n @param _observer Observer address"}, "id": 9107, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9097, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9094, "src": "825:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}], "id": 9098, "kind": "modifierInvocation", "modifierName": {"id": 9096, "name": "onlyActiveObserver", "nameLocations": ["806:18:44"], "nodeType": "IdentifierPath", "referencedDeclaration": 9067, "src": "806:18:44"}, "nodeType": "ModifierInvocation", "src": "806:29:44"}], "name": "_removeObserver", "nameLocation": "753:15:44", "nodeType": "FunctionDefinition", "parameters": {"id": 9095, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9094, "mutability": "mutable", "name": "_observer", "nameLocation": "786:9:44", "nodeType": "VariableDeclaration", "scope": 9107, "src": "769:26:44", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}, "typeName": {"id": 9093, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9092, "name": "Observer", "nameLocations": ["769:8:44"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "769:8:44"}, "referencedDeclaration": 9892, "src": "769:8:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}, "visibility": "internal"}], "src": "768:28:44"}, "returnParameters": {"id": 9099, "nodeType": "ParameterList", "parameters": [], "src": "836:0:44"}, "scope": 9134, "src": "744:135:44", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9132, "nodeType": "Block", "src": "1068:124:44", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9121, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9118, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9111, "src": "1086:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9119, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1096:8:44", "memberName": "timePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9889, "src": "1086:18:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1108:1:44", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1086:23:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6f627365727665722066656520616c72656164792070616964", "id": 9122, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1111:27:44", "typeDescriptions": {"typeIdentifier": "t_stringliteral_ee9f4e3a064528f67a06f6c0c0b451292b182050371e5e273e76be66e73b1e68", "typeString": "literal_string \"observer fee already paid\""}, "value": "observer fee already paid"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_ee9f4e3a064528f67a06f6c0c0b451292b182050371e5e273e76be66e73b1e68", "typeString": "literal_string \"observer fee already paid\""}], "id": 9117, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1078:7:44", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9123, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:61:44", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9124, "nodeType": "ExpressionStatement", "src": "1078:61:44"}, {"expression": {"id": 9130, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9125, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9111, "src": "1149:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9127, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1159:8:44", "memberName": "timePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9889, "src": "1149:18:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9128, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1170:5:44", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1176:9:44", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1170:15:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1149:36:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9131, "nodeType": "ExpressionStatement", "src": "1149:36:44"}]}, "documentation": {"id": 9108, "nodeType": "StructuredDocumentation", "src": "885:86:44", "text": " @notice Observer claim fee\n @param _observer Observer address"}, "id": 9133, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9114, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9111, "src": "1057:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}], "id": 9115, "kind": "modifierInvocation", "modifierName": {"id": 9113, "name": "onlyActiveObserver", "nameLocations": ["1038:18:44"], "nodeType": "IdentifierPath", "referencedDeclaration": 9067, "src": "1038:18:44"}, "nodeType": "ModifierInvocation", "src": "1038:29:44"}], "name": "_payObserverFee", "nameLocation": "985:15:44", "nodeType": "FunctionDefinition", "parameters": {"id": 9112, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9111, "mutability": "mutable", "name": "_observer", "nameLocation": "1018:9:44", "nodeType": "VariableDeclaration", "scope": 9133, "src": "1001:26:44", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}, "typeName": {"id": 9110, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9109, "name": "Observer", "nameLocations": ["1001:8:44"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "1001:8:44"}, "referencedDeclaration": 9892, "src": "1001:8:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}, "visibility": "internal"}], "src": "1000:28:44"}, "returnParameters": {"id": 9116, "nodeType": "ParameterList", "parameters": [], "src": "1068:0:44"}, "scope": 9134, "src": "976:216:44", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 9135, "src": "99:1095:44", "usedErrors": []}], "src": "32:1163:44"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/PackageLibrary.sol": {"AST": {"absolutePath": "contracts/libraries/PackageLibrary.sol", "exportedSymbols": {"Package": [9870], "PackageLibrary": [9576]}, "id": 9577, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 9136, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:45"}, {"absolutePath": "contracts/libraries/Structs.sol", "file": "./Structs.sol", "id": 9138, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 9577, "sourceUnit": 9893, "src": "56:40:45", "symbolAliases": [{"foreign": {"id": 9137, "name": "Package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9870, "src": "65:7:45", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "PackageLibrary", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 9576, "linearizedBaseContracts": [9576], "name": "PackageLibrary", "nameLocation": "106:14:45", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "functionSelector": "eb892b10", "id": 9141, "mutability": "constant", "name": "MAX_COLLABORATORS", "nameLocation": "151:17:45", "nodeType": "VariableDeclaration", "scope": 9576, "src": "127:46:45", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9139, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "127:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "3130", "id": 9140, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "171:2:45", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "visibility": "public"}, {"constant": true, "functionSelector": "ec120a00", "id": 9144, "mutability": "constant", "name": "MAX_OBSERVERS", "nameLocation": "203:13:45", "nodeType": "VariableDeclaration", "scope": 9576, "src": "179:42:45", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9142, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "179:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "3130", "id": 9143, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "219:2:45", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "visibility": "public"}, {"body": {"id": 9157, "nodeType": "Block", "src": "333:73:45", "statements": [{"expression": {"arguments": [{"expression": {"id": 9151, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9148, "src": "351:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9152, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "360:8:45", "memberName": "isActive", "nodeType": "MemberAccess", "referencedDeclaration": 9869, "src": "351:17:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6e6f2073756368207061636b616765", "id": 9153, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "370:17:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_56c9ff310e93ba0b6293590b2d28d1a49f0d4749d1f67471bbb2c4512c7b1b3a", "typeString": "literal_string \"no such package\""}, "value": "no such package"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_56c9ff310e93ba0b6293590b2d28d1a49f0d4749d1f67471bbb2c4512c7b1b3a", "typeString": "literal_string \"no such package\""}], "id": 9150, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "343:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9154, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "343:45:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9155, "nodeType": "ExpressionStatement", "src": "343:45:45"}, {"id": 9156, "nodeType": "PlaceholderStatement", "src": "398:1:45"}]}, "documentation": {"id": 9145, "nodeType": "StructuredDocumentation", "src": "228:47:45", "text": "@notice Throws if there is no package"}, "id": 9158, "name": "onlyActivePackage", "nameLocation": "289:17:45", "nodeType": "ModifierDefinition", "parameters": {"id": 9149, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9148, "mutability": "mutable", "name": "package_", "nameLocation": "323:8:45", "nodeType": "VariableDeclaration", "scope": 9158, "src": "307:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9147, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9146, "name": "Package", "nameLocations": ["307:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "307:7:45"}, "referencedDeclaration": 9870, "src": "307:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "306:26:45"}, "src": "280:126:45", "virtual": false, "visibility": "internal"}, {"body": {"id": 9221, "nodeType": "Block", "src": "906:391:45", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 9180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "30", "id": 9174, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "924:1:45", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 9175, "name": "collaboratorsLimit_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9170, "src": "928:19:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "924:23:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 9177, "name": "collaboratorsLimit_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9170, "src": "951:19:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"id": 9178, "name": "MAX_COLLABORATORS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9141, "src": "974:17:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "951:40:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "924:67:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e636f727265637420636f6c6c61626f7261746f7273206c696d6974", "id": 9181, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "993:31:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c2595518826147acf35eff0a23a45682bdf83e012ca3d11c85ffd5120c0b9653", "typeString": "literal_string \"incorrect collaborators limit\""}, "value": "incorrect collaborators limit"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_c2595518826147acf35eff0a23a45682bdf83e012ca3d11c85ffd5120c0b9653", "typeString": "literal_string \"incorrect collaborators limit\""}], "id": 9173, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "916:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9182, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "916:109:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9183, "nodeType": "ExpressionStatement", "src": "916:109:45"}, {"expression": {"id": 9188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9184, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9162, "src": "1035:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9186, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1044:6:45", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9839, "src": "1035:15:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9187, "name": "budget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9164, "src": "1053:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1035:25:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9189, "nodeType": "ExpressionStatement", "src": "1035:25:45"}, {"expression": {"id": 9194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9190, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9162, "src": "1070:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9192, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1079:15:45", "memberName": "budgetObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9845, "src": "1070:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9193, "name": "feeObserversBudget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9166, "src": "1097:19:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1070:46:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9195, "nodeType": "ExpressionStatement", "src": "1070:46:45"}, {"expression": {"id": 9200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9196, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9162, "src": "1126:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9198, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1135:5:45", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "1126:14:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9199, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9168, "src": "1143:6:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1126:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9201, "nodeType": "ExpressionStatement", "src": "1126:23:45"}, {"expression": {"id": 9206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9202, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9162, "src": "1159:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9204, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1168:18:45", "memberName": "collaboratorsLimit", "nodeType": "MemberAccess", "referencedDeclaration": 9863, "src": "1159:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9205, "name": "collaboratorsLimit_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9170, "src": "1189:19:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1159:49:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9207, "nodeType": "ExpressionStatement", "src": "1159:49:45"}, {"expression": {"id": 9213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9208, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9162, "src": "1218:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9210, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1227:11:45", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9855, "src": "1218:20:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9211, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:45", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:9:45", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1241:15:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1218:38:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9214, "nodeType": "ExpressionStatement", "src": "1218:38:45"}, {"expression": {"id": 9219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9215, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9162, "src": "1266:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9217, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1275:8:45", "memberName": "isActive", "nodeType": "MemberAccess", "referencedDeclaration": 9869, "src": "1266:17:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 9218, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1286:4:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "1266:24:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9220, "nodeType": "ExpressionStatement", "src": "1266:24:45"}]}, "documentation": {"id": 9159, "nodeType": "StructuredDocumentation", "src": "412:293:45", "text": " @notice Creates package in project\n @param package_ reference to Package struct\n @param budget_ MGP budget\n @param feeObserversBudget_ Observers fee budget\n @param bonus_ Bonus budget\n @param collaboratorsLimit_ Limit on number of collaborators"}, "id": 9222, "implemented": true, "kind": "function", "modifiers": [], "name": "_createPackage", "nameLocation": "719:14:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9171, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9162, "mutability": "mutable", "name": "package_", "nameLocation": "759:8:45", "nodeType": "VariableDeclaration", "scope": 9222, "src": "743:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9161, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9160, "name": "Package", "nameLocations": ["743:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "743:7:45"}, "referencedDeclaration": 9870, "src": "743:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9164, "mutability": "mutable", "name": "budget_", "nameLocation": "785:7:45", "nodeType": "VariableDeclaration", "scope": 9222, "src": "777:15:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9163, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "777:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9166, "mutability": "mutable", "name": "feeObserversBudget_", "nameLocation": "810:19:45", "nodeType": "VariableDeclaration", "scope": 9222, "src": "802:27:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9165, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "802:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9168, "mutability": "mutable", "name": "bonus_", "nameLocation": "847:6:45", "nodeType": "VariableDeclaration", "scope": 9222, "src": "839:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9167, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "839:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9170, "mutability": "mutable", "name": "collaboratorsLimit_", "nameLocation": "871:19:45", "nodeType": "VariableDeclaration", "scope": 9222, "src": "863:27:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9169, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "863:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "733:163:45"}, "returnParameters": {"id": 9172, "nodeType": "ParameterList", "parameters": [], "src": "906:0:45"}, "scope": 9576, "src": "710:587:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9245, "nodeType": "Block", "src": "1493:91:45", "statements": [{"expression": {"id": 9237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9232, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9226, "src": "1503:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9234, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1512:12:45", "memberName": "timeCanceled", "nodeType": "MemberAccess", "referencedDeclaration": 9867, "src": "1503:21:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9235, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1527:5:45", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1533:9:45", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1527:15:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1503:39:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9238, "nodeType": "ExpressionStatement", "src": "1503:39:45"}, {"expression": {"id": 9243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9239, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9226, "src": "1552:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9241, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1561:8:45", "memberName": "isActive", "nodeType": "MemberAccess", "referencedDeclaration": 9869, "src": "1552:17:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 9242, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1572:5:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "1552:25:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9244, "nodeType": "ExpressionStatement", "src": "1552:25:45"}]}, "documentation": {"id": 9223, "nodeType": "StructuredDocumentation", "src": "1303:98:45", "text": " @notice Cancel package in project\n @param package_ Package want to cancel"}, "id": 9246, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9229, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9226, "src": "1483:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9230, "kind": "modifierInvocation", "modifierName": {"id": 9228, "name": "onlyActivePackage", "nameLocations": ["1465:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "1465:17:45"}, "nodeType": "ModifierInvocation", "src": "1465:27:45"}], "name": "_cancelPackage", "nameLocation": "1415:14:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9227, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9226, "mutability": "mutable", "name": "package_", "nameLocation": "1446:8:45", "nodeType": "VariableDeclaration", "scope": 9246, "src": "1430:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9225, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9224, "name": "Package", "nameLocations": ["1430:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "1430:7:45"}, "referencedDeclaration": 9870, "src": "1430:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "1429:26:45"}, "returnParameters": {"id": 9231, "nodeType": "ParameterList", "parameters": [], "src": "1493:0:45"}, "scope": 9576, "src": "1406:178:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9269, "nodeType": "Block", "src": "1782:125:45", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9257, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9250, "src": "1800:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9258, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1809:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "1800:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 9259, "name": "MAX_OBSERVERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9144, "src": "1826:13:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1800:39:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6d6178206f62736572766572732072656163686564", "id": 9261, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1841:23:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_21f03a67f75d29f065c0bd0684b80ec466de07e7b8cabcaad45ccdfd9184e001", "typeString": "literal_string \"max observers reached\""}, "value": "max observers reached"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_21f03a67f75d29f065c0bd0684b80ec466de07e7b8cabcaad45ccdfd9184e001", "typeString": "literal_string \"max observers reached\""}], "id": 9256, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1792:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9262, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1792:73:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9263, "nodeType": "ExpressionStatement", "src": "1792:73:45"}, {"expression": {"id": 9267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1875:25:45", "subExpression": {"expression": {"id": 9264, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9250, "src": "1875:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9266, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1884:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "1875:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9268, "nodeType": "ExpressionStatement", "src": "1875:25:45"}]}, "documentation": {"id": 9247, "nodeType": "StructuredDocumentation", "src": "1590:102:45", "text": " @notice Adds observer to package\n @param package_ reference to Package struct"}, "id": 9270, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9253, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9250, "src": "1772:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9254, "kind": "modifierInvocation", "modifierName": {"id": 9252, "name": "onlyActivePackage", "nameLocations": ["1754:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "1754:17:45"}, "nodeType": "ModifierInvocation", "src": "1754:27:45"}], "name": "_addObserver", "nameLocation": "1706:12:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9251, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9250, "mutability": "mutable", "name": "package_", "nameLocation": "1735:8:45", "nodeType": "VariableDeclaration", "scope": 9270, "src": "1719:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9249, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9248, "name": "Package", "nameLocations": ["1719:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "1719:7:45"}, "referencedDeclaration": 9870, "src": "1719:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "1718:26:45"}, "returnParameters": {"id": 9255, "nodeType": "ParameterList", "parameters": [], "src": "1782:0:45"}, "scope": 9576, "src": "1697:210:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9298, "nodeType": "Block", "src": "2164:143:45", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9286, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9283, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9274, "src": "2182:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9284, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2191:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "2182:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 9285, "name": "count_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9276, "src": "2208:6:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2182:32:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"id": 9287, "name": "MAX_OBSERVERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9144, "src": "2218:13:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2182:49:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6d6178206f62736572766572732072656163686564", "id": 9289, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2233:23:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_21f03a67f75d29f065c0bd0684b80ec466de07e7b8cabcaad45ccdfd9184e001", "typeString": "literal_string \"max observers reached\""}, "value": "max observers reached"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_21f03a67f75d29f065c0bd0684b80ec466de07e7b8cabcaad45ccdfd9184e001", "typeString": "literal_string \"max observers reached\""}], "id": 9282, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2174:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9290, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2174:83:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9291, "nodeType": "ExpressionStatement", "src": "2174:83:45"}, {"expression": {"id": 9296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9292, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9274, "src": "2267:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9294, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2276:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "2267:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9295, "name": "count_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9276, "src": "2294:6:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2267:33:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9297, "nodeType": "ExpressionStatement", "src": "2267:33:45"}]}, "documentation": {"id": 9271, "nodeType": "StructuredDocumentation", "src": "1913:144:45", "text": " @notice Adds observers to package\n @param package_ reference to Package struct\n @param count_ number of observers"}, "id": 9299, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9279, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9274, "src": "2154:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9280, "kind": "modifierInvocation", "modifierName": {"id": 9278, "name": "onlyActivePackage", "nameLocations": ["2136:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "2136:17:45"}, "nodeType": "ModifierInvocation", "src": "2136:27:45"}], "name": "_addObservers", "nameLocation": "2071:13:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9277, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9274, "mutability": "mutable", "name": "package_", "nameLocation": "2101:8:45", "nodeType": "VariableDeclaration", "scope": 9299, "src": "2085:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9273, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9272, "name": "Package", "nameLocations": ["2085:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "2085:7:45"}, "referencedDeclaration": 9870, "src": "2085:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9276, "mutability": "mutable", "name": "count_", "nameLocation": "2119:6:45", "nodeType": "VariableDeclaration", "scope": 9299, "src": "2111:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9275, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2111:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2084:42:45"}, "returnParameters": {"id": 9281, "nodeType": "ParameterList", "parameters": [], "src": "2164:0:45"}, "scope": 9576, "src": "2062:245:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9314, "nodeType": "Block", "src": "2513:42:45", "statements": [{"expression": {"id": 9312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "2523:25:45", "subExpression": {"expression": {"id": 9309, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9303, "src": "2523:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9311, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2532:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "2523:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9313, "nodeType": "ExpressionStatement", "src": "2523:25:45"}]}, "documentation": {"id": 9300, "nodeType": "StructuredDocumentation", "src": "2313:107:45", "text": " @notice Removes observer from package\n @param package_ reference to Package struct"}, "id": 9315, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9306, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9303, "src": "2503:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9307, "kind": "modifierInvocation", "modifierName": {"id": 9305, "name": "onlyActivePackage", "nameLocations": ["2485:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "2485:17:45"}, "nodeType": "ModifierInvocation", "src": "2485:27:45"}], "name": "_removeObserver", "nameLocation": "2434:15:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9304, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9303, "mutability": "mutable", "name": "package_", "nameLocation": "2466:8:45", "nodeType": "VariableDeclaration", "scope": 9315, "src": "2450:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9302, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9301, "name": "Package", "nameLocations": ["2450:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "2450:7:45"}, "referencedDeclaration": 9870, "src": "2450:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "2449:26:45"}, "returnParameters": {"id": 9308, "nodeType": "ParameterList", "parameters": [], "src": "2513:0:45"}, "scope": 9576, "src": "2425:130:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9333, "nodeType": "Block", "src": "2820:50:45", "statements": [{"expression": {"id": 9331, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9327, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9319, "src": "2830:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9329, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2839:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "2830:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 9330, "name": "count_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9321, "src": "2857:6:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2830:33:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9332, "nodeType": "ExpressionStatement", "src": "2830:33:45"}]}, "documentation": {"id": 9316, "nodeType": "StructuredDocumentation", "src": "2561:149:45", "text": " @notice Removes observers from package\n @param package_ reference to Package struct\n @param count_ number of observers"}, "id": 9334, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9324, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9319, "src": "2810:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9325, "kind": "modifierInvocation", "modifierName": {"id": 9323, "name": "onlyActivePackage", "nameLocations": ["2792:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "2792:17:45"}, "nodeType": "ModifierInvocation", "src": "2792:27:45"}], "name": "_removeObservers", "nameLocation": "2724:16:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9322, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9319, "mutability": "mutable", "name": "package_", "nameLocation": "2757:8:45", "nodeType": "VariableDeclaration", "scope": 9334, "src": "2741:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9318, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9317, "name": "Package", "nameLocations": ["2741:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "2741:7:45"}, "referencedDeclaration": 9870, "src": "2741:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9321, "mutability": "mutable", "name": "count_", "nameLocation": "2775:6:45", "nodeType": "VariableDeclaration", "scope": 9334, "src": "2767:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9320, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2767:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2740:42:45"}, "returnParameters": {"id": 9326, "nodeType": "ParameterList", "parameters": [], "src": "2820:0:45"}, "scope": 9576, "src": "2715:155:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9377, "nodeType": "Block", "src": "3121:304:45", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9347, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3139:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9348, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3148:6:45", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9839, "src": "3139:15:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9349, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3158:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9350, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3167:15:45", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9841, "src": "3158:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 9351, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9340, "src": "3185:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3158:34:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3139:53:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6e6f7420656e6f756768207061636b61676520627564676574206c656674", "id": 9354, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3194:32:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_42cd87441756dfcff667d305ed8b2b69ff23b7c6b2dc426555029df43be6f274", "typeString": "literal_string \"not enough package budget left\""}, "value": "not enough package budget left"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_42cd87441756dfcff667d305ed8b2b69ff23b7c6b2dc426555029df43be6f274", "typeString": "literal_string \"not enough package budget left\""}], "id": 9346, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3131:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9355, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3131:96:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9356, "nodeType": "ExpressionStatement", "src": "3131:96:45"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9358, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3245:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9359, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3254:18:45", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "3245:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 9360, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3275:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9361, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3284:18:45", "memberName": "collaboratorsLimit", "nodeType": "MemberAccess", "referencedDeclaration": 9863, "src": "3275:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3245:57:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "636f6c6c61626f7261746f7273206c696d69742072656163686564", "id": 9363, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3304:29:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_e5c338fbe89973c08e13e9a3c7a7bbd52c8e4d6456038cfdf1e6e6b93b5c28b5", "typeString": "literal_string \"collaborators limit reached\""}, "value": "collaborators limit reached"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_e5c338fbe89973c08e13e9a3c7a7bbd52c8e4d6456038cfdf1e6e6b93b5c28b5", "typeString": "literal_string \"collaborators limit reached\""}], "id": 9357, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3237:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9364, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3237:97:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9365, "nodeType": "ExpressionStatement", "src": "3237:97:45"}, {"expression": {"id": 9370, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9366, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3344:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9368, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3353:15:45", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9841, "src": "3344:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9369, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9340, "src": "3372:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3344:35:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9371, "nodeType": "ExpressionStatement", "src": "3344:35:45"}, {"expression": {"id": 9375, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3389:29:45", "subExpression": {"expression": {"id": 9372, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3389:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9374, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3398:18:45", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "3389:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9376, "nodeType": "ExpressionStatement", "src": "3389:29:45"}]}, "documentation": {"id": 9335, "nodeType": "StructuredDocumentation", "src": "2876:135:45", "text": " @notice Allocate budget to collaborator and increase number of collaborators\n @param amount_ amount to reserve"}, "id": 9378, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9343, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3111:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9344, "kind": "modifierInvocation", "modifierName": {"id": 9342, "name": "onlyActivePackage", "nameLocations": ["3093:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "3093:17:45"}, "nodeType": "ModifierInvocation", "src": "3093:27:45"}], "name": "_allocateBudget", "nameLocation": "3025:15:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9341, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9338, "mutability": "mutable", "name": "package_", "nameLocation": "3057:8:45", "nodeType": "VariableDeclaration", "scope": 9378, "src": "3041:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9337, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9336, "name": "Package", "nameLocations": ["3041:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "3041:7:45"}, "referencedDeclaration": 9870, "src": "3041:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9340, "mutability": "mutable", "name": "amount_", "nameLocation": "3075:7:45", "nodeType": "VariableDeclaration", "scope": 9378, "src": "3067:15:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9339, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3067:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3040:43:45"}, "returnParameters": {"id": 9345, "nodeType": "ParameterList", "parameters": [], "src": "3121:0:45"}, "scope": 9576, "src": "3016:409:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9393, "nodeType": "Block", "src": "3647:49:45", "statements": [{"expression": {"id": 9391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3657:32:45", "subExpression": {"expression": {"id": 9388, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9382, "src": "3657:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9390, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3666:21:45", "memberName": "approvedCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9865, "src": "3657:30:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9392, "nodeType": "ExpressionStatement", "src": "3657:32:45"}]}, "documentation": {"id": 9379, "nodeType": "StructuredDocumentation", "src": "3431:118:45", "text": " @notice Increase number of approved Collaborator\n @param package_ reference to Package struct"}, "id": 9394, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9385, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9382, "src": "3637:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9386, "kind": "modifierInvocation", "modifierName": {"id": 9384, "name": "onlyActivePackage", "nameLocations": ["3619:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "3619:17:45"}, "nodeType": "ModifierInvocation", "src": "3619:27:45"}], "name": "_approveCollaborator", "nameLocation": "3563:20:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9383, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9382, "mutability": "mutable", "name": "package_", "nameLocation": "3600:8:45", "nodeType": "VariableDeclaration", "scope": 9394, "src": "3584:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9381, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9380, "name": "Package", "nameLocations": ["3584:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "3584:7:45"}, "referencedDeclaration": 9870, "src": "3584:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "3583:26:45"}, "returnParameters": {"id": 9387, "nodeType": "ParameterList", "parameters": [], "src": "3647:0:45"}, "scope": 9576, "src": "3554:142:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9423, "nodeType": "Block", "src": "3963:127:45", "statements": [{"condition": {"id": 9409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3977:9:45", "subExpression": {"id": 9408, "name": "paidMgp_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9400, "src": "3978:8:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9417, "nodeType": "IfStatement", "src": "3973:72:45", "trueBody": {"id": 9416, "nodeType": "Block", "src": "3988:57:45", "statements": [{"expression": {"id": 9414, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9410, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9398, "src": "4002:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9412, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "4011:15:45", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9841, "src": "4002:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 9413, "name": "mgp_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9402, "src": "4030:4:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4002:32:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9415, "nodeType": "ExpressionStatement", "src": "4002:32:45"}]}}, {"expression": {"id": 9421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "4054:29:45", "subExpression": {"expression": {"id": 9418, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9398, "src": "4054:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9420, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "4063:18:45", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "4054:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9422, "nodeType": "ExpressionStatement", "src": "4054:29:45"}]}, "documentation": {"id": 9395, "nodeType": "StructuredDocumentation", "src": "3702:135:45", "text": " @notice Remove collaborator from package\n @param package_ Package want to cancel\n @param mgp_ MGP amount"}, "id": 9424, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9405, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9398, "src": "3953:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9406, "kind": "modifierInvocation", "modifierName": {"id": 9404, "name": "onlyActivePackage", "nameLocations": ["3935:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "3935:17:45"}, "nodeType": "ModifierInvocation", "src": "3935:27:45"}], "name": "_removeCollaborator", "nameLocation": "3851:19:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9403, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9398, "mutability": "mutable", "name": "package_", "nameLocation": "3887:8:45", "nodeType": "VariableDeclaration", "scope": 9424, "src": "3871:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9397, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9396, "name": "Package", "nameLocations": ["3871:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "3871:7:45"}, "referencedDeclaration": 9870, "src": "3871:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9400, "mutability": "mutable", "name": "paidMgp_", "nameLocation": "3902:8:45", "nodeType": "VariableDeclaration", "scope": 9424, "src": "3897:13:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 9399, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3897:4:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 9402, "mutability": "mutable", "name": "mgp_", "nameLocation": "3920:4:45", "nodeType": "VariableDeclaration", "scope": 9424, "src": "3912:12:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9401, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3912:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3870:55:45"}, "returnParameters": {"id": 9407, "nodeType": "ParameterList", "parameters": [], "src": "3963:0:45"}, "scope": 9576, "src": "3842:248:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9488, "nodeType": "Block", "src": "4454:458:45", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9441, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9437, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4472:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9438, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4481:18:45", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "4472:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 9439, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4503:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9440, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4512:21:45", "memberName": "approvedCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9865, "src": "4503:30:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4472:61:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "756e617070726f76656420636f6c6c61626f7261746f7273206c656674", "id": 9442, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4535:31:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_ed091be262e797de0fe6bdaedee594092ac508d149b9c65bad4b432d08f6e3b0", "typeString": "literal_string \"unapproved collaborators left\""}, "value": "unapproved collaborators left"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_ed091be262e797de0fe6bdaedee594092ac508d149b9c65bad4b432d08f6e3b0", "typeString": "literal_string \"unapproved collaborators left\""}], "id": 9436, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4464:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9443, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4464:103:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9444, "nodeType": "ExpressionStatement", "src": "4464:103:45"}, {"expression": {"id": 9451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 9445, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9434, "src": "4577:11:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9450, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9446, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4591:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9447, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4600:6:45", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9839, "src": "4591:15:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 9448, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4609:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9449, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4618:15:45", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9841, "src": "4609:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4591:42:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4577:56:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9452, "nodeType": "ExpressionStatement", "src": "4577:56:45"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9453, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4647:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4656:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "4647:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9455, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4674:1:45", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4647:28:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9462, "nodeType": "IfStatement", "src": "4643:73:45", "trueBody": {"expression": {"id": 9460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 9457, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9434, "src": "4677:11:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 9458, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4692:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9459, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4701:15:45", "memberName": "budgetObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9845, "src": "4692:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4677:39:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9461, "nodeType": "ExpressionStatement", "src": "4677:39:45"}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9466, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9463, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4730:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9464, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4739:18:45", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "4730:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9465, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4761:1:45", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4730:32:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9472, "nodeType": "IfStatement", "src": "4726:67:45", "trueBody": {"expression": {"id": 9470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 9467, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9434, "src": "4764:11:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 9468, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4779:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9469, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4788:5:45", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "4779:14:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4764:29:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9471, "nodeType": "ExpressionStatement", "src": "4764:29:45"}}, {"expression": {"id": 9478, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9473, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4803:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9475, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "4812:12:45", "memberName": "timeFinished", "nodeType": "MemberAccess", "referencedDeclaration": 9857, "src": "4803:21:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9476, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4827:5:45", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9477, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4833:9:45", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4827:15:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4803:39:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9479, "nodeType": "ExpressionStatement", "src": "4803:39:45"}, {"expression": {"id": 9484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9480, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4852:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9482, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "4861:8:45", "memberName": "isActive", "nodeType": "MemberAccess", "referencedDeclaration": 9869, "src": "4852:17:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 9483, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4872:5:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "4852:25:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9485, "nodeType": "ExpressionStatement", "src": "4852:25:45"}, {"expression": {"id": 9486, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9434, "src": "4894:11:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 9435, "id": 9487, "nodeType": "Return", "src": "4887:18:45"}]}, "documentation": {"id": 9425, "nodeType": "StructuredDocumentation", "src": "4096:236:45", "text": " @notice Finishes package in project, checks if already finished, records time\n if budget left and there is no collaborators, bonus is refunded to package budget\n @param package_ reference to Package struct"}, "id": 9489, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9431, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4414:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9432, "kind": "modifierInvocation", "modifierName": {"id": 9430, "name": "onlyActivePackage", "nameLocations": ["4396:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "4396:17:45"}, "nodeType": "ModifierInvocation", "src": "4396:27:45"}], "name": "_finishPackage", "nameLocation": "4346:14:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9429, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9428, "mutability": "mutable", "name": "package_", "nameLocation": "4377:8:45", "nodeType": "VariableDeclaration", "scope": 9489, "src": "4361:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9427, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9426, "name": "Package", "nameLocations": ["4361:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "4361:7:45"}, "referencedDeclaration": 9870, "src": "4361:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "4360:26:45"}, "returnParameters": {"id": 9435, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9434, "mutability": "mutable", "name": "budgetLeft_", "nameLocation": "4441:11:45", "nodeType": "VariableDeclaration", "scope": 9489, "src": "4433:19:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4433:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4432:21:45"}, "scope": 9576, "src": "4337:575:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9524, "nodeType": "Block", "src": "5127:287:45", "statements": [{"assignments": [9499], "declarations": [{"constant": false, "id": 9499, "mutability": "mutable", "name": "remains", "nameLocation": "5145:7:45", "nodeType": "VariableDeclaration", "scope": 9524, "src": "5137:15:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9498, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5137:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 9505, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9500, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9493, "src": "5155:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5164:15:45", "memberName": "budgetObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9845, "src": "5155:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 9502, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9493, "src": "5182:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9503, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5191:19:45", "memberName": "budgetObserversPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9847, "src": "5182:28:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5155:55:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5137:73:45"}, {"assignments": [9507], "declarations": [{"constant": false, "id": 9507, "mutability": "mutable", "name": "portion", "nameLocation": "5287:7:45", "nodeType": "VariableDeclaration", "scope": 9524, "src": "5279:15:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9506, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5279:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 9513, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9512, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9508, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9493, "src": "5297:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9509, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5306:15:45", "memberName": "budgetObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9845, "src": "5297:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"expression": {"id": 9510, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9493, "src": "5324:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9511, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5333:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "5324:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5297:50:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5279:68:45"}, {"expression": {"condition": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 9514, "name": "remains", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9499, "src": "5365:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 9515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5375:1:45", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 9516, "name": "portion", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9507, "src": "5379:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5375:11:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5365:21:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 9519, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "5364:23:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"id": 9521, "name": "portion", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9507, "src": "5400:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9522, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "5364:43:45", "trueExpression": {"id": 9520, "name": "remains", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9499, "src": "5390:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 9497, "id": 9523, "nodeType": "Return", "src": "5357:50:45"}]}, "documentation": {"id": 9490, "nodeType": "StructuredDocumentation", "src": "4918:121:45", "text": " @notice Get observer's claimable portion in package\n @param package_ reference to Package struct"}, "id": 9525, "implemented": true, "kind": "function", "modifiers": [], "name": "_getObserverFee", "nameLocation": "5053:15:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9494, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9493, "mutability": "mutable", "name": "package_", "nameLocation": "5085:8:45", "nodeType": "VariableDeclaration", "scope": 9525, "src": "5069:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9492, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9491, "name": "Package", "nameLocations": ["5069:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "5069:7:45"}, "referencedDeclaration": 9870, "src": "5069:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "5068:26:45"}, "returnParameters": {"id": 9497, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9496, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 9525, "src": "5118:7:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9495, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5118:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5117:9:45"}, "scope": 9576, "src": "5044:370:45", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 9540, "nodeType": "Block", "src": "5621:56:45", "statements": [{"expression": {"id": 9538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9534, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9529, "src": "5631:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9536, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5640:19:45", "memberName": "budgetObserversPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9847, "src": "5631:28:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9537, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9531, "src": "5663:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5631:39:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9539, "nodeType": "ExpressionStatement", "src": "5631:39:45"}]}, "documentation": {"id": 9526, "nodeType": "StructuredDocumentation", "src": "5420:119:45", "text": " @notice Increases package's observers budget paid\n @param package_ reference to Package struct"}, "id": 9541, "implemented": true, "kind": "function", "modifiers": [], "name": "_payObserverFee", "nameLocation": "5553:15:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9532, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9529, "mutability": "mutable", "name": "package_", "nameLocation": "5585:8:45", "nodeType": "VariableDeclaration", "scope": 9541, "src": "5569:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9528, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9527, "name": "Package", "nameLocations": ["5569:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "5569:7:45"}, "referencedDeclaration": 9870, "src": "5569:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9531, "mutability": "mutable", "name": "amount_", "nameLocation": "5603:7:45", "nodeType": "VariableDeclaration", "scope": 9541, "src": "5595:15:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9530, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5595:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5568:43:45"}, "returnParameters": {"id": 9533, "nodeType": "ParameterList", "parameters": [], "src": "5621:0:45"}, "scope": 9576, "src": "5544:133:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9574, "nodeType": "Block", "src": "5966:169:45", "statements": [{"expression": {"id": 9556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9552, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9545, "src": "5976:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9554, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5985:10:45", "memberName": "budgetPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9843, "src": "5976:19:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9555, "name": "mgp_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9547, "src": "5999:4:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5976:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9557, "nodeType": "ExpressionStatement", "src": "5976:27:45"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 9558, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9549, "src": "6017:6:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 9559, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6026:1:45", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6017:10:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9573, "nodeType": "IfStatement", "src": "6013:116:45", "trueBody": {"id": 9572, "nodeType": "Block", "src": "6029:100:45", "statements": [{"expression": {"id": 9565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9561, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9545, "src": "6043:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9563, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6052:9:45", "memberName": "bonusPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9851, "src": "6043:18:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9564, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9549, "src": "6065:6:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6043:28:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9566, "nodeType": "ExpressionStatement", "src": "6043:28:45"}, {"expression": {"id": 9570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "6085:33:45", "subExpression": {"expression": {"id": 9567, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9545, "src": "6085:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9569, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6094:22:45", "memberName": "collaboratorsPaidBonus", "nodeType": "MemberAccess", "referencedDeclaration": 9853, "src": "6085:31:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9571, "nodeType": "ExpressionStatement", "src": "6085:33:45"}]}}]}, "documentation": {"id": 9542, "nodeType": "StructuredDocumentation", "src": "5684:162:45", "text": " @notice Pay Reward to budget\n @param package_ reference to Package struct\n @param mgp_ MGP amount\n @param bonus_ Bonus amount"}, "id": 9575, "implemented": true, "kind": "function", "modifiers": [], "name": "_payReward", "nameLocation": "5860:10:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9550, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9545, "mutability": "mutable", "name": "package_", "nameLocation": "5896:8:45", "nodeType": "VariableDeclaration", "scope": 9575, "src": "5880:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9544, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9543, "name": "Package", "nameLocations": ["5880:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "5880:7:45"}, "referencedDeclaration": 9870, "src": "5880:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9547, "mutability": "mutable", "name": "mgp_", "nameLocation": "5922:4:45", "nodeType": "VariableDeclaration", "scope": 9575, "src": "5914:12:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9546, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5914:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9549, "mutability": "mutable", "name": "bonus_", "nameLocation": "5944:6:45", "nodeType": "VariableDeclaration", "scope": 9575, "src": "5936:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9548, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5936:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5870:86:45"}, "returnParameters": {"id": 9551, "nodeType": "ParameterList", "parameters": [], "src": "5966:0:45"}, "scope": 9576, "src": "5851:284:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 9577, "src": "98:6039:45", "usedErrors": []}], "src": "32:6106:45"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/ProjectLibrary.sol": {"AST": {"absolutePath": "contracts/libraries/ProjectLibrary.sol", "exportedSymbols": {"IERC20Upgradeable": [419], "ITokenFactory": [8890], "Project": [9837], "ProjectLibrary": [9816], "SafeERC20Upgradeable": [736]}, "id": 9817, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 9578, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:46"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "id": 9581, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 9817, "sourceUnit": 737, "src": "56:137:46", "symbolAliases": [{"foreign": {"id": 9579, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "65:17:46", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 9580, "name": "SafeERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 736, "src": "84:20:46", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ITokenFactory.sol", "file": "../interfaces/ITokenFactory.sol", "id": 9583, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 9817, "sourceUnit": 8891, "src": "194:64:46", "symbolAliases": [{"foreign": {"id": 9582, "name": "ITokenFactory", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8890, "src": "203:13:46", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Structs.sol", "file": "./Structs.sol", "id": 9585, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 9817, "sourceUnit": 9893, "src": "259:40:46", "symbolAliases": [{"foreign": {"id": 9584, "name": "Project", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9837, "src": "268:7:46", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProjectLibrary", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 9816, "linearizedBaseContracts": [9816], "name": "ProjectLibrary", "nameLocation": "309:14:46", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 9589, "libraryName": {"id": 9586, "name": "SafeERC20Upgradeable", "nameLocations": ["336:20:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 736, "src": "336:20:46"}, "nodeType": "UsingForDirective", "src": "330:49:46", "typeName": {"id": 9588, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9587, "name": "IERC20Upgradeable", "nameLocations": ["361:17:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "361:17:46"}, "referencedDeclaration": 419, "src": "361:17:46", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}}, {"body": {"id": 9641, "nodeType": "Block", "src": "692:269:46", "statements": [{"expression": {"id": 9605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9600, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9593, "src": "702:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9602, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "711:9:46", "memberName": "initiator", "nodeType": "MemberAccess", "referencedDeclaration": 9820, "src": "702:18:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9603, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "723:3:46", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 9604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "727:6:46", "memberName": "sender", "nodeType": "MemberAccess", "src": "723:10:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "702:31:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 9606, "nodeType": "ExpressionStatement", "src": "702:31:46"}, {"expression": {"id": 9611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9607, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9593, "src": "743:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9609, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "752:5:46", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 9822, "src": "743:14:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9610, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9595, "src": "760:6:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "743:23:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 9612, "nodeType": "ExpressionStatement", "src": "743:23:46"}, {"expression": {"id": 9617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9613, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9593, "src": "776:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9615, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "785:6:46", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9824, "src": "776:15:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9616, "name": "budget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9597, "src": "794:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "776:25:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9618, "nodeType": "ExpressionStatement", "src": "776:25:46"}, {"expression": {"id": 9624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9619, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9593, "src": "811:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9621, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "820:11:46", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9830, "src": "811:20:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9622, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "834:5:46", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "840:9:46", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "834:15:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "811:38:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9625, "nodeType": "ExpressionStatement", "src": "811:38:46"}, {"expression": {"arguments": [{"expression": {"id": 9631, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "911:3:46", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 9632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "915:6:46", "memberName": "sender", "nodeType": "MemberAccess", "src": "911:10:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 9635, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "931:4:46", "typeDescriptions": {"typeIdentifier": "t_contract$_ProjectLibrary_$9816", "typeString": "library ProjectLibrary"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_ProjectLibrary_$9816", "typeString": "library ProjectLibrary"}], "id": 9634, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "923:7:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 9633, "name": "address", "nodeType": "ElementaryTypeName", "src": "923:7:46", "typeDescriptions": {}}}, "id": 9636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "923:13:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"expression": {"id": 9637, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9593, "src": "938:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9638, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "947:6:46", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9824, "src": "938:15:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 9627, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9593, "src": "878:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9628, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "887:5:46", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 9822, "src": "878:14:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 9626, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "860:17:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 9629, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:33:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 9630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "894:16:46", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 513, "src": "860:50:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,address,uint256)"}}, "id": 9639, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:94:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9640, "nodeType": "ExpressionStatement", "src": "860:94:46"}]}, "documentation": {"id": 9590, "nodeType": "StructuredDocumentation", "src": "385:180:46", "text": " @notice Creates project proposal\n @param project_ reference to Project struct\n @param token_ project token address\n @param budget_ total budget"}, "id": 9642, "implemented": true, "kind": "function", "modifiers": [], "name": "_createProject", "nameLocation": "579:14:46", "nodeType": "FunctionDefinition", "parameters": {"id": 9598, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9593, "mutability": "mutable", "name": "project_", "nameLocation": "619:8:46", "nodeType": "VariableDeclaration", "scope": 9642, "src": "603:24:46", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 9592, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9591, "name": "Project", "nameLocations": ["603:7:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "603:7:46"}, "referencedDeclaration": 9837, "src": "603:7:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}, {"constant": false, "id": 9595, "mutability": "mutable", "name": "token_", "nameLocation": "645:6:46", "nodeType": "VariableDeclaration", "scope": 9642, "src": "637:14:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9594, "name": "address", "nodeType": "ElementaryTypeName", "src": "637:7:46", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 9597, "mutability": "mutable", "name": "budget_", "nameLocation": "669:7:46", "nodeType": "VariableDeclaration", "scope": 9642, "src": "661:15:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9596, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "661:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "593:89:46"}, "returnParameters": {"id": 9599, "nodeType": "ParameterList", "parameters": [], "src": "692:0:46"}, "scope": 9816, "src": "570:391:46", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9700, "nodeType": "Block", "src": "1279:468:46", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9652, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1297:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9653, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1306:12:46", "memberName": "timeFinished", "nodeType": "MemberAccess", "referencedDeclaration": 9832, "src": "1297:21:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1322:1:46", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1297:26:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "616c72656164792066696e69736865642070726f6a656374", "id": 9656, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1325:26:46", "typeDescriptions": {"typeIdentifier": "t_stringliteral_75be95256ae9d12ef5f898e9d7285d9a17d26198f78f1ee826d569b0e7121197", "typeString": "literal_string \"already finished project\""}, "value": "already finished project"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_75be95256ae9d12ef5f898e9d7285d9a17d26198f78f1ee826d569b0e7121197", "typeString": "literal_string \"already finished project\""}], "id": 9651, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1289:7:46", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9657, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1289:63:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9658, "nodeType": "ExpressionStatement", "src": "1289:63:46"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9664, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9660, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1370:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9661, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1379:13:46", "memberName": "totalPackages", "nodeType": "MemberAccess", "referencedDeclaration": 9834, "src": "1370:22:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 9662, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1396:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9663, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1405:21:46", "memberName": "totalFinishedPackages", "nodeType": "MemberAccess", "referencedDeclaration": 9836, "src": "1396:30:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1370:56:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "756e66696e6973686564207061636b61676573206c656674", "id": 9665, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1428:26:46", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2d138ed1bec770596f06c52e2b2a29827ecd39d9b15f403da40d441285c879d3", "typeString": "literal_string \"unfinished packages left\""}, "value": "unfinished packages left"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2d138ed1bec770596f06c52e2b2a29827ecd39d9b15f403da40d441285c879d3", "typeString": "literal_string \"unfinished packages left\""}], "id": 9659, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1362:7:46", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9666, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1362:93:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9667, "nodeType": "ExpressionStatement", "src": "1362:93:46"}, {"expression": {"id": 9673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9668, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1465:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9670, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1474:12:46", "memberName": "timeFinished", "nodeType": "MemberAccess", "referencedDeclaration": 9832, "src": "1465:21:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9671, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1489:5:46", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9672, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1495:9:46", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1489:15:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1465:39:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9674, "nodeType": "ExpressionStatement", "src": "1465:39:46"}, {"assignments": [9676], "declarations": [{"constant": false, "id": 9676, "mutability": "mutable", "name": "budgetLeft_", "nameLocation": "1522:11:46", "nodeType": "VariableDeclaration", "scope": 9700, "src": "1514:19:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9675, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1514:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 9682, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9681, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9677, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1536:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9678, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1545:6:46", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9824, "src": "1536:15:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 9679, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1554:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9680, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1563:15:46", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9826, "src": "1554:24:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1536:42:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1514:64:46"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9685, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 9683, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9676, "src": "1592:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 9684, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1606:1:46", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1592:15:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9697, "nodeType": "IfStatement", "src": "1588:125:46", "trueBody": {"id": 9696, "nodeType": "Block", "src": "1609:104:46", "statements": [{"expression": {"arguments": [{"expression": {"id": 9691, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1670:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9692, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1679:9:46", "memberName": "initiator", "nodeType": "MemberAccess", "referencedDeclaration": 9820, "src": "1670:18:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 9693, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9676, "src": "1690:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 9687, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1641:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9688, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1650:5:46", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 9822, "src": "1641:14:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 9686, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "1623:17:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 9689, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1623:33:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 9690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1657:12:46", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 487, "src": "1623:46:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,uint256)"}}, "id": 9694, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1623:79:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9695, "nodeType": "ExpressionStatement", "src": "1623:79:46"}]}}, {"expression": {"id": 9698, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9676, "src": "1729:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 9650, "id": 9699, "nodeType": "Return", "src": "1722:18:46"}]}, "documentation": {"id": 9643, "nodeType": "StructuredDocumentation", "src": "967:230:46", "text": " @notice Finishes project, checks if already finished or unfinished packages left\n unallocated budget returned to initiator or burned (in case of IOUToken)\n @param project_ reference to Project struct"}, "id": 9701, "implemented": true, "kind": "function", "modifiers": [], "name": "_finishProject", "nameLocation": "1211:14:46", "nodeType": "FunctionDefinition", "parameters": {"id": 9647, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9646, "mutability": "mutable", "name": "project_", "nameLocation": "1242:8:46", "nodeType": "VariableDeclaration", "scope": 9701, "src": "1226:24:46", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 9645, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9644, "name": "Project", "nameLocations": ["1226:7:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "1226:7:46"}, "referencedDeclaration": 9837, "src": "1226:7:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}], "src": "1225:26:46"}, "returnParameters": {"id": 9650, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9649, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 9701, "src": "1270:7:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9648, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1270:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1269:9:46"}, "scope": 9816, "src": "1202:545:46", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9741, "nodeType": "Block", "src": "2123:273:46", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9714, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9711, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9705, "src": "2141:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9712, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2150:12:46", "memberName": "timeFinished", "nodeType": "MemberAccess", "referencedDeclaration": 9832, "src": "2141:21:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9713, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2166:1:46", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2141:26:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "70726f6a6563742069732066696e6973686564", "id": 9715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2169:21:46", "typeDescriptions": {"typeIdentifier": "t_stringliteral_afa84a33b9649370a026fa9aa5c169a9392b72dfcc578ed5a0081cf930e5a0b5", "typeString": "literal_string \"project is finished\""}, "value": "project is finished"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_afa84a33b9649370a026fa9aa5c169a9392b72dfcc578ed5a0081cf930e5a0b5", "typeString": "literal_string \"project is finished\""}], "id": 9710, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2133:7:46", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9716, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2133:58:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9717, "nodeType": "ExpressionStatement", "src": "2133:58:46"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9719, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9705, "src": "2209:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9720, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2218:6:46", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9824, "src": "2209:15:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9724, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9721, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9705, "src": "2228:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9722, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2237:15:46", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9826, "src": "2228:24:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 9723, "name": "totalBudget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9707, "src": "2255:12:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2228:39:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2209:58:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6e6f7420656e6f7567682070726f6a65637420627564676574206c656674", "id": 9726, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2269:32:46", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d27e1e41eed816741d364ef7be75687b959b087b5aa4a7916c90f68081f88ce2", "typeString": "literal_string \"not enough project budget left\""}, "value": "not enough project budget left"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_d27e1e41eed816741d364ef7be75687b959b087b5aa4a7916c90f68081f88ce2", "typeString": "literal_string \"not enough project budget left\""}], "id": 9718, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2201:7:46", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9727, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2201:101:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9728, "nodeType": "ExpressionStatement", "src": "2201:101:46"}, {"expression": {"id": 9733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9729, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9705, "src": "2312:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9731, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2321:15:46", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9826, "src": "2312:24:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9732, "name": "totalBudget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9707, "src": "2340:12:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2312:40:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9734, "nodeType": "ExpressionStatement", "src": "2312:40:46"}, {"expression": {"id": 9739, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9735, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9705, "src": "2362:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9737, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2371:13:46", "memberName": "totalPackages", "nodeType": "MemberAccess", "referencedDeclaration": 9834, "src": "2362:22:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 9738, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2388:1:46", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "2362:27:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9740, "nodeType": "ExpressionStatement", "src": "2362:27:46"}]}, "documentation": {"id": 9702, "nodeType": "StructuredDocumentation", "src": "1753:254:46", "text": " @notice Creates package in project, check if there is budget available\n allocates budget and increase total number of packages\n @param project_ reference to Project struct\n @param totalBudget_ total budget MGP + Bonus"}, "id": 9742, "implemented": true, "kind": "function", "modifiers": [], "name": "_reservePackagesBudget", "nameLocation": "2021:22:46", "nodeType": "FunctionDefinition", "parameters": {"id": 9708, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9705, "mutability": "mutable", "name": "project_", "nameLocation": "2069:8:46", "nodeType": "VariableDeclaration", "scope": 9742, "src": "2053:24:46", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 9704, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9703, "name": "Project", "nameLocations": ["2053:7:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "2053:7:46"}, "referencedDeclaration": 9837, "src": "2053:7:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}, {"constant": false, "id": 9707, "mutability": "mutable", "name": "totalBudget_", "nameLocation": "2095:12:46", "nodeType": "VariableDeclaration", "scope": 9742, "src": "2087:20:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9706, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2087:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2043:70:46"}, "returnParameters": {"id": 9709, "nodeType": "ParameterList", "parameters": [], "src": "2123:0:46"}, "scope": 9816, "src": "2012:384:46", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9762, "nodeType": "Block", "src": "2671:98:46", "statements": [{"expression": {"id": 9755, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9751, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9746, "src": "2681:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9753, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2690:15:46", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9826, "src": "2681:24:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 9754, "name": "budgetToBeReverted_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9748, "src": "2709:19:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2681:47:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9756, "nodeType": "ExpressionStatement", "src": "2681:47:46"}, {"expression": {"id": 9760, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "2738:24:46", "subExpression": {"expression": {"id": 9757, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9746, "src": "2738:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9759, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2747:13:46", "memberName": "totalPackages", "nodeType": "MemberAccess", "referencedDeclaration": 9834, "src": "2738:22:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9761, "nodeType": "ExpressionStatement", "src": "2738:24:46"}]}, "documentation": {"id": 9743, "nodeType": "StructuredDocumentation", "src": "2402:170:46", "text": " @notice Get back package budget package\n @param project_ Project reference address\n @param budgetToBeReverted_ Budget amount to be reverted"}, "id": 9763, "implemented": true, "kind": "function", "modifiers": [], "name": "_revertPackageBudget", "nameLocation": "2586:20:46", "nodeType": "FunctionDefinition", "parameters": {"id": 9749, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9746, "mutability": "mutable", "name": "project_", "nameLocation": "2623:8:46", "nodeType": "VariableDeclaration", "scope": 9763, "src": "2607:24:46", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 9745, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9744, "name": "Project", "nameLocations": ["2607:7:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "2607:7:46"}, "referencedDeclaration": 9837, "src": "2607:7:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}, {"constant": false, "id": 9748, "mutability": "mutable", "name": "budgetToBeReverted_", "nameLocation": "2641:19:46", "nodeType": "VariableDeclaration", "scope": 9763, "src": "2633:27:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9747, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2633:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2606:55:46"}, "returnParameters": {"id": 9750, "nodeType": "ParameterList", "parameters": [], "src": "2671:0:46"}, "scope": 9816, "src": "2577:192:46", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9787, "nodeType": "Block", "src": "3116:119:46", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 9772, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9769, "src": "3130:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 9773, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3144:1:46", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3130:15:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9781, "nodeType": "IfStatement", "src": "3126:60:46", "trueBody": {"expression": {"id": 9779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9775, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9767, "src": "3147:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9777, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3156:15:46", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9826, "src": "3147:24:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 9778, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9769, "src": "3175:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3147:39:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9780, "nodeType": "ExpressionStatement", "src": "3147:39:46"}}, {"expression": {"id": 9785, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3196:32:46", "subExpression": {"expression": {"id": 9782, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9767, "src": "3196:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9784, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3205:21:46", "memberName": "totalFinishedPackages", "nodeType": "MemberAccess", "referencedDeclaration": 9836, "src": "3196:30:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9786, "nodeType": "ExpressionStatement", "src": "3196:32:46"}]}, "documentation": {"id": 9764, "nodeType": "StructuredDocumentation", "src": "2775:256:46", "text": " @notice Finishes package in project, budget left addded refunded back to project budget\n increases total number of finished packages\n @param project_ reference to Project struct\n @param budgetLeft_ amount of budget left"}, "id": 9788, "implemented": true, "kind": "function", "modifiers": [], "name": "_finishPackage", "nameLocation": "3045:14:46", "nodeType": "FunctionDefinition", "parameters": {"id": 9770, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9767, "mutability": "mutable", "name": "project_", "nameLocation": "3076:8:46", "nodeType": "VariableDeclaration", "scope": 9788, "src": "3060:24:46", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 9766, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9765, "name": "Project", "nameLocations": ["3060:7:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "3060:7:46"}, "referencedDeclaration": 9837, "src": "3060:7:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}, {"constant": false, "id": 9769, "mutability": "mutable", "name": "budgetLeft_", "nameLocation": "3094:11:46", "nodeType": "VariableDeclaration", "scope": 9788, "src": "3086:19:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9768, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3086:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3059:47:46"}, "returnParameters": {"id": 9771, "nodeType": "ParameterList", "parameters": [], "src": "3116:0:46"}, "scope": 9816, "src": "3036:199:46", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9814, "nodeType": "Block", "src": "3524:123:46", "statements": [{"expression": {"id": 9803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9799, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9792, "src": "3534:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9801, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3543:10:46", "memberName": "budgetPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9828, "src": "3534:19:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9802, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9796, "src": "3557:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3534:30:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9804, "nodeType": "ExpressionStatement", "src": "3534:30:46"}, {"expression": {"arguments": [{"id": 9810, "name": "receiver_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9794, "src": "3621:9:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 9811, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9796, "src": "3632:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 9806, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9792, "src": "3592:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9807, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3601:5:46", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 9822, "src": "3592:14:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 9805, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "3574:17:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 9808, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3574:33:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 9809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3608:12:46", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 487, "src": "3574:46:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,uint256)"}}, "id": 9812, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3574:66:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9813, "nodeType": "ExpressionStatement", "src": "3574:66:46"}]}, "documentation": {"id": 9789, "nodeType": "StructuredDocumentation", "src": "3241:163:46", "text": " @notice Pays from project's budget, increases budget paid\n @param project_ reference to Project struct\n @param amount_ amount to pay"}, "id": 9815, "implemented": true, "kind": "function", "modifiers": [], "name": "_pay", "nameLocation": "3418:4:46", "nodeType": "FunctionDefinition", "parameters": {"id": 9797, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9792, "mutability": "mutable", "name": "project_", "nameLocation": "3448:8:46", "nodeType": "VariableDeclaration", "scope": 9815, "src": "3432:24:46", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 9791, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9790, "name": "Project", "nameLocations": ["3432:7:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "3432:7:46"}, "referencedDeclaration": 9837, "src": "3432:7:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}, {"constant": false, "id": 9794, "mutability": "mutable", "name": "receiver_", "nameLocation": "3474:9:46", "nodeType": "VariableDeclaration", "scope": 9815, "src": "3466:17:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9793, "name": "address", "nodeType": "ElementaryTypeName", "src": "3466:7:46", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 9796, "mutability": "mutable", "name": "amount_", "nameLocation": "3501:7:46", "nodeType": "VariableDeclaration", "scope": 9815, "src": "3493:15:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9795, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3493:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3422:92:46"}, "returnParameters": {"id": 9798, "nodeType": "ParameterList", "parameters": [], "src": "3524:0:46"}, "scope": 9816, "src": "3409:238:46", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 9817, "src": "301:3348:46", "usedErrors": []}], "src": "32:3618:46"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/Structs.sol": {"AST": {"absolutePath": "contracts/libraries/Structs.sol", "exportedSymbols": {"Collaborator": [9885], "Observer": [9892], "Package": [9870], "Project": [9837]}, "id": 9893, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 9818, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:47"}, {"canonicalName": "Project", "id": 9837, "members": [{"constant": false, "id": 9820, "mutability": "mutable", "name": "initiator", "nameLocation": "86:9:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "78:17:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9819, "name": "address", "nodeType": "ElementaryTypeName", "src": "78:7:47", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 9822, "mutability": "mutable", "name": "token", "nameLocation": "109:5:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "101:13:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9821, "name": "address", "nodeType": "ElementaryTypeName", "src": "101:7:47", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 9824, "mutability": "mutable", "name": "budget", "nameLocation": "128:6:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "120:14:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9823, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "120:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9826, "mutability": "mutable", "name": "budgetAllocated", "nameLocation": "148:15:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "140:23:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9825, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "140:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9828, "mutability": "mutable", "name": "budgetPaid", "nameLocation": "177:10:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "169:18:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9827, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "169:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9830, "mutability": "mutable", "name": "timeCreated", "nameLocation": "201:11:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "193:19:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9829, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9832, "mutability": "mutable", "name": "timeFinished", "nameLocation": "226:12:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "218:20:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9831, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "218:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9834, "mutability": "mutable", "name": "totalPackages", "nameLocation": "252:13:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "244:21:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9833, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "244:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9836, "mutability": "mutable", "name": "totalFinishedPackages", "nameLocation": "279:21:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "271:29:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9835, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "271:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Project", "nameLocation": "64:7:47", "nodeType": "StructDefinition", "scope": 9893, "src": "57:246:47", "visibility": "public"}, {"canonicalName": "Package", "id": 9870, "members": [{"constant": false, "id": 9839, "mutability": "mutable", "name": "budget", "nameLocation": "334:6:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "326:14:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9838, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "326:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9841, "mutability": "mutable", "name": "budgetAllocated", "nameLocation": "354:15:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "346:23:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9840, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "346:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9843, "mutability": "mutable", "name": "budgetPaid", "nameLocation": "383:10:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "375:18:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9842, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "375:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9845, "mutability": "mutable", "name": "budgetObservers", "nameLocation": "407:15:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "399:23:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9844, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "399:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9847, "mutability": "mutable", "name": "budgetObserversPaid", "nameLocation": "436:19:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "428:27:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9846, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "428:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9849, "mutability": "mutable", "name": "bonus", "nameLocation": "469:5:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "461:13:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9848, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "461:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9851, "mutability": "mutable", "name": "bonusPaid", "nameLocation": "488:9:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "480:17:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9850, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "480:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9853, "mutability": "mutable", "name": "collaboratorsPaidBonus", "nameLocation": "511:22:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "503:30:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9852, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "503:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9855, "mutability": "mutable", "name": "timeCreated", "nameLocation": "547:11:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "539:19:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9854, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "539:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9857, "mutability": "mutable", "name": "timeFinished", "nameLocation": "572:12:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "564:20:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9856, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "564:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9859, "mutability": "mutable", "name": "totalObservers", "nameLocation": "598:14:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "590:22:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9858, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "590:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9861, "mutability": "mutable", "name": "totalCollaborators", "nameLocation": "626:18:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "618:26:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9860, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "618:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9863, "mutability": "mutable", "name": "collaboratorsLimit", "nameLocation": "658:18:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "650:26:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9862, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "650:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9865, "mutability": "mutable", "name": "approvedCollaborators", "nameLocation": "690:21:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "682:29:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9864, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9867, "mutability": "mutable", "name": "timeCanceled", "nameLocation": "725:12:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "717:20:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9866, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "717:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9869, "mutability": "mutable", "name": "isActive", "nameLocation": "748:8:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "743:13:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 9868, "name": "bool", "nodeType": "ElementaryTypeName", "src": "743:4:47", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "name": "Package", "nameLocation": "312:7:47", "nodeType": "StructDefinition", "scope": 9893, "src": "305:454:47", "visibility": "public"}, {"canonicalName": "Collaborator", "id": 9885, "members": [{"constant": false, "id": 9872, "mutability": "mutable", "name": "mgp", "nameLocation": "795:3:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "787:11:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9871, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "787:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9874, "mutability": "mutable", "name": "bonus", "nameLocation": "812:5:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "804:13:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9873, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "804:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9876, "mutability": "mutable", "name": "timeCreated", "nameLocation": "831:11:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "823:19:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9875, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "823:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9878, "mutability": "mutable", "name": "timeMgpApproved", "nameLocation": "856:15:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "848:23:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9877, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "848:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9880, "mutability": "mutable", "name": "timeMgpPaid", "nameLocation": "885:11:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "877:19:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9879, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "877:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9882, "mutability": "mutable", "name": "timeBonusPaid", "nameLocation": "910:13:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "902:21:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9881, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "902:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9884, "mutability": "mutable", "name": "isRemoved", "nameLocation": "934:9:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "929:14:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 9883, "name": "bool", "nodeType": "ElementaryTypeName", "src": "929:4:47", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "name": "Collaborator", "nameLocation": "768:12:47", "nodeType": "StructDefinition", "scope": 9893, "src": "761:185:47", "visibility": "public"}, {"canonicalName": "Observer", "id": 9892, "members": [{"constant": false, "id": 9887, "mutability": "mutable", "name": "timeCreated", "nameLocation": "978:11:47", "nodeType": "VariableDeclaration", "scope": 9892, "src": "970:19:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9886, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "970:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9889, "mutability": "mutable", "name": "timePaid", "nameLocation": "1003:8:47", "nodeType": "VariableDeclaration", "scope": 9892, "src": "995:16:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9888, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "995:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9891, "mutability": "mutable", "name": "isRemoved", "nameLocation": "1022:9:47", "nodeType": "VariableDeclaration", "scope": 9892, "src": "1017:14:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 9890, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1017:4:47", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "name": "Observer", "nameLocation": "955:8:47", "nodeType": "StructDefinition", "scope": 9893, "src": "948:86:47", "visibility": "public"}], "src": "32:1003:47"}}}, "sourceList": ["/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/access/Ownable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/proxy/Clones.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Address.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Context.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Strings.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ERC721Test.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/IOUToken.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/LearnToEarn.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/LearnToEarnTest.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/NFTReward.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ReBakedDAO.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/TokenFactory.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/ILearnToEarn.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/INFTReward.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/IReBakedDAO.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/ITokenFactory.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/CollaboratorLibrary.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/ObserverLibrary.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/PackageLibrary.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/ProjectLibrary.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/Structs.sol"], "contracts": {"/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\"},{\"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\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:ReentrancyGuardUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol:IERC20Upgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol:IERC20PermitUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol:SafeERC20Upgradeable": {"srcmap": "740:3847:5:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;740:3847:5;;;;;;;;;;;;;;;;;", "srcmap-runtime": "740:3847:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e165e128eb3b0861a743517b065f5f6c2595b678a8b664c05e6ca19f1306949664736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e165e128eb3b0861a743517b065f5f6c2595b678a8b664c05e6ca19f1306949664736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable": {"srcmap": "751:14424:6:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "751:14424:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1987:344;;;;;;:::i;:::-;;:::i;:::-;;;565:14:48;;558:22;540:41;;528:2;513:18;1987:344:6;;;;;;;;2931:98;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:48;;;1679:51;;1667:2;1652:18;4407:167:6;1533:203:48;3928:418:6;;;;;;:::i;:::-;;:::i;:::-;;5084:327;;;;;;:::i;:::-;;:::i;5477:179::-;;;;;;:::i;:::-;;:::i;2651:218::-;;;;;;:::i;:::-;;:::i;2390:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2848:25:48;;;2836:2;2821:18;2390:204:6;2702:177:48;3093:102:6;;;:::i;4641:153::-;;;;;;:::i;:::-;;:::i;5722:315::-;;;;;;:::i;:::-;;:::i;3261:276::-;;;;;;:::i;:::-;;:::i;4860:162::-;;;;;;:::i;:::-;;:::i;1987:344::-;2111:4;-1:-1:-1;;;;;;2146:51:6;;-1:-1:-1;;;2146:51:6;;:126;;-1:-1:-1;;;;;;;2213:59:6;;-1:-1:-1;;;2213:59:6;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:15;;;2288:36:6;2127:197;1987:344;-1:-1:-1;;1987:344:6:o;2931:98::-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:6;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:6;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:6;:2;-1:-1:-1;;;;;4076:11:6;;4068:57;;;;-1:-1:-1;;;4068:57:6;;5363:2:48;4068:57:6;;;5345:21:48;5402:2;5382:18;;;5375:30;5441:34;5421:18;;;5414:62;-1:-1:-1;;;5492:18:48;;;5485:31;5533:19;;4068:57:6;;;;;;;;;929:10:12;-1:-1:-1;;;;;4157:21:6;;;;:62;;-1:-1:-1;4182:37:6;4199:5;929:10:12;4860:162:6;:::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:6;;5765:2:48;4136:171:6;;;5747:21:48;5804:2;5784:18;;;5777:30;5843:34;5823:18;;;5816:62;5914:32;5894:18;;;5887:60;5964:19;;4136:171:6;5563:426:48;4136:171:6;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;5084:327::-;5273:41;929:10:12;5306:7:6;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:6;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;5477:179::-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;2651:218::-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:6;;2784:56;;;;-1:-1:-1;;;2784:56:6;;6611:2:48;2784:56:6;;;6593:21:48;6650:2;6630:18;;;6623:30;-1:-1:-1;;;6669:18:48;;;6662:54;6733:18;;2784:56:6;6409:348:48;2390:204:6;2462:7;-1:-1:-1;;;;;2489:19:6;;2481:73;;;;-1:-1:-1;;;2481:73:6;;6964:2:48;2481:73:6;;;6946:21:48;7003:2;6983:18;;;6976:30;7042:34;7022:18;;;7015:62;-1:-1:-1;;;7093:18:48;;;7086:39;7142:19;;2481:73:6;6762:405:48;2481:73:6;-1:-1:-1;;;;;;2571:16:6;;;;;:9;:16;;;;;;;2390:204::o;3093:102::-;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;929:10:12;4768:8:6;4778;4735:18;:52::i;:::-;4641:153;;:::o;5722:315::-;5890:41;929:10:12;5923:7:6;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:6;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;3261:276::-;3334:13;3359:23;3374:7;3359:14;:23::i;:::-;3393:21;3417:10;3855:9;;;;;;;;;-1:-1:-1;3855:9:6;;;3779:92;3417:10;3393:34;;3468:1;3450:7;3444:21;:25;:86;;;;;;;;;;;;;;;;;3496:7;3505:18;:7;:16;:18::i;:::-;3479:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3444:86;3437:93;3261:276;-1:-1:-1;;;3261:276:6:o;4860:162::-;-1:-1:-1;;;;;4980:25:6;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162::o;12173:133::-;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:6;12246:53;;;;-1:-1:-1;;;12246:53:6;;6611:2:48;12246:53:6;;;6593:21:48;6650:2;6630:18;;;6623:30;-1:-1:-1;;;6669:18:48;;;6662:54;6733:18;;12246:53:6;6409:348:48;12246:53:6;12173:133;:::o;11464:182::-;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:6;-1:-1:-1;;;;;11538:29:6;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:6;;;;;;;;;;;11464:182;;:::o;7789:272::-;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:6;:7;-1:-1:-1;;;;;7966:16:6;;:52;;;;7986:32;8003:5;8010:7;7986:16;:32::i;:::-;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:6;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:6;;7966:87;7958:96;7789:272;-1:-1:-1;;;;7789:272:6:o;10736:616::-;10901:4;-1:-1:-1;;;;;10863:42:6;:34;10889:7;10863:25;:34::i;:::-;-1:-1:-1;;;;;10863:42:6;;10855:92;;;;-1:-1:-1;;;10855:92:6;;7875:2:48;10855:92:6;;;7857:21:48;7914:2;7894:18;;;7887:30;7953:34;7933:18;;;7926:62;-1:-1:-1;;;8004:18:48;;;7997:35;8049:19;;10855:92:6;7673:401:48;10855:92:6;-1:-1:-1;;;;;10965:16:6;;10957:65;;;;-1:-1:-1;;;10957:65:6;;8281:2:48;10957:65:6;;;8263:21:48;8320:2;8300:18;;;8293:30;8359:34;8339:18;;;8332:62;-1:-1:-1;;;8410:18:48;;;8403:34;8454:19;;10957:65:6;8079:400:48;10957:65:6;11134:29;11151:1;11155:7;11134:8;:29::i;:::-;-1:-1:-1;;;;;11174:15:6;;;;;;:9;:15;;;;;:20;;11193:1;;11174:15;:20;;11193:1;;11174:20;:::i;:::-;;;;-1:-1:-1;;;;;;;11204:13:6;;;;;;:9;:13;;;;;:18;;11221:1;;11204:13;:18;;11221:1;;11204:18;:::i;:::-;;;;-1:-1:-1;;11232:16:6;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;11232:21:6;-1:-1:-1;;;;;11232:21:6;;;;;;;;;11269:27;;11232:16;;11269:27;;;;;;;3998:348;3928:418;;:::o;11782:307::-;11932:8;-1:-1:-1;;;;;11923:17:6;:5;-1:-1:-1;;;;;11923:17:6;;11915:55;;;;-1:-1:-1;;;11915:55:6;;9081:2:48;11915:55:6;;;9063:21:48;9120:2;9100:18;;;9093:30;9159:27;9139:18;;;9132:55;9204:18;;11915:55:6;8879:349:48;11915:55:6;-1:-1:-1;;;;;11980:25:6;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:6;;;;;;;;;;12041:41;;540::48;;;12041::6;;513:18:48;12041:41:6;;;;;;;11782:307;;;:::o;6898:305::-;7048:28;7058:4;7064:2;7068:7;7048:9;:28::i;:::-;7094:47;7117:4;7123:2;7127:7;7136:4;7094:22;:47::i;:::-;7086:110;;;;-1:-1:-1;;;7086:110:6;;;;;;;:::i;403:703:13:-;459:13;676:5;685:1;676:10;672:51;;-1:-1:-1;;702:10:13;;;;;;;;;;;;-1:-1:-1;;;702:10:13;;;;;403:703::o;672:51::-;747:5;732:12;786:75;793:9;;786:75;;818:8;;;;:::i;:::-;;-1:-1:-1;840:10:13;;-1:-1:-1;848:2:13;840:10;;:::i;:::-;;;786:75;;;870:19;902:6;892:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;892:17:13;;870:39;;919:150;926:10;;919:150;;952:11;962:1;952:11;;:::i;:::-;;-1:-1:-1;1020:10:13;1028:2;1020:5;:10;:::i;:::-;1007:24;;:2;:24;:::i;:::-;994:39;;977:6;984;977:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;977:56:13;;;;;;;;-1:-1:-1;1047:11:13;1056:2;1047:11;;:::i;:::-;;;919:150;;12858:853:6;13007:4;-1:-1:-1;;;;;13027:13:6;;1476:19:11;:23;13023:682:6;;13062:82;;-1:-1:-1;;;13062:82:6;;-1:-1:-1;;;;;13062:47:6;;;;;:82;;929:10:12;;13124:4:6;;13130:7;;13139:4;;13062:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:6;;;;;;;;-1:-1:-1;;13062:82:6;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:6;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:6;-1:-1:-1;;;13194:62:6;;-1:-1:-1;13187:69:6;;13023:682;-1:-1:-1;13690:4:6;12858:853;;;;;;:::o;14:131:48:-;-1:-1:-1;;;;;;88:32:48;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:48;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:48;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:48:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:48;;1348:180;-1:-1:-1;1348:180:48:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:48;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:48:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:186::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2662:29;2681:9;2662:29;:::i;2884:347::-;2949:6;2957;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3049:29;3068:9;3049:29;:::i;:::-;3039:39;;3128:2;3117:9;3113:18;3100:32;3175:5;3168:13;3161:21;3154:5;3151:32;3141:60;;3197:1;3194;3187:12;3141:60;3220:5;3210:15;;;2884:347;;;;;:::o;3236:127::-;3297:10;3292:3;3288:20;3285:1;3278:31;3328:4;3325:1;3318:15;3352:4;3349:1;3342:15;3368:1138;3463:6;3471;3479;3487;3540:3;3528:9;3519:7;3515:23;3511:33;3508:53;;;3557:1;3554;3547:12;3508:53;3580:29;3599:9;3580:29;:::i;:::-;3570:39;;3628:38;3662:2;3651:9;3647:18;3628:38;:::i;:::-;3618:48;;3713:2;3702:9;3698:18;3685:32;3675:42;;3768:2;3757:9;3753:18;3740:32;3791:18;3832:2;3824:6;3821:14;3818:34;;;3848:1;3845;3838:12;3818:34;3886:6;3875:9;3871:22;3861:32;;3931:7;3924:4;3920:2;3916:13;3912:27;3902:55;;3953:1;3950;3943:12;3902:55;3989:2;3976:16;4011:2;4007;4004:10;4001:36;;;4017:18;;:::i;:::-;4092:2;4086:9;4060:2;4146:13;;-1:-1:-1;;4142:22:48;;;4166:2;4138:31;4134:40;4122:53;;;4190:18;;;4210:22;;;4187:46;4184:72;;;4236:18;;:::i;:::-;4276:10;4272:2;4265:22;4311:2;4303:6;4296:18;4351:7;4346:2;4341;4337;4333:11;4329:20;4326:33;4323:53;;;4372:1;4369;4362:12;4323:53;4428:2;4423;4419;4415:11;4410:2;4402:6;4398:15;4385:46;4473:1;4468:2;4463;4455:6;4451:15;4447:24;4440:35;4494:6;4484:16;;;;;;;3368:1138;;;;;;;:::o;4511:260::-;4579:6;4587;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4679:29;4698:9;4679:29;:::i;:::-;4669:39;;4727:38;4761:2;4750:9;4746:18;4727:38;:::i;:::-;4717:48;;4511:260;;;;;:::o;4776:380::-;4855:1;4851:12;;;;4898;;;4919:61;;4973:4;4965:6;4961:17;4951:27;;4919:61;5026:2;5018:6;5015:14;4995:18;4992:38;4989:161;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;4989:161;;4776:380;;;:::o;5994:410::-;6196:2;6178:21;;;6235:2;6215:18;;;6208:30;6274:34;6269:2;6254:18;;6247:62;-1:-1:-1;;;6340:2:48;6325:18;;6318:44;6394:3;6379:19;;5994:410::o;7172:496::-;7351:3;7389:6;7383:13;7405:66;7464:6;7459:3;7452:4;7444:6;7440:17;7405:66;:::i;:::-;7534:13;;7493:16;;;;7556:70;7534:13;7493:16;7603:4;7591:17;;7556:70;:::i;:::-;7642:20;;7172:496;-1:-1:-1;;;;7172:496:48:o;8484:127::-;8545:10;8540:3;8536:20;8533:1;8526:31;8576:4;8573:1;8566:15;8600:4;8597:1;8590:15;8616:128;8683:9;;;8704:11;;;8701:37;;;8718:18;;:::i;8749:125::-;8814:9;;;8835:10;;;8832:36;;;8848:18;;:::i;9233:414::-;9435:2;9417:21;;;9474:2;9454:18;;;9447:30;9513:34;9508:2;9493:18;;9486:62;-1:-1:-1;;;9579:2:48;9564:18;;9557:48;9637:3;9622:19;;9233:414::o;9652:135::-;9691:3;9712:17;;;9709:43;;9732:18;;:::i;:::-;-1:-1:-1;9779:1:48;9768:13;;9652:135::o;9792:127::-;9853:10;9848:3;9844:20;9841:1;9834:31;9884:4;9881:1;9874:15;9908:4;9905:1;9898:15;9924:120;9964:1;9990;9980:35;;9995:18;;:::i;:::-;-1:-1:-1;10029:9:48;;9924:120::o;10049:112::-;10081:1;10107;10097:35;;10112:18;;:::i;:::-;-1:-1:-1;10146:9:48;;10049:112::o;10166:127::-;10227:10;10222:3;10218:20;10215:1;10208:31;10258:4;10255:1;10248:15;10282:4;10279:1;10272:15;10298:489;-1:-1:-1;;;;;10567:15:48;;;10549:34;;10619:15;;10614:2;10599:18;;10592:43;10666:2;10651:18;;10644:34;;;10714:3;10709:2;10694:18;;10687:31;;;10492:4;;10735:46;;10761:19;;10753:6;10735:46;:::i;:::-;10727:54;10298:489;-1:-1:-1;;;;;;10298:489:48:o;10792:249::-;10861:6;10914:2;10902:9;10893:7;10889:23;10885:32;10882:52;;;10930:1;10927;10920:12;10882:52;10962:9;10956:16;10981:30;11005:5;10981:30;:::i", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b5061110b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c32565b6101ff565b60405190151581526020015b60405180910390f35b610104610251565b6040516100f39190610c9f565b61012461011f366004610cb2565b6102e3565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610ce7565b61030a565b005b61014f61015f366004610d11565b610424565b61014f610172366004610d11565b610455565b610124610185366004610cb2565b610470565b61019d610198366004610d4d565b6104d0565b6040519081526020016100f3565b610104610556565b61014f6101c1366004610d68565b610565565b61014f6101d4366004610dba565b610574565b6101046101e7366004610cb2565b6105ac565b6100e76101fa366004610e96565b610620565b60006001600160e01b031982166380ac58cd60e01b148061023057506001600160e01b03198216635b5e139f60e01b145b8061024b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461026090610ec9565b80601f016020809104026020016040519081016040528092919081815260200182805461028c90610ec9565b80156102d95780601f106102ae576101008083540402835291602001916102d9565b820191906000526020600020905b8154815290600101906020018083116102bc57829003601f168201915b5050505050905090565b60006102ee8261064e565b506000908152606960205260409020546001600160a01b031690565b600061031582610470565b9050806001600160a01b0316836001600160a01b0316036103875760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103a357506103a38133610620565b6104155760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161037e565b61041f83836106b0565b505050565b61042e338261071e565b61044a5760405162461bcd60e51b815260040161037e90610f03565b61041f83838361077d565b61041f83838360405180602001604052806000815250610574565b6000818152606760205260408120546001600160a01b03168061024b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b60006001600160a01b03821661053a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161037e565b506001600160a01b031660009081526068602052604090205490565b60606066805461026090610ec9565b610570338383610919565b5050565b61057e338361071e565b61059a5760405162461bcd60e51b815260040161037e90610f03565b6105a6848484846109e7565b50505050565b60606105b78261064e565b60006105ce60408051602081019091526000815290565b905060008151116105ee5760405180602001604052806000815250610619565b806105f884610a1a565b604051602001610609929190610f51565b6040516020818303038152906040525b9392505050565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b6000818152606760205260409020546001600160a01b03166106ad5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b50565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e582610470565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072a83610470565b9050806001600160a01b0316846001600160a01b0316148061075157506107518185610620565b806107755750836001600160a01b031661076a846102e3565b6001600160a01b0316145b949350505050565b826001600160a01b031661079082610470565b6001600160a01b0316146107f45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161037e565b6001600160a01b0382166108565760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161037e565b6108616000826106b0565b6001600160a01b038316600090815260686020526040812080546001929061088a908490610f96565b90915550506001600160a01b03821660009081526068602052604081208054600192906108b8908490610fa9565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361097a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161037e565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109f284848461077d565b6109fe84848484610b1b565b6105a65760405162461bcd60e51b815260040161037e90610fbc565b606081600003610a415750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a6b5780610a558161100e565b9150610a649050600a8361103d565b9150610a45565b60008167ffffffffffffffff811115610a8657610a86610da4565b6040519080825280601f01601f191660200182016040528015610ab0576020820181803683370190505b5090505b841561077557610ac5600183610f96565b9150610ad2600a86611051565b610add906030610fa9565b60f81b818381518110610af257610af2611065565b60200101906001600160f81b031916908160001a905350610b14600a8661103d565b9450610ab4565b60006001600160a01b0384163b15610c1157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b5f90339089908890889060040161107b565b6020604051808303816000875af1925050508015610b9a575060408051601f3d908101601f19168201909252610b97918101906110b8565b60015b610bf7573d808015610bc8576040519150601f19603f3d011682016040523d82523d6000602084013e610bcd565b606091505b508051600003610bef5760405162461bcd60e51b815260040161037e90610fbc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610775565b506001949350505050565b6001600160e01b0319811681146106ad57600080fd5b600060208284031215610c4457600080fd5b813561061981610c1c565b60005b83811015610c6a578181015183820152602001610c52565b50506000910152565b60008151808452610c8b816020860160208601610c4f565b601f01601f19169290920160200192915050565b6020815260006106196020830184610c73565b600060208284031215610cc457600080fd5b5035919050565b80356001600160a01b0381168114610ce257600080fd5b919050565b60008060408385031215610cfa57600080fd5b610d0383610ccb565b946020939093013593505050565b600080600060608486031215610d2657600080fd5b610d2f84610ccb565b9250610d3d60208501610ccb565b9150604084013590509250925092565b600060208284031215610d5f57600080fd5b61061982610ccb565b60008060408385031215610d7b57600080fd5b610d8483610ccb565b915060208301358015158114610d9957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dd057600080fd5b610dd985610ccb565b9350610de760208601610ccb565b925060408501359150606085013567ffffffffffffffff80821115610e0b57600080fd5b818701915087601f830112610e1f57600080fd5b813581811115610e3157610e31610da4565b604051601f8201601f19908116603f01168101908382118183101715610e5957610e59610da4565b816040528281528a6020848701011115610e7257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ea957600080fd5b610eb283610ccb565b9150610ec060208401610ccb565b90509250929050565b600181811c90821680610edd57607f821691505b602082108103610efd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f63818460208801610c4f565b835190830190610f77818360208801610c4f565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561024b5761024b610f80565b8082018082111561024b5761024b610f80565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006001820161102057611020610f80565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261104c5761104c611027565b500490565b60008261106057611060611027565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110ae90830184610c73565b9695505050505050565b6000602082840312156110ca57600080fd5b815161061981610c1c56fea264697066735822122026d21cd25ee907011cf5081bee77041a3e0d54377ffa5bce3d94ea3783baa26464736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c32565b6101ff565b60405190151581526020015b60405180910390f35b610104610251565b6040516100f39190610c9f565b61012461011f366004610cb2565b6102e3565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610ce7565b61030a565b005b61014f61015f366004610d11565b610424565b61014f610172366004610d11565b610455565b610124610185366004610cb2565b610470565b61019d610198366004610d4d565b6104d0565b6040519081526020016100f3565b610104610556565b61014f6101c1366004610d68565b610565565b61014f6101d4366004610dba565b610574565b6101046101e7366004610cb2565b6105ac565b6100e76101fa366004610e96565b610620565b60006001600160e01b031982166380ac58cd60e01b148061023057506001600160e01b03198216635b5e139f60e01b145b8061024b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461026090610ec9565b80601f016020809104026020016040519081016040528092919081815260200182805461028c90610ec9565b80156102d95780601f106102ae576101008083540402835291602001916102d9565b820191906000526020600020905b8154815290600101906020018083116102bc57829003601f168201915b5050505050905090565b60006102ee8261064e565b506000908152606960205260409020546001600160a01b031690565b600061031582610470565b9050806001600160a01b0316836001600160a01b0316036103875760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103a357506103a38133610620565b6104155760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161037e565b61041f83836106b0565b505050565b61042e338261071e565b61044a5760405162461bcd60e51b815260040161037e90610f03565b61041f83838361077d565b61041f83838360405180602001604052806000815250610574565b6000818152606760205260408120546001600160a01b03168061024b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b60006001600160a01b03821661053a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161037e565b506001600160a01b031660009081526068602052604090205490565b60606066805461026090610ec9565b610570338383610919565b5050565b61057e338361071e565b61059a5760405162461bcd60e51b815260040161037e90610f03565b6105a6848484846109e7565b50505050565b60606105b78261064e565b60006105ce60408051602081019091526000815290565b905060008151116105ee5760405180602001604052806000815250610619565b806105f884610a1a565b604051602001610609929190610f51565b6040516020818303038152906040525b9392505050565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b6000818152606760205260409020546001600160a01b03166106ad5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b50565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e582610470565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072a83610470565b9050806001600160a01b0316846001600160a01b0316148061075157506107518185610620565b806107755750836001600160a01b031661076a846102e3565b6001600160a01b0316145b949350505050565b826001600160a01b031661079082610470565b6001600160a01b0316146107f45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161037e565b6001600160a01b0382166108565760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161037e565b6108616000826106b0565b6001600160a01b038316600090815260686020526040812080546001929061088a908490610f96565b90915550506001600160a01b03821660009081526068602052604081208054600192906108b8908490610fa9565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361097a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161037e565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109f284848461077d565b6109fe84848484610b1b565b6105a65760405162461bcd60e51b815260040161037e90610fbc565b606081600003610a415750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a6b5780610a558161100e565b9150610a649050600a8361103d565b9150610a45565b60008167ffffffffffffffff811115610a8657610a86610da4565b6040519080825280601f01601f191660200182016040528015610ab0576020820181803683370190505b5090505b841561077557610ac5600183610f96565b9150610ad2600a86611051565b610add906030610fa9565b60f81b818381518110610af257610af2611065565b60200101906001600160f81b031916908160001a905350610b14600a8661103d565b9450610ab4565b60006001600160a01b0384163b15610c1157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b5f90339089908890889060040161107b565b6020604051808303816000875af1925050508015610b9a575060408051601f3d908101601f19168201909252610b97918101906110b8565b60015b610bf7573d808015610bc8576040519150601f19603f3d011682016040523d82523d6000602084013e610bcd565b606091505b508051600003610bef5760405162461bcd60e51b815260040161037e90610fbc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610775565b506001949350505050565b6001600160e01b0319811681146106ad57600080fd5b600060208284031215610c4457600080fd5b813561061981610c1c565b60005b83811015610c6a578181015183820152602001610c52565b50506000910152565b60008151808452610c8b816020860160208601610c4f565b601f01601f19169290920160200192915050565b6020815260006106196020830184610c73565b600060208284031215610cc457600080fd5b5035919050565b80356001600160a01b0381168114610ce257600080fd5b919050565b60008060408385031215610cfa57600080fd5b610d0383610ccb565b946020939093013593505050565b600080600060608486031215610d2657600080fd5b610d2f84610ccb565b9250610d3d60208501610ccb565b9150604084013590509250925092565b600060208284031215610d5f57600080fd5b61061982610ccb565b60008060408385031215610d7b57600080fd5b610d8483610ccb565b915060208301358015158114610d9957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dd057600080fd5b610dd985610ccb565b9350610de760208601610ccb565b925060408501359150606085013567ffffffffffffffff80821115610e0b57600080fd5b818701915087601f830112610e1f57600080fd5b813581811115610e3157610e31610da4565b604051601f8201601f19908116603f01168101908382118183101715610e5957610e59610da4565b816040528281528a6020848701011115610e7257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ea957600080fd5b610eb283610ccb565b9150610ec060208401610ccb565b90509250929050565b600181811c90821680610edd57607f821691505b602082108103610efd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f63818460208801610c4f565b835190830190610f77818360208801610c4f565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561024b5761024b610f80565b8082018082111561024b5761024b610f80565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006001820161102057611020610f80565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261104c5761104c611027565b500490565b60008261106057611060611027565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110ae90830184610c73565b9695505050505050565b6000602082840312156110ca57600080fd5b815161061981610c1c56fea264697066735822122026d21cd25ee907011cf5081bee77041a3e0d54377ffa5bce3d94ea3783baa26464736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol:IERC721ReceiverUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol:IERC721Upgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol:IERC721MetadataUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol:AddressUpgradeable": {"srcmap": "194:7172:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:7172:11;;;;;;;;;;;;;;;;;", "srcmap-runtime": "194:7172:11:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b8450de9442c0887020110ff364de8fdab82c4ec019c93283f4d51585d7f21f664736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b8450de9442c0887020110ff364de8fdab82c4ec019c93283f4d51585d7f21f664736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol:StringsUpgradeable": {"srcmap": "161:2246:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;161:2246:13;;;;;;;;;;;;;;;;;", "srcmap-runtime": "161:2246:13:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122067d9896cecbf745108d0d8c3d2f705d23ad36aac36bc943cabe3bb8c18e4b68064736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122067d9896cecbf745108d0d8c3d2f705d23ad36aac36bc943cabe3bb8c18e4b68064736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol:ERC165CheckerUpgradeable": {"srcmap": "460:4447:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;460:4447:14;;;;;;;;;;;;;;;;;", "srcmap-runtime": "460:4447:14:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203803f371ecd16ee7c70312f2eb0fda83e1ef503ba1894e6be72c873168ea12da64736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203803f371ecd16ee7c70312f2eb0fda83e1ef503ba1894e6be72c873168ea12da64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol:IERC165Upgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/access/Ownable.sol:Ownable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"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\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/proxy/Clones.sol:Clones": {"srcmap": "755:2946:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;755:2946:18;;;;;;;;;;;;;;;;;", "srcmap-runtime": "755:2946:18:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cdf79bd7fb0da099da785a4981880b8ed5d56c34b4f73816d8a51bfcad39081a64736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cdf79bd7fb0da099da785a4981880b8ed5d56c34b4f73816d8a51bfcad39081a64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20": {"srcmap": "1403:11214:19:-:0;;;1978:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2044:5;:13;2052:5;2044;:13;:::i;:::-;-1:-1:-1;2067:7:19;:17;2077:7;2067;:17;:::i;:::-;;1978:113;;1403:11214;;14:127:48;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:48;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:48;;;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:48: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:48;;;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:48;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:48;;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:48;;;3992:26;3943:89;-1:-1:-1;;2747:1:48;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:48;;;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:48;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:48;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:48:o;:::-;1403:11214:19;;;;;;", "srcmap-runtime": "1403:11214:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:48;;1162:22;1144:41;;1132:2;1117:18;4433:197:19;1004:187:48;3244:106:19;3331:12;;3244:106;;;1342:25:48;;;1330:2;1315:18;3244:106:19;1196:177:48;5192:286:19;;;;;;:::i;:::-;;:::i;3093:91::-;;;3175:2;1853:36:48;;1841:2;1826:18;3093:91:19;1711:184:48;5873:234:19;;;;;;:::i;:::-;;:::i;3408:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3508:18:19;3482:7;3508:18;;;;;;;;;;;;3408:125;2367:102;;;:::i;6594:427::-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;;:::i;2156:98::-;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:28;4570:32:19;719:10:28;4586:7:19;4595:6;4570:8;:32::i;:::-;4619:4;4612:11;;;4433:197;;;;;:::o;5192:286::-;5319:4;719:10:28;5375:38:19;5391:4;719:10:28;5406:6:19;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:19;;5192:286;-1:-1:-1;;;;5192:286:19:o;5873:234::-;5961:4;719:10:28;6015:64:19;719:10:28;6031:7:19;6068:10;6040:25;719:10:28;6031:7:19;6040:9;:25::i;:::-;:38;;;;:::i;:::-;6015:8;:64::i;2367:102::-;2423:13;2455:7;2448:14;;;;;:::i;6594:427::-;6687:4;719:10:28;6687:4:19;6768:25;719:10:28;6785:7:19;6768:9;:25::i;:::-;6741:52;;6831:15;6811:16;:35;;6803:85;;;;-1:-1:-1;;;6803:85:19;;3170:2:48;6803:85:19;;;3152:21:48;3209:2;3189:18;;;3182:30;3248:34;3228:18;;;3221:62;-1:-1:-1;;;3299:18:48;;;3292:35;3344:19;;6803:85:19;;;;;;;;;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;3729:189::-;3808:4;719:10:28;3862:28:19;719:10:28;3879:2:19;3883:6;3862:9;:28::i;3976:149::-;-1:-1:-1;;;;;4091:18:19;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149::o;10110:370::-;-1:-1:-1;;;;;10241:19:19;;10233:68;;;;-1:-1:-1;;;10233:68:19;;3576:2:48;10233:68:19;;;3558:21:48;3615:2;3595:18;;;3588:30;3654:34;3634:18;;;3627:62;-1:-1:-1;;;3705:18:48;;;3698:34;3749:19;;10233:68:19;3374:400:48;10233:68:19;-1:-1:-1;;;;;10319:21:19;;10311:68;;;;-1:-1:-1;;;10311:68:19;;3981:2:48;10311:68:19;;;3963:21:48;4020:2;4000:18;;;3993:30;4059:34;4039:18;;;4032:62;-1:-1:-1;;;4110:18:48;;;4103:32;4152:19;;10311:68:19;3779:398:48;10311:68:19;-1:-1:-1;;;;;10390:18:19;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10441:32;;1342:25:48;;;10441:32:19;;1315:18:48;10441:32:19;;;;;;;10110:370;;;:::o;10761:441::-;10891:24;10918:25;10928:5;10935:7;10918:9;:25::i;:::-;10891:52;;-1:-1:-1;;10957:16:19;:37;10953:243;;11038:6;11018:16;:26;;11010:68;;;;-1:-1:-1;;;11010:68:19;;4384:2:48;11010:68:19;;;4366:21:48;4423:2;4403:18;;;4396:30;4462:31;4442:18;;;4435:59;4511:18;;11010:68:19;4182:353:48;11010:68:19;11120:51;11129:5;11136:7;11164:6;11145:16;:25;11120:8;:51::i;:::-;10881:321;10761:441;;;:::o;7475:651::-;-1:-1:-1;;;;;7601:18:19;;7593:68;;;;-1:-1:-1;;;7593:68:19;;4742:2:48;7593:68:19;;;4724:21:48;4781:2;4761:18;;;4754:30;4820:34;4800:18;;;4793:62;-1:-1:-1;;;4871:18:48;;;4864:35;4916:19;;7593:68:19;4540:401:48;7593:68:19;-1:-1:-1;;;;;7679:16:19;;7671:64;;;;-1:-1:-1;;;7671:64:19;;5148:2:48;7671:64:19;;;5130:21:48;5187:2;5167:18;;;5160:30;5226:34;5206:18;;;5199:62;-1:-1:-1;;;5277:18:48;;;5270:33;5320:19;;7671:64:19;4946:399:48;7671:64:19;-1:-1:-1;;;;;7817:15:19;;7795:19;7817:15;;;;;;;;;;;7850:21;;;;7842:72;;;;-1:-1:-1;;;7842:72:19;;5552:2:48;7842:72:19;;;5534:21:48;5591:2;5571:18;;;5564:30;5630:34;5610:18;;;5603:62;-1:-1:-1;;;5681:18:48;;;5674:36;5727:19;;7842:72:19;5350:402:48;7842:72:19;-1:-1:-1;;;;;7948:15:19;;;:9;:15;;;;;;;;;;;7966:20;;;7948:38;;8006:13;;;;;;;;:23;;7980:6;;7948:9;8006:23;;7980:6;;8006:23;:::i;:::-;;;;;;;;8060:2;-1:-1:-1;;;;;8045:26:19;8054:4;-1:-1:-1;;;;;8045:26:19;;8064:6;8045:26;;;;1342:25:48;;1330:2;1315:18;;1196:177;8045:26:19;;;;;;;;8082:37;11786:121;14:548:48;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:48;;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:48: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:48: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:222::-;2806:9;;;2827:10;;;2824:133;;;2879:10;2874:3;2870:20;2867:1;2860:31;2914:4;2911:1;2904:15;2942:4;2939:1;2932:15", "abi": "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"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\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b5060405162000b7038038062000b7083398101604081905262000034916200011f565b600362000042838262000218565b50600462000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61087c80620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c6565b60405180910390f35b6100df6100da366004610730565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075a565b61024c565b604051601281526020016100c3565b6100df610131366004610730565b610270565b6100f3610144366004610796565b6001600160a01b031660009081526020819052604090205490565b6100b6610292565b6100df610175366004610730565b6102a1565b6100df610188366004610730565b610321565b6100f361019b3660046107b8565b61032f565b6060600380546101af906107eb565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107eb565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b60003361024081858561035a565b60019150505b92915050565b60003361025a85828561047e565b6102658585856104f8565b506001949350505050565b600033610240818585610283838361032f565b61028d9190610825565b61035a565b6060600480546101af906107eb565b600033816102af828661032f565b9050838110156103145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610265828686840361035a565b6000336102408185856104f8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103bc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161030b565b6001600160a01b03821661041d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161030b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061048a848461032f565b905060001981146104f257818110156104e55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161030b565b6104f2848484840361035a565b50505050565b6001600160a01b03831661055c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161030b565b6001600160a01b0382166105be5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161030b565b6001600160a01b038316600090815260208190526040902054818110156106365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161030b565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066d908490610825565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b991815260200190565b60405180910390a36104f2565b600060208083528351808285015260005b818110156106f3578581018301518582016040015282016106d7565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461072b57600080fd5b919050565b6000806040838503121561074357600080fd5b61074c83610714565b946020939093013593505050565b60008060006060848603121561076f57600080fd5b61077884610714565b925061078660208501610714565b9150604084013590509250925092565b6000602082840312156107a857600080fd5b6107b182610714565b9392505050565b600080604083850312156107cb57600080fd5b6107d483610714565b91506107e260208401610714565b90509250929050565b600181811c908216806107ff57607f821691505b60208210810361081f57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024657634e487b7160e01b600052601160045260246000fdfea26469706673582212201977af5c3ad321f46487af4dfb1fbb65756e8cfe8ad8a2caeb1eed2b7a5ec59d64736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c6565b60405180910390f35b6100df6100da366004610730565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075a565b61024c565b604051601281526020016100c3565b6100df610131366004610730565b610270565b6100f3610144366004610796565b6001600160a01b031660009081526020819052604090205490565b6100b6610292565b6100df610175366004610730565b6102a1565b6100df610188366004610730565b610321565b6100f361019b3660046107b8565b61032f565b6060600380546101af906107eb565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107eb565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b60003361024081858561035a565b60019150505b92915050565b60003361025a85828561047e565b6102658585856104f8565b506001949350505050565b600033610240818585610283838361032f565b61028d9190610825565b61035a565b6060600480546101af906107eb565b600033816102af828661032f565b9050838110156103145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610265828686840361035a565b6000336102408185856104f8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103bc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161030b565b6001600160a01b03821661041d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161030b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061048a848461032f565b905060001981146104f257818110156104e55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161030b565b6104f2848484840361035a565b50505050565b6001600160a01b03831661055c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161030b565b6001600160a01b0382166105be5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161030b565b6001600160a01b038316600090815260208190526040902054818110156106365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161030b565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066d908490610825565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b991815260200190565b60405180910390a36104f2565b600060208083528351808285015260005b818110156106f3578581018301518582016040015282016106d7565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461072b57600080fd5b919050565b6000806040838503121561074357600080fd5b61074c83610714565b946020939093013593505050565b60008060006060848603121561076f57600080fd5b61077884610714565b925061078660208501610714565b9150604084013590509250925092565b6000602082840312156107a857600080fd5b6107b182610714565b9392505050565b600080604083850312156107cb57600080fd5b6107d483610714565b91506107e260208401610714565b90509250929050565b600181811c908216806107ff57607f821691505b60208210810361081f57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024657634e487b7160e01b600052601160045260246000fdfea26469706673582212201977af5c3ad321f46487af4dfb1fbb65756e8cfe8ad8a2caeb1eed2b7a5ec59d64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"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\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721": {"srcmap": "628:13718:22:-:0;;;1390:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1456:5;:13;1464:5;1456;:13;:::i;:::-;-1:-1:-1;1479:7:22;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;628:13718;;14:127:48;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:48;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:48;;;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:48: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:48;;;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:48;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:48;;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:48;;;3992:26;3943:89;-1:-1:-1;;2747:1:48;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:48;;;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:48;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:48;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:48:o;:::-;628:13718:22;;;;;;", "srcmap-runtime": "628:13718:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300;;;;;;:::i;:::-;;:::i;:::-;;;565:14:48;;558:22;540:41;;528:2;513:18;1570:300:22;;;;;;;;2470:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:48;;;1679:51;;1667:2;1652:18;3935:167:22;1533:203:48;3467:407:22;;;;;;:::i;:::-;;:::i;:::-;;4612:327;;;;;;:::i;:::-;;:::i;5005:179::-;;;;;;:::i;:::-;;:::i;2190:218::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2848:25:48;;;2836:2;2821:18;1929:204:22;2702:177:48;2632:102:22;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5250:315::-;;;;;;:::i;:::-;;:::i;2800:276::-;;;;;;:::i;:::-;;:::i;4388:162::-;;;;;;:::i;:::-;;:::i;1570:300::-;1672:4;-1:-1:-1;;;;;;1707:40:22;;-1:-1:-1;;;1707:40:22;;:104;;-1:-1:-1;;;;;;;1763:48:22;;-1:-1:-1;;;1763:48:22;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:30;;;1827:36:22;1688:175;1570:300;-1:-1:-1;;1570:300:22:o;2470:98::-;2524:13;2556:5;2549:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2470:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:22;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:22;;3935:167::o;3467:407::-;3547:13;3563:23;3578:7;3563:14;:23::i;:::-;3547:39;;3610:5;-1:-1:-1;;;;;3604:11:22;:2;-1:-1:-1;;;;;3604:11:22;;3596:57;;;;-1:-1:-1;;;3596:57:22;;5363:2:48;3596:57:22;;;5345:21:48;5402:2;5382:18;;;5375:30;5441:34;5421:18;;;5414:62;-1:-1:-1;;;5492:18:48;;;5485:31;5533:19;;3596:57:22;;;;;;;;;719:10:28;-1:-1:-1;;;;;3685:21:22;;;;:62;;-1:-1:-1;3710:37:22;3727:5;719:10:28;4388:162:22;:::i;3710:37::-;3664:171;;;;-1:-1:-1;;;3664:171:22;;5765:2:48;3664:171:22;;;5747:21:48;5804:2;5784:18;;;5777:30;5843:34;5823:18;;;5816:62;5914:32;5894:18;;;5887:60;5964:19;;3664:171:22;5563:426:48;3664:171:22;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3537:337;3467:407;;:::o;4612:327::-;4801:41;719:10:28;4834:7:22;4801:18;:41::i;:::-;4793:100;;;;-1:-1:-1;;;4793:100:22;;;;;;;:::i;:::-;4904:28;4914:4;4920:2;4924:7;4904:9;:28::i;5005:179::-;5138:39;5155:4;5161:2;5165:7;5138:39;;;;;;;;;;;;:16;:39::i;2190:218::-;2262:7;2297:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2297:16:22;;2323:56;;;;-1:-1:-1;;;2323:56:22;;6611:2:48;2323:56:22;;;6593:21:48;6650:2;6630:18;;;6623:30;-1:-1:-1;;;6669:18:48;;;6662:54;6733:18;;2323:56:22;6409:348:48;1929:204:22;2001:7;-1:-1:-1;;;;;2028:19:22;;2020:73;;;;-1:-1:-1;;;2020:73:22;;6964:2:48;2020:73:22;;;6946:21:48;7003:2;6983:18;;;6976:30;7042:34;7022:18;;;7015:62;-1:-1:-1;;;7093:18:48;;;7086:39;7142:19;;2020:73:22;6762:405:48;2020:73:22;-1:-1:-1;;;;;;2110:16:22;;;;;:9;:16;;;;;;;1929:204::o;2632:102::-;2688:13;2720:7;2713:14;;;;;:::i;4169:153::-;4263:52;719:10:28;4296:8:22;4306;4263:18;:52::i;:::-;4169:153;;:::o;5250:315::-;5418:41;719:10:28;5451:7:22;5418:18;:41::i;:::-;5410:100;;;;-1:-1:-1;;;5410:100:22;;;;;;;:::i;:::-;5520:38;5534:4;5540:2;5544:7;5553:4;5520:13;:38::i;:::-;5250:315;;;;:::o;2800:276::-;2873:13;2898:23;2913:7;2898:14;:23::i;:::-;2932:21;2956:10;3394:9;;;;;;;;;-1:-1:-1;3394:9:22;;;3318:92;2956:10;2932:34;;3007:1;2989:7;2983:21;:25;:86;;;;;;;;;;;;;;;;;3035:7;3044:18;:7;:16;:18::i;:::-;3018:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2983:86;2976:93;2800:276;-1:-1:-1;;;2800:276:22:o;4388:162::-;-1:-1:-1;;;;;4508:25:22;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162::o;11657:133::-;7099:4;7122:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7122:16:22;11730:53;;;;-1:-1:-1;;;11730:53:22;;6611:2:48;11730:53:22;;;6593:21:48;6650:2;6630:18;;;6623:30;-1:-1:-1;;;6669:18:48;;;6662:54;6733:18;;11730:53:22;6409:348:48;11730:53:22;11657:133;:::o;10959:171::-;11033:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11033:29:22;-1:-1:-1;;;;;11033:29:22;;;;;;;;:24;;11086:23;11033:24;11086:14;:23::i;:::-;-1:-1:-1;;;;;11077:46:22;;;;;;;;;;;10959:171;;:::o;7317:261::-;7410:4;7426:13;7442:23;7457:7;7442:14;:23::i;:::-;7426:39;;7494:5;-1:-1:-1;;;;;7483:16:22;:7;-1:-1:-1;;;;;7483:16:22;;:52;;;;7503:32;7520:5;7527:7;7503:16;:32::i;:::-;7483:87;;;;7563:7;-1:-1:-1;;;;;7539:31:22;:20;7551:7;7539:11;:20::i;:::-;-1:-1:-1;;;;;7539:31:22;;7483:87;7475:96;7317:261;-1:-1:-1;;;;7317:261:22:o;10242:605::-;10396:4;-1:-1:-1;;;;;10369:31:22;:23;10384:7;10369:14;:23::i;:::-;-1:-1:-1;;;;;10369:31:22;;10361:81;;;;-1:-1:-1;;;10361:81:22;;7875:2:48;10361:81:22;;;7857:21:48;7914:2;7894:18;;;7887:30;7953:34;7933:18;;;7926:62;-1:-1:-1;;;8004:18:48;;;7997:35;8049:19;;10361:81:22;7673:401:48;10361:81:22;-1:-1:-1;;;;;10460:16:22;;10452:65;;;;-1:-1:-1;;;10452:65:22;;8281:2:48;10452:65:22;;;8263:21:48;8320:2;8300:18;;;8293:30;8359:34;8339:18;;;8332:62;-1:-1:-1;;;8410:18:48;;;8403:34;8454:19;;10452:65:22;8079:400:48;10452:65:22;10629:29;10646:1;10650:7;10629:8;:29::i;:::-;-1:-1:-1;;;;;10669:15:22;;;;;;:9;:15;;;;;:20;;10688:1;;10669:15;:20;;10688:1;;10669:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10699:13:22;;;;;;:9;:13;;;;;:18;;10716:1;;10699:13;:18;;10716:1;;10699:18;:::i;:::-;;;;-1:-1:-1;;10727:16:22;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10727:21:22;-1:-1:-1;;;;;10727:21:22;;;;;;;;;10764:27;;10727:16;;10764:27;;;;;;;3537:337;3467:407;;:::o;11266:307::-;11416:8;-1:-1:-1;;;;;11407:17:22;:5;-1:-1:-1;;;;;11407:17:22;;11399:55;;;;-1:-1:-1;;;11399:55:22;;9081:2:48;11399:55:22;;;9063:21:48;9120:2;9100:18;;;9093:30;9159:27;9139:18;;;9132:55;9204:18;;11399:55:22;8879:349:48;11399:55:22;-1:-1:-1;;;;;11464:25:22;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11464:46:22;;;;;;;;;;11525:41;;540::48;;;11525::22;;513:18:48;11525:41:22;;;;;;;11266:307;;;:::o;6426:305::-;6576:28;6586:4;6592:2;6596:7;6576:9;:28::i;:::-;6622:47;6645:4;6651:2;6655:7;6664:4;6622:22;:47::i;:::-;6614:110;;;;-1:-1:-1;;;6614:110:22;;;;;;;:::i;392:703:29:-;448:13;665:5;674:1;665:10;661:51;;-1:-1:-1;;691:10:29;;;;;;;;;;;;-1:-1:-1;;;691:10:29;;;;;392:703::o;661:51::-;736:5;721:12;775:75;782:9;;775:75;;807:8;;;;:::i;:::-;;-1:-1:-1;829:10:29;;-1:-1:-1;837:2:29;829:10;;:::i;:::-;;;775:75;;;859:19;891:6;881:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:17:29;;859:39;;908:150;915:10;;908:150;;941:11;951:1;941:11;;:::i;:::-;;-1:-1:-1;1009:10:29;1017:2;1009:5;:10;:::i;:::-;996:24;;:2;:24;:::i;:::-;983:39;;966:6;973;966:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;966:56:29;;;;;;;;-1:-1:-1;1036:11:29;1045:2;1036:11;;:::i;:::-;;;908:150;;12342:831:22;12491:4;-1:-1:-1;;;;;12511:13:22;;1465:19:27;:23;12507:660:22;;12546:71;;-1:-1:-1;;;12546:71:22;;-1:-1:-1;;;;;12546:36:22;;;;;:71;;719:10:28;;12597:4:22;;12603:7;;12612:4;;12546:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12546:71:22;;;;;;;;-1:-1:-1;;12546:71:22;;;;;;;;;;;;:::i;:::-;;;12542:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12784:6;:13;12801:1;12784:18;12780:321;;12826:60;;-1:-1:-1;;;12826:60:22;;;;;;;:::i;12780:321::-;13053:6;13047:13;13038:6;13034:2;13030:15;13023:38;12542:573;-1:-1:-1;;;;;;12667:51:22;-1:-1:-1;;;12667:51:22;;-1:-1:-1;12660:58:22;;12507:660;-1:-1:-1;13152:4:22;12342:831;;;;;;:::o;14:131:48:-;-1:-1:-1;;;;;;88:32:48;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:48;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:48;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:48:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:48;;1348:180;-1:-1:-1;1348:180:48:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:48;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:48:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:186::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2662:29;2681:9;2662:29;:::i;2884:347::-;2949:6;2957;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3049:29;3068:9;3049:29;:::i;:::-;3039:39;;3128:2;3117:9;3113:18;3100:32;3175:5;3168:13;3161:21;3154:5;3151:32;3141:60;;3197:1;3194;3187:12;3141:60;3220:5;3210:15;;;2884:347;;;;;:::o;3236:127::-;3297:10;3292:3;3288:20;3285:1;3278:31;3328:4;3325:1;3318:15;3352:4;3349:1;3342:15;3368:1138;3463:6;3471;3479;3487;3540:3;3528:9;3519:7;3515:23;3511:33;3508:53;;;3557:1;3554;3547:12;3508:53;3580:29;3599:9;3580:29;:::i;:::-;3570:39;;3628:38;3662:2;3651:9;3647:18;3628:38;:::i;:::-;3618:48;;3713:2;3702:9;3698:18;3685:32;3675:42;;3768:2;3757:9;3753:18;3740:32;3791:18;3832:2;3824:6;3821:14;3818:34;;;3848:1;3845;3838:12;3818:34;3886:6;3875:9;3871:22;3861:32;;3931:7;3924:4;3920:2;3916:13;3912:27;3902:55;;3953:1;3950;3943:12;3902:55;3989:2;3976:16;4011:2;4007;4004:10;4001:36;;;4017:18;;:::i;:::-;4092:2;4086:9;4060:2;4146:13;;-1:-1:-1;;4142:22:48;;;4166:2;4138:31;4134:40;4122:53;;;4190:18;;;4210:22;;;4187:46;4184:72;;;4236:18;;:::i;:::-;4276:10;4272:2;4265:22;4311:2;4303:6;4296:18;4351:7;4346:2;4341;4337;4333:11;4329:20;4326:33;4323:53;;;4372:1;4369;4362:12;4323:53;4428:2;4423;4419;4415:11;4410:2;4402:6;4398:15;4385:46;4473:1;4468:2;4463;4455:6;4451:15;4447:24;4440:35;4494:6;4484:16;;;;;;;3368:1138;;;;;;;:::o;4511:260::-;4579:6;4587;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4679:29;4698:9;4679:29;:::i;:::-;4669:39;;4727:38;4761:2;4750:9;4746:18;4727:38;:::i;:::-;4717:48;;4511:260;;;;;:::o;4776:380::-;4855:1;4851:12;;;;4898;;;4919:61;;4973:4;4965:6;4961:17;4951:27;;4919:61;5026:2;5018:6;5015:14;4995:18;4992:38;4989:161;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;4989:161;;4776:380;;;:::o;5994:410::-;6196:2;6178:21;;;6235:2;6215:18;;;6208:30;6274:34;6269:2;6254:18;;6247:62;-1:-1:-1;;;6340:2:48;6325:18;;6318:44;6394:3;6379:19;;5994:410::o;7172:496::-;7351:3;7389:6;7383:13;7405:66;7464:6;7459:3;7452:4;7444:6;7440:17;7405:66;:::i;:::-;7534:13;;7493:16;;;;7556:70;7534:13;7493:16;7603:4;7591:17;;7556:70;:::i;:::-;7642:20;;7172:496;-1:-1:-1;;;;7172:496:48:o;8484:127::-;8545:10;8540:3;8536:20;8533:1;8526:31;8576:4;8573:1;8566:15;8600:4;8597:1;8590:15;8616:128;8683:9;;;8704:11;;;8701:37;;;8718:18;;:::i;8749:125::-;8814:9;;;8835:10;;;8832:36;;;8848:18;;:::i;9233:414::-;9435:2;9417:21;;;9474:2;9454:18;;;9447:30;9513:34;9508:2;9493:18;;9486:62;-1:-1:-1;;;9579:2:48;9564:18;;9557:48;9637:3;9622:19;;9233:414::o;9652:135::-;9691:3;9712:17;;;9709:43;;9732:18;;:::i;:::-;-1:-1:-1;9779:1:48;9768:13;;9652:135::o;9792:127::-;9853:10;9848:3;9844:20;9841:1;9834:31;9884:4;9881:1;9874:15;9908:4;9905:1;9898:15;9924:120;9964:1;9990;9980:35;;9995:18;;:::i;:::-;-1:-1:-1;10029:9:48;;9924:120::o;10049:112::-;10081:1;10107;10097:35;;10112:18;;:::i;:::-;-1:-1:-1;10146:9:48;;10049:112::o;10166:127::-;10227:10;10222:3;10218:20;10215:1;10208:31;10258:4;10255:1;10248:15;10282:4;10279:1;10272:15;10298:489;-1:-1:-1;;;;;10567:15:48;;;10549:34;;10619:15;;10614:2;10599:18;;10592:43;10666:2;10651:18;;10644:34;;;10714:3;10709:2;10694:18;;10687:31;;;10492:4;;10735:46;;10761:19;;10753:6;10735:46;:::i;:::-;10727:54;10298:489;-1:-1:-1;;;;;;10298:489:48:o;10792:249::-;10861:6;10914:2;10902:9;10893:7;10889:23;10885:32;10882:52;;;10930:1;10927;10920:12;10882:52;10962:9;10956:16;10981:30;11005:5;10981:30;:::i", "abi": "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b50604051620013ff380380620013ff83398101604081905262000034916200011f565b600062000042838262000218565b50600162000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61110b80620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c32565b6101ff565b60405190151581526020015b60405180910390f35b610104610251565b6040516100f39190610c9f565b61012461011f366004610cb2565b6102e3565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610ce7565b61030a565b005b61014f61015f366004610d11565b610424565b61014f610172366004610d11565b610455565b610124610185366004610cb2565b610470565b61019d610198366004610d4d565b6104d0565b6040519081526020016100f3565b610104610556565b61014f6101c1366004610d68565b610565565b61014f6101d4366004610dba565b610574565b6101046101e7366004610cb2565b6105ac565b6100e76101fa366004610e96565b610620565b60006001600160e01b031982166380ac58cd60e01b148061023057506001600160e01b03198216635b5e139f60e01b145b8061024b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461026090610ec9565b80601f016020809104026020016040519081016040528092919081815260200182805461028c90610ec9565b80156102d95780601f106102ae576101008083540402835291602001916102d9565b820191906000526020600020905b8154815290600101906020018083116102bc57829003601f168201915b5050505050905090565b60006102ee8261064e565b506000908152600460205260409020546001600160a01b031690565b600061031582610470565b9050806001600160a01b0316836001600160a01b0316036103875760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103a357506103a38133610620565b6104155760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161037e565b61041f83836106b0565b505050565b61042e338261071e565b61044a5760405162461bcd60e51b815260040161037e90610f03565b61041f83838361077d565b61041f83838360405180602001604052806000815250610574565b6000818152600260205260408120546001600160a01b03168061024b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b60006001600160a01b03821661053a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161037e565b506001600160a01b031660009081526003602052604090205490565b60606001805461026090610ec9565b610570338383610919565b5050565b61057e338361071e565b61059a5760405162461bcd60e51b815260040161037e90610f03565b6105a6848484846109e7565b50505050565b60606105b78261064e565b60006105ce60408051602081019091526000815290565b905060008151116105ee5760405180602001604052806000815250610619565b806105f884610a1a565b604051602001610609929190610f51565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260409020546001600160a01b03166106ad5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e582610470565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072a83610470565b9050806001600160a01b0316846001600160a01b0316148061075157506107518185610620565b806107755750836001600160a01b031661076a846102e3565b6001600160a01b0316145b949350505050565b826001600160a01b031661079082610470565b6001600160a01b0316146107f45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161037e565b6001600160a01b0382166108565760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161037e565b6108616000826106b0565b6001600160a01b038316600090815260036020526040812080546001929061088a908490610f96565b90915550506001600160a01b03821660009081526003602052604081208054600192906108b8908490610fa9565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361097a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161037e565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109f284848461077d565b6109fe84848484610b1b565b6105a65760405162461bcd60e51b815260040161037e90610fbc565b606081600003610a415750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a6b5780610a558161100e565b9150610a649050600a8361103d565b9150610a45565b60008167ffffffffffffffff811115610a8657610a86610da4565b6040519080825280601f01601f191660200182016040528015610ab0576020820181803683370190505b5090505b841561077557610ac5600183610f96565b9150610ad2600a86611051565b610add906030610fa9565b60f81b818381518110610af257610af2611065565b60200101906001600160f81b031916908160001a905350610b14600a8661103d565b9450610ab4565b60006001600160a01b0384163b15610c1157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b5f90339089908890889060040161107b565b6020604051808303816000875af1925050508015610b9a575060408051601f3d908101601f19168201909252610b97918101906110b8565b60015b610bf7573d808015610bc8576040519150601f19603f3d011682016040523d82523d6000602084013e610bcd565b606091505b508051600003610bef5760405162461bcd60e51b815260040161037e90610fbc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610775565b506001949350505050565b6001600160e01b0319811681146106ad57600080fd5b600060208284031215610c4457600080fd5b813561061981610c1c565b60005b83811015610c6a578181015183820152602001610c52565b50506000910152565b60008151808452610c8b816020860160208601610c4f565b601f01601f19169290920160200192915050565b6020815260006106196020830184610c73565b600060208284031215610cc457600080fd5b5035919050565b80356001600160a01b0381168114610ce257600080fd5b919050565b60008060408385031215610cfa57600080fd5b610d0383610ccb565b946020939093013593505050565b600080600060608486031215610d2657600080fd5b610d2f84610ccb565b9250610d3d60208501610ccb565b9150604084013590509250925092565b600060208284031215610d5f57600080fd5b61061982610ccb565b60008060408385031215610d7b57600080fd5b610d8483610ccb565b915060208301358015158114610d9957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dd057600080fd5b610dd985610ccb565b9350610de760208601610ccb565b925060408501359150606085013567ffffffffffffffff80821115610e0b57600080fd5b818701915087601f830112610e1f57600080fd5b813581811115610e3157610e31610da4565b604051601f8201601f19908116603f01168101908382118183101715610e5957610e59610da4565b816040528281528a6020848701011115610e7257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ea957600080fd5b610eb283610ccb565b9150610ec060208401610ccb565b90509250929050565b600181811c90821680610edd57607f821691505b602082108103610efd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f63818460208801610c4f565b835190830190610f77818360208801610c4f565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561024b5761024b610f80565b8082018082111561024b5761024b610f80565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006001820161102057611020610f80565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261104c5761104c611027565b500490565b60008261106057611060611027565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110ae90830184610c73565b9695505050505050565b6000602082840312156110ca57600080fd5b815161061981610c1c56fea2646970667358221220567193447a7f17c9f9f67d7fbebdb51ff66d09049c855c6c8dd449d64c94e19764736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c32565b6101ff565b60405190151581526020015b60405180910390f35b610104610251565b6040516100f39190610c9f565b61012461011f366004610cb2565b6102e3565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610ce7565b61030a565b005b61014f61015f366004610d11565b610424565b61014f610172366004610d11565b610455565b610124610185366004610cb2565b610470565b61019d610198366004610d4d565b6104d0565b6040519081526020016100f3565b610104610556565b61014f6101c1366004610d68565b610565565b61014f6101d4366004610dba565b610574565b6101046101e7366004610cb2565b6105ac565b6100e76101fa366004610e96565b610620565b60006001600160e01b031982166380ac58cd60e01b148061023057506001600160e01b03198216635b5e139f60e01b145b8061024b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461026090610ec9565b80601f016020809104026020016040519081016040528092919081815260200182805461028c90610ec9565b80156102d95780601f106102ae576101008083540402835291602001916102d9565b820191906000526020600020905b8154815290600101906020018083116102bc57829003601f168201915b5050505050905090565b60006102ee8261064e565b506000908152600460205260409020546001600160a01b031690565b600061031582610470565b9050806001600160a01b0316836001600160a01b0316036103875760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103a357506103a38133610620565b6104155760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161037e565b61041f83836106b0565b505050565b61042e338261071e565b61044a5760405162461bcd60e51b815260040161037e90610f03565b61041f83838361077d565b61041f83838360405180602001604052806000815250610574565b6000818152600260205260408120546001600160a01b03168061024b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b60006001600160a01b03821661053a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161037e565b506001600160a01b031660009081526003602052604090205490565b60606001805461026090610ec9565b610570338383610919565b5050565b61057e338361071e565b61059a5760405162461bcd60e51b815260040161037e90610f03565b6105a6848484846109e7565b50505050565b60606105b78261064e565b60006105ce60408051602081019091526000815290565b905060008151116105ee5760405180602001604052806000815250610619565b806105f884610a1a565b604051602001610609929190610f51565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260409020546001600160a01b03166106ad5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e582610470565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072a83610470565b9050806001600160a01b0316846001600160a01b0316148061075157506107518185610620565b806107755750836001600160a01b031661076a846102e3565b6001600160a01b0316145b949350505050565b826001600160a01b031661079082610470565b6001600160a01b0316146107f45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161037e565b6001600160a01b0382166108565760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161037e565b6108616000826106b0565b6001600160a01b038316600090815260036020526040812080546001929061088a908490610f96565b90915550506001600160a01b03821660009081526003602052604081208054600192906108b8908490610fa9565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361097a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161037e565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109f284848461077d565b6109fe84848484610b1b565b6105a65760405162461bcd60e51b815260040161037e90610fbc565b606081600003610a415750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a6b5780610a558161100e565b9150610a649050600a8361103d565b9150610a45565b60008167ffffffffffffffff811115610a8657610a86610da4565b6040519080825280601f01601f191660200182016040528015610ab0576020820181803683370190505b5090505b841561077557610ac5600183610f96565b9150610ad2600a86611051565b610add906030610fa9565b60f81b818381518110610af257610af2611065565b60200101906001600160f81b031916908160001a905350610b14600a8661103d565b9450610ab4565b60006001600160a01b0384163b15610c1157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b5f90339089908890889060040161107b565b6020604051808303816000875af1925050508015610b9a575060408051601f3d908101601f19168201909252610b97918101906110b8565b60015b610bf7573d808015610bc8576040519150601f19603f3d011682016040523d82523d6000602084013e610bcd565b606091505b508051600003610bef5760405162461bcd60e51b815260040161037e90610fbc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610775565b506001949350505050565b6001600160e01b0319811681146106ad57600080fd5b600060208284031215610c4457600080fd5b813561061981610c1c565b60005b83811015610c6a578181015183820152602001610c52565b50506000910152565b60008151808452610c8b816020860160208601610c4f565b601f01601f19169290920160200192915050565b6020815260006106196020830184610c73565b600060208284031215610cc457600080fd5b5035919050565b80356001600160a01b0381168114610ce257600080fd5b919050565b60008060408385031215610cfa57600080fd5b610d0383610ccb565b946020939093013593505050565b600080600060608486031215610d2657600080fd5b610d2f84610ccb565b9250610d3d60208501610ccb565b9150604084013590509250925092565b600060208284031215610d5f57600080fd5b61061982610ccb565b60008060408385031215610d7b57600080fd5b610d8483610ccb565b915060208301358015158114610d9957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dd057600080fd5b610dd985610ccb565b9350610de760208601610ccb565b925060408501359150606085013567ffffffffffffffff80821115610e0b57600080fd5b818701915087601f830112610e1f57600080fd5b813581811115610e3157610e31610da4565b604051601f8201601f19908116603f01168101908382118183101715610e5957610e59610da4565b816040528281528a6020848701011115610e7257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ea957600080fd5b610eb283610ccb565b9150610ec060208401610ccb565b90509250929050565b600181811c90821680610edd57607f821691505b602082108103610efd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f63818460208801610c4f565b835190830190610f77818360208801610c4f565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561024b5761024b610f80565b8082018082111561024b5761024b610f80565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006001820161102057611020610f80565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261104c5761104c611027565b500490565b60008261106057611060611027565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110ae90830184610c73565b9695505050505050565b6000602082840312156110ca57600080fd5b815161061981610c1c56fea2646970667358221220567193447a7f17c9f9f67d7fbebdb51ff66d09049c855c6c8dd449d64c94e19764736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol:IERC721Receiver": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol:ERC721URIStorage": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Address.sol:Address": {"srcmap": "194:8111:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8111:27;;;;;;;;;;;;;;;;;", "srcmap-runtime": "194:8111:27:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206af4a6c2ea199a402f324b33d83781e045280f151b8e8f13fc6b5ffdb7db88cd64736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206af4a6c2ea199a402f324b33d83781e045280f151b8e8f13fc6b5ffdb7db88cd64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Context.sol:Context": {"srcmap": "", "srcmap-runtime": "", "abi": "[]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Strings.sol:Strings": {"srcmap": "161:2235:29:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;161:2235:29;;;;;;;;;;;;;;;;;", "srcmap-runtime": "161:2235:29:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b303b02ccdf79afcb75435de6b23bc4ab5c08d9d37aa26d6fb1f7cde1a0a85864736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b303b02ccdf79afcb75435de6b23bc4ab5c08d9d37aa26d6fb1f7cde1a0a85864736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ERC721Test.sol:ERC721Test": {"srcmap": "341:873:32:-:0;;;691:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;752:4;758:6;1456:5:22;:13;752:4:32;1456:5:22;:13;:::i;:::-;-1:-1:-1;1479:7:22;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;936:32:17;955:12;:10;;;:12;;:::i;:::-;936:18;:32::i;:::-;691:77:32;;341:873;;640:96:28;719:10;;640:96::o;2433:187:17:-;2525:6;;;-1:-1:-1;;;;;2541:17:17;;;-1:-1:-1;;;;;;2541:17:17;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;14:127:48:-;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:48;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:48;;;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:48: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:48;;;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:48;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:48;;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:48;;;3992:26;3943:89;-1:-1:-1;;2747:1:48;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:48;;;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:48;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:48;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:48:o;:::-;341:873:32;;;;;;", "srcmap-runtime": "341:873:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300:22;;;;;;:::i;:::-;;:::i;:::-;;;565:14:48;;558:22;540:41;;528:2;513:18;1570:300:22;;;;;;;;2470:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:48;;;1679:51;;1667:2;1652:18;3935:167:22;1533:203:48;3467:407:22;;;;;;:::i;:::-;;:::i;:::-;;4612:327;;;;;;:::i;:::-;;:::i;5005:179::-;;;;;;:::i;:::-;;:::i;2190:218::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2848:25:48;;;2836:2;2821:18;1929:204:22;2702:177:48;522:23:32;;;;;;1831:101:17;;;:::i;1201:85::-;1273:6;;-1:-1:-1;;;;;1273:6:17;1201:85;;2632:102:22;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5250:315::-;;;;;;:::i;:::-;;:::i;482:608:25:-;;;;;;:::i;:::-;;:::i;4388:162:22:-;;;;;;:::i;:::-;;:::i;943:269:32:-;;;;;;:::i;:::-;;:::i;2081:198:17:-;;;;;;:::i;:::-;;:::i;1570:300:22:-;1672:4;-1:-1:-1;;;;;;1707:40:22;;-1:-1:-1;;;1707:40:22;;:104;;-1:-1:-1;;;;;;;1763:48:22;;-1:-1:-1;;;1763:48:22;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:30;;;1827:36:22;1688:175;1570:300;-1:-1:-1;;1570:300:22:o;2470:98::-;2524:13;2556:5;2549:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2470:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:22;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:22;;3935:167::o;3467:407::-;3547:13;3563:23;3578:7;3563:14;:23::i;:::-;3547:39;;3610:5;-1:-1:-1;;;;;3604:11:22;:2;-1:-1:-1;;;;;3604:11:22;;3596:57;;;;-1:-1:-1;;;3596:57:22;;6056:2:48;3596:57:22;;;6038:21:48;6095:2;6075:18;;;6068:30;6134:34;6114:18;;;6107:62;-1:-1:-1;;;6185:18:48;;;6178:31;6226:19;;3596:57:22;;;;;;;;;719:10:28;-1:-1:-1;;;;;3685:21:22;;;;:62;;-1:-1:-1;3710:37:22;3727:5;719:10:28;4388:162:22;:::i;3710:37::-;3664:171;;;;-1:-1:-1;;;3664:171:22;;6458:2:48;3664:171:22;;;6440:21:48;6497:2;6477:18;;;6470:30;6536:34;6516:18;;;6509:62;6607:32;6587:18;;;6580:60;6657:19;;3664:171:22;6256:426:48;3664:171:22;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3537:337;3467:407;;:::o;4612:327::-;4801:41;719:10:28;4834:7:22;4801:18;:41::i;:::-;4793:100;;;;-1:-1:-1;;;4793:100:22;;;;;;;:::i;:::-;4904:28;4914:4;4920:2;4924:7;4904:9;:28::i;5005:179::-;5138:39;5155:4;5161:2;5165:7;5138:39;;;;;;;;;;;;:16;:39::i;2190:218::-;2262:7;2297:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2297:16:22;;2323:56;;;;-1:-1:-1;;;2323:56:22;;7304:2:48;2323:56:22;;;7286:21:48;7343:2;7323:18;;;7316:30;-1:-1:-1;;;7362:18:48;;;7355:54;7426:18;;2323:56:22;7102:348:48;1929:204:22;2001:7;-1:-1:-1;;;;;2028:19:22;;2020:73;;;;-1:-1:-1;;;2020:73:22;;7657:2:48;2020:73:22;;;7639:21:48;7696:2;7676:18;;;7669:30;7735:34;7715:18;;;7708:62;-1:-1:-1;;;7786:18:48;;;7779:39;7835:19;;2020:73:22;7455:405:48;2020:73:22;-1:-1:-1;;;;;;2110:16:22;;;;;:9;:16;;;;;;;1929:204::o;1831:101:17:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;2632:102:22:-;2688:13;2720:7;2713:14;;;;;:::i;4169:153::-;4263:52;719:10:28;4296:8:22;4306;4263:18;:52::i;:::-;4169:153;;:::o;5250:315::-;5418:41;719:10:28;5451:7:22;5418:18;:41::i;:::-;5410:100;;;;-1:-1:-1;;;5410:100:22;;;;;;;:::i;:::-;5520:38;5534:4;5540:2;5544:7;5553:4;5520:13;:38::i;:::-;5250:315;;;;:::o;482:608:25:-;555:13;580:23;595:7;580:14;:23::i;:::-;614;640:19;;;:10;:19;;;;;614:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;669:18;690:10;3394:9:22;;;;;;;;;-1:-1:-1;3394:9:22;;;3318:92;690:10:25;669:31;;779:4;773:18;795:1;773:23;769:70;;-1:-1:-1;819:9:25;482:608;-1:-1:-1;;482:608:25:o;769:70::-;941:23;;:27;937:106;;1015:4;1021:9;998:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;984:48;;;;482:608;;;:::o;937:106::-;1060:23;1075:7;1060:14;:23::i;:::-;1053:30;482:608;-1:-1:-1;;;;482:608:25:o;4388:162:22:-;-1:-1:-1;;;;;4508:25:22;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162::o;943:269:32:-;1094:13:17;:11;:13::i;:::-;-1:-1:-1;;;;;1030:17:32;::::1;1022:45;;;::::0;-1:-1:-1;;;1022:45:32;;8568:2:48;1022:45:32::1;::::0;::::1;8550:21:48::0;8607:2;8587:18;;;8580:30;-1:-1:-1;;;8626:18:48;;;8619:45;8681:18;;1022:45:32::1;8366:339:48::0;1022:45:32::1;1077:8;:10:::0;;;:8:::1;:10;::::0;::::1;:::i;:::-;;;;;;1097:24;1107:3;1112:8;;1097:9;:24::i;:::-;1131:28;1144:8;;1154:4;1131:12;:28::i;:::-;1175:30;1185:3;1190:8;;1200:4;1175:30;;;;;;;;:::i;:::-;;;;;;;;943:269:::0;;:::o;2081:198:17:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:17;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:17;;9577:2:48;2161:73:17::1;::::0;::::1;9559:21:48::0;9616:2;9596:18;;;9589:30;9655:34;9635:18;;;9628:62;-1:-1:-1;;;9706:18:48;;;9699:36;9752:19;;2161:73:17::1;9375:402:48::0;2161:73:17::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;11657:133:22:-;7099:4;7122:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7122:16:22;11730:53;;;;-1:-1:-1;;;11730:53:22;;7304:2:48;11730:53:22;;;7286:21:48;7343:2;7323:18;;;7316:30;-1:-1:-1;;;7362:18:48;;;7355:54;7426:18;;11730:53:22;7102:348:48;10959:171:22;11033:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11033:29:22;-1:-1:-1;;;;;11033:29:22;;;;;;;;:24;;11086:23;11033:24;11086:14;:23::i;:::-;-1:-1:-1;;;;;11077:46:22;;;;;;;;;;;10959:171;;:::o;7317:261::-;7410:4;7426:13;7442:23;7457:7;7442:14;:23::i;:::-;7426:39;;7494:5;-1:-1:-1;;;;;7483:16:22;:7;-1:-1:-1;;;;;7483:16:22;;:52;;;;7503:32;7520:5;7527:7;7503:16;:32::i;:::-;7483:87;;;;7563:7;-1:-1:-1;;;;;7539:31:22;:20;7551:7;7539:11;:20::i;:::-;-1:-1:-1;;;;;7539:31:22;;7475:96;7317:261;-1:-1:-1;;;;7317:261:22:o;10242:605::-;10396:4;-1:-1:-1;;;;;10369:31:22;:23;10384:7;10369:14;:23::i;:::-;-1:-1:-1;;;;;10369:31:22;;10361:81;;;;-1:-1:-1;;;10361:81:22;;9984:2:48;10361:81:22;;;9966:21:48;10023:2;10003:18;;;9996:30;10062:34;10042:18;;;10035:62;-1:-1:-1;;;10113:18:48;;;10106:35;10158:19;;10361:81:22;9782:401:48;10361:81:22;-1:-1:-1;;;;;10460:16:22;;10452:65;;;;-1:-1:-1;;;10452:65:22;;10390:2:48;10452:65:22;;;10372:21:48;10429:2;10409:18;;;10402:30;10468:34;10448:18;;;10441:62;-1:-1:-1;;;10519:18:48;;;10512:34;10563:19;;10452:65:22;10188:400:48;10452:65:22;10629:29;10646:1;10650:7;10629:8;:29::i;:::-;-1:-1:-1;;;;;10669:15:22;;;;;;:9;:15;;;;;:20;;10688:1;;10669:15;:20;;10688:1;;10669:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10699:13:22;;;;;;:9;:13;;;;;:18;;10716:1;;10699:13;:18;;10716:1;;10699:18;:::i;:::-;;;;-1:-1:-1;;10727:16:22;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10727:21:22;-1:-1:-1;;;;;10727:21:22;;;;;;;;;10764:27;;10727:16;;10764:27;;;;;;;3537:337;3467:407;;:::o;1359:130:17:-;1273:6;;-1:-1:-1;;;;;1273:6:17;719:10:28;1422:23:17;1414:68;;;;-1:-1:-1;;;1414:68:17;;11058:2:48;1414:68:17;;;11040:21:48;;;11077:18;;;11070:30;11136:34;11116:18;;;11109:62;11188:18;;1414:68:17;10856:356:48;2433:187:17;2525:6;;;-1:-1:-1;;;;;2541:17:17;;;-1:-1:-1;;;;;;2541:17:17;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;11266:307:22:-;11416:8;-1:-1:-1;;;;;11407:17:22;:5;-1:-1:-1;;;;;11407:17:22;;11399:55;;;;-1:-1:-1;;;11399:55:22;;11419:2:48;11399:55:22;;;11401:21:48;11458:2;11438:18;;;11431:30;11497:27;11477:18;;;11470:55;11542:18;;11399:55:22;11217:349:48;11399:55:22;-1:-1:-1;;;;;11464:25:22;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11464:46:22;;;;;;;;;;11525:41;;540::48;;;11525::22;;513:18:48;11525:41:22;;;;;;;11266:307;;;:::o;6426:305::-;6576:28;6586:4;6592:2;6596:7;6576:9;:28::i;:::-;6622:47;6645:4;6651:2;6655:7;6664:4;6622:22;:47::i;:::-;6614:110;;;;-1:-1:-1;;;6614:110:22;;;;;;;:::i;2800:276::-;2873:13;2898:23;2913:7;2898:14;:23::i;:::-;2932:21;2956:10;3394:9;;;;;;;;;-1:-1:-1;3394:9:22;;;3318:92;2956:10;2932:34;;3007:1;2989:7;2983:21;:25;:86;;;;;;;;;;;;;;;;;3035:7;3044:18;:7;:16;:18::i;:::-;3018:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2983:86;2976:93;2800:276;-1:-1:-1;;;2800:276:22:o;7908:108::-;7983:26;7993:2;7997:7;7983:26;;;;;;;;;;;;:9;:26::i;1237:214:25:-;7099:4:22;7122:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7122:16:22;1328:75:25;;;;-1:-1:-1;;;1328:75:25;;12192:2:48;1328:75:25;;;12174:21:48;12231:2;12211:18;;;12204:30;12270:34;12250:18;;;12243:62;-1:-1:-1;;;12321:18:48;;;12314:44;12375:19;;1328:75:25;11990:410:48;1328:75:25;1413:19;;;;:10;:19;;;;;:31;1435:9;1413:19;:31;:::i;12342:831:22:-;12491:4;-1:-1:-1;;;;;12511:13:22;;1465:19:27;:23;12507:660:22;;12546:71;;-1:-1:-1;;;12546:71:22;;-1:-1:-1;;;;;12546:36:22;;;;;:71;;719:10:28;;12597:4:22;;12603:7;;12612:4;;12546:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12546:71:22;;;;;;;;-1:-1:-1;;12546:71:22;;;;;;;;;;;;:::i;:::-;;;12542:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12784:6;:13;12801:1;12784:18;12780:321;;12826:60;;-1:-1:-1;;;12826:60:22;;;;;;;:::i;12780:321::-;13053:6;13047:13;13038:6;13034:2;13030:15;13023:38;12542:573;-1:-1:-1;;;;;;12667:51:22;-1:-1:-1;;;12667:51:22;;-1:-1:-1;12660:58:22;;12507:660;-1:-1:-1;13152:4:22;12342:831;;;;;;:::o;392:703:29:-;448:13;665:5;674:1;665:10;661:51;;-1:-1:-1;;691:10:29;;;;;;;;;;;;-1:-1:-1;;;691:10:29;;;;;392:703::o;661:51::-;736:5;721:12;775:75;782:9;;775:75;;807:8;;;;:::i;:::-;;-1:-1:-1;829:10:29;;-1:-1:-1;837:2:29;829:10;;:::i;:::-;;;775:75;;;859:19;891:6;881:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:17:29;;859:39;;908:150;915:10;;908:150;;941:11;951:1;941:11;;:::i;:::-;;-1:-1:-1;1009:10:29;1017:2;1009:5;:10;:::i;:::-;996:24;;:2;:24;:::i;:::-;983:39;;966:6;973;966:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;966:56:29;;;;;;;;-1:-1:-1;1036:11:29;1045:2;1036:11;;:::i;:::-;;;908:150;;8237:309:22;8361:18;8367:2;8371:7;8361:5;:18::i;:::-;8410:53;8441:1;8445:2;8449:7;8458:4;8410:22;:53::i;:::-;8389:150;;;;-1:-1:-1;;;8389:150:22;;;;;;;:::i;8868:427::-;-1:-1:-1;;;;;8947:16:22;;8939:61;;;;-1:-1:-1;;;8939:61:22;;16065:2:48;8939:61:22;;;16047:21:48;;;16084:18;;;16077:30;16143:34;16123:18;;;16116:62;16195:18;;8939:61:22;15863:356:48;8939:61:22;7099:4;7122:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7122:16:22;:30;9010:58;;;;-1:-1:-1;;;9010:58:22;;16426:2:48;9010:58:22;;;16408:21:48;16465:2;16445:18;;;16438:30;16504;16484:18;;;16477:58;16552:18;;9010:58:22;16224:352:48;9010:58:22;-1:-1:-1;;;;;9135:13:22;;;;;;:9;:13;;;;;:18;;9152:1;;9135:13;:18;;9152:1;;9135:18;:::i;:::-;;;;-1:-1:-1;;9163:16:22;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9163:21:22;-1:-1:-1;;;;;9163:21:22;;;;;;;;9200:33;;9163:16;;;9200:33;;9163:16;;9200:33;4169:153;;:::o;14:131:48:-;-1:-1:-1;;;;;;88:32:48;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:48;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:48;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:48:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:48;;1348:180;-1:-1:-1;1348:180:48:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:48;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:48:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:186::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2662:29;2681:9;2662:29;:::i;2884:347::-;2949:6;2957;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3049:29;3068:9;3049:29;:::i;:::-;3039:39;;3128:2;3117:9;3113:18;3100:32;3175:5;3168:13;3161:21;3154:5;3151:32;3141:60;;3197:1;3194;3187:12;3141:60;3220:5;3210:15;;;2884:347;;;;;:::o;3236:127::-;3297:10;3292:3;3288:20;3285:1;3278:31;3328:4;3325:1;3318:15;3352:4;3349:1;3342:15;3368:631;3432:5;3462:18;3503:2;3495:6;3492:14;3489:40;;;3509:18;;:::i;:::-;3584:2;3578:9;3552:2;3638:15;;-1:-1:-1;;3634:24:48;;;3660:2;3630:33;3626:42;3614:55;;;3684:18;;;3704:22;;;3681:46;3678:72;;;3730:18;;:::i;:::-;3770:10;3766:2;3759:22;3799:6;3790:15;;3829:6;3821;3814:22;3869:3;3860:6;3855:3;3851:16;3848:25;3845:45;;;3886:1;3883;3876:12;3845:45;3936:6;3931:3;3924:4;3916:6;3912:17;3899:44;3991:1;3984:4;3975:6;3967;3963:19;3959:30;3952:41;;;;3368:631;;;;;:::o;4004:666::-;4099:6;4107;4115;4123;4176:3;4164:9;4155:7;4151:23;4147:33;4144:53;;;4193:1;4190;4183:12;4144:53;4216:29;4235:9;4216:29;:::i;:::-;4206:39;;4264:38;4298:2;4287:9;4283:18;4264:38;:::i;:::-;4254:48;;4349:2;4338:9;4334:18;4321:32;4311:42;;4404:2;4393:9;4389:18;4376:32;4431:18;4423:6;4420:30;4417:50;;;4463:1;4460;4453:12;4417:50;4486:22;;4539:4;4531:13;;4527:27;-1:-1:-1;4517:55:48;;4568:1;4565;4558:12;4517:55;4591:73;4656:7;4651:2;4638:16;4633:2;4629;4625:11;4591:73;:::i;:::-;4581:83;;;4004:666;;;;;;;:::o;4675:260::-;4743:6;4751;4804:2;4792:9;4783:7;4779:23;4775:32;4772:52;;;4820:1;4817;4810:12;4772:52;4843:29;4862:9;4843:29;:::i;:::-;4833:39;;4891:38;4925:2;4914:9;4910:18;4891:38;:::i;:::-;4881:48;;4675:260;;;;;:::o;4940:524::-;5018:6;5026;5079:2;5067:9;5058:7;5054:23;5050:32;5047:52;;;5095:1;5092;5085:12;5047:52;5118:29;5137:9;5118:29;:::i;:::-;5108:39;;5198:2;5187:9;5183:18;5170:32;5225:18;5217:6;5214:30;5211:50;;;5257:1;5254;5247:12;5211:50;5280:22;;5333:4;5325:13;;5321:27;-1:-1:-1;5311:55:48;;5362:1;5359;5352:12;5311:55;5385:73;5450:7;5445:2;5432:16;5427:2;5423;5419:11;5385:73;:::i;:::-;5375:83;;;4940:524;;;;;:::o;5469:380::-;5548:1;5544:12;;;;5591;;;5612:61;;5666:4;5658:6;5654:17;5644:27;;5612:61;5719:2;5711:6;5708:14;5688:18;5685:38;5682:161;;5765:10;5760:3;5756:20;5753:1;5746:31;5800:4;5797:1;5790:15;5828:4;5825:1;5818:15;5682:161;;5469:380;;;:::o;6687:410::-;6889:2;6871:21;;;6928:2;6908:18;;;6901:30;6967:34;6962:2;6947:18;;6940:62;-1:-1:-1;;;7033:2:48;7018:18;;7011:44;7087:3;7072:19;;6687:410::o;7865:496::-;8044:3;8082:6;8076:13;8098:66;8157:6;8152:3;8145:4;8137:6;8133:17;8098:66;:::i;:::-;8227:13;;8186:16;;;;8249:70;8227:13;8186:16;8296:4;8284:17;;8249:70;:::i;:::-;8335:20;;7865:496;-1:-1:-1;;;;7865:496:48:o;8710:127::-;8771:10;8766:3;8762:20;8759:1;8752:31;8802:4;8799:1;8792:15;8826:4;8823:1;8816:15;8842:135;8881:3;8902:17;;;8899:43;;8922:18;;:::i;:::-;-1:-1:-1;8969:1:48;8958:13;;8842:135::o;8982:388::-;9216:1;9212;9207:3;9203:11;9199:19;9191:6;9187:32;9176:9;9169:51;9256:6;9251:2;9240:9;9236:18;9229:34;9299:2;9294;9283:9;9279:18;9272:30;9150:4;9319:45;9360:2;9349:9;9345:18;9337:6;9319:45;:::i;:::-;9311:53;8982:388;-1:-1:-1;;;;;8982:388:48:o;10593:128::-;10660:9;;;10681:11;;;10678:37;;;10695:18;;:::i;10726:125::-;10791:9;;;10812:10;;;10809:36;;;10825:18;;:::i;11571:414::-;11773:2;11755:21;;;11812:2;11792:18;;;11785:30;11851:34;11846:2;11831:18;;11824:62;-1:-1:-1;;;11917:2:48;11902:18;;11895:48;11975:3;11960:19;;11571:414::o;12531:545::-;12633:2;12628:3;12625:11;12622:448;;;12669:1;12694:5;12690:2;12683:17;12739:4;12735:2;12725:19;12809:2;12797:10;12793:19;12790:1;12786:27;12780:4;12776:38;12845:4;12833:10;12830:20;12827:47;;;-1:-1:-1;12868:4:48;12827:47;12923:2;12918:3;12914:12;12911:1;12907:20;12901:4;12897:31;12887:41;;12978:82;12996:2;12989:5;12986:13;12978:82;;;13041:17;;;13022:1;13011:13;12978:82;;;12982:3;;;12531:545;;;:::o;13252:1352::-;13378:3;13372:10;13405:18;13397:6;13394:30;13391:56;;;13427:18;;:::i;:::-;13456:97;13546:6;13506:38;13538:4;13532:11;13506:38;:::i;:::-;13500:4;13456:97;:::i;:::-;13608:4;;13672:2;13661:14;;13689:1;13684:663;;;;14391:1;14408:6;14405:89;;;-1:-1:-1;14460:19:48;;;14454:26;14405:89;-1:-1:-1;;13209:1:48;13205:11;;;13201:24;13197:29;13187:40;13233:1;13229:11;;;13184:57;14507:81;;13654:944;;13684:663;12478:1;12471:14;;;12515:4;12502:18;;-1:-1:-1;;13720:20:48;;;13838:236;13852:7;13849:1;13846:14;13838:236;;;13941:19;;;13935:26;13920:42;;14033:27;;;;14001:1;13989:14;;;;13868:19;;13838:236;;;13842:3;14102:6;14093:7;14090:19;14087:201;;;14163:19;;;14157:26;-1:-1:-1;;14246:1:48;14242:14;;;14258:3;14238:24;14234:37;14230:42;14215:58;14200:74;;14087:201;-1:-1:-1;;;;;14334:1:48;14318:14;;;14314:22;14301:36;;-1:-1:-1;13252:1352:48:o;14609:489::-;-1:-1:-1;;;;;14878:15:48;;;14860:34;;14930:15;;14925:2;14910:18;;14903:43;14977:2;14962:18;;14955:34;;;15025:3;15020:2;15005:18;;14998:31;;;14803:4;;15046:46;;15072:19;;15064:6;15046:46;:::i;:::-;15038:54;14609:489;-1:-1:-1;;;;;;14609:489:48:o;15103:249::-;15172:6;15225:2;15213:9;15204:7;15200:23;15196:32;15193:52;;;15241:1;15238;15231:12;15193:52;15273:9;15267:16;15292:30;15316:5;15292:30;:::i;15357:127::-;15418:10;15413:3;15409:20;15406:1;15399:31;15449:4;15446:1;15439:15;15473:4;15470:1;15463:15;15489:120;15529:1;15555;15545:35;;15560:18;;:::i;:::-;-1:-1:-1;15594:9:48;;15489:120::o;15614:112::-;15646:1;15672;15662:35;;15677:18;;:::i;:::-;-1:-1:-1;15711:9:48;;15614:112::o;15731:127::-;15792:10;15787:3;15783:20;15780:1;15773:31;15823:4;15820:1;15813:15;15847:4;15844:1;15837:15", "abi": "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"MintedNFT\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"name\":\"mintNFT\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b5060405162001bdd38038062001bdd833981016040819052620000349162000193565b818160006200004483826200028c565b5060016200005382826200028c565b505050620000706200006a6200007860201b60201c565b6200007c565b505062000358565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000f657600080fd5b81516001600160401b0380821115620001135762000113620000ce565b604051601f8301601f19908116603f011681019082821181831017156200013e576200013e620000ce565b816040528381526020925086838588010111156200015b57600080fd5b600091505b838210156200017f578582018301518183018401529082019062000160565b600093810190920192909252949350505050565b60008060408385031215620001a757600080fd5b82516001600160401b0380821115620001bf57600080fd5b620001cd86838701620000e4565b93506020850151915080821115620001e457600080fd5b50620001f385828601620000e4565b9150509250929050565b600181811c908216806200021257607f821691505b6020821081036200023357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028757600081815260208120601f850160051c81016020861015620002625750805b601f850160051c820191505b8181101562000283578281556001016200026e565b5050505b505050565b81516001600160401b03811115620002a857620002a8620000ce565b620002c081620002b98454620001fd565b8462000239565b602080601f831160018114620002f85760008415620002df5750858301515b600019600386901b1c1916600185901b17855562000283565b600085815260208120601f198616915b82811015620003295788860151825594840194600190910190840162000308565b5085821015620003485787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61187580620003686000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde1461022f578063c87b56dd14610242578063e985e9c514610255578063eacabe1414610268578063f2fde38b1461027b57600080fd5b8063715018a6146101fb5780638da5cb5b1461020357806395d89b4114610214578063a22cb4651461021c57600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab5780636352211e146101be57806370a08231146101d1578063714cff56146101f257600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e6101293660046111e6565b61028e565b60405190151581526020015b60405180910390f35b61014b6102e0565b60405161013a9190611253565b61016b610166366004611266565b610372565b6040516001600160a01b03909116815260200161013a565b61019661019136600461129b565b610399565b005b6101966101a63660046112c5565b6104b3565b6101966101b93660046112c5565b6104e4565b61016b6101cc366004611266565b6104ff565b6101e46101df366004611301565b61055f565b60405190815260200161013a565b6101e460085481565b6101966105e5565b6007546001600160a01b031661016b565b61014b6105f9565b61019661022a36600461131c565b610608565b61019661023d3660046113e4565b610617565b61014b610250366004611266565b61064f565b61012e610263366004611460565b61075f565b610196610276366004611493565b61078d565b610196610289366004611301565b61084b565b60006001600160e01b031982166380ac58cd60e01b14806102bf57506001600160e01b03198216635b5e139f60e01b145b806102da57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102ef906114f5565b80601f016020809104026020016040519081016040528092919081815260200182805461031b906114f5565b80156103685780601f1061033d57610100808354040283529160200191610368565b820191906000526020600020905b81548152906001019060200180831161034b57829003601f168201915b5050505050905090565b600061037d826108c4565b506000908152600460205260409020546001600160a01b031690565b60006103a4826104ff565b9050806001600160a01b0316836001600160a01b0316036104165760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806104325750610432813361075f565b6104a45760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161040d565b6104ae8383610923565b505050565b6104bd3382610991565b6104d95760405162461bcd60e51b815260040161040d9061152f565b6104ae8383836109ef565b6104ae83838360405180602001604052806000815250610617565b6000818152600260205260408120546001600160a01b0316806102da5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161040d565b60006001600160a01b0382166105c95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161040d565b506001600160a01b031660009081526003602052604090205490565b6105ed610b8b565b6105f76000610be5565b565b6060600180546102ef906114f5565b610613338383610c37565b5050565b6106213383610991565b61063d5760405162461bcd60e51b815260040161040d9061152f565b61064984848484610d05565b50505050565b606061065a826108c4565b60008281526006602052604081208054610673906114f5565b80601f016020809104026020016040519081016040528092919081815260200182805461069f906114f5565b80156106ec5780601f106106c1576101008083540402835291602001916106ec565b820191906000526020600020905b8154815290600101906020018083116106cf57829003601f168201915b50505050509050600061070a60408051602081019091526000815290565b9050805160000361071c575092915050565b81511561074e57808260405160200161073692919061157d565b60405160208183030381529060405292505050919050565b61075784610d38565b949350505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610795610b8b565b6001600160a01b0382166107dd5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161040d565b600880549060006107ed836115c2565b91905055506107fe82600854610dac565b61080a60085482610dc6565b7f9f0432214927ca5d54e705bee45cb45cd0b88d9c6bc15906cc3498feb1d81310826008548360405161083f939291906115db565b60405180910390a15050565b610853610b8b565b6001600160a01b0381166108b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040d565b6108c181610be5565b50565b6000818152600260205260409020546001600160a01b03166108c15760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161040d565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610958826104ff565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061099d836104ff565b9050806001600160a01b0316846001600160a01b031614806109c457506109c4818561075f565b806107575750836001600160a01b03166109dd84610372565b6001600160a01b031614949350505050565b826001600160a01b0316610a02826104ff565b6001600160a01b031614610a665760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161040d565b6001600160a01b038216610ac85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161040d565b610ad3600082610923565b6001600160a01b0383166000908152600360205260408120805460019290610afc90849061160b565b90915550506001600160a01b0382166000908152600360205260408120805460019290610b2a90849061161e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6007546001600160a01b031633146105f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603610c985760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161040d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d108484846109ef565b610d1c84848484610e59565b6106495760405162461bcd60e51b815260040161040d90611631565b6060610d43826108c4565b6000610d5a60408051602081019091526000815290565b90506000815111610d7a5760405180602001604052806000815250610da5565b80610d8484610f5a565b604051602001610d9592919061157d565b6040516020818303038152906040525b9392505050565b61061382826040518060200160405280600081525061105b565b6000828152600260205260409020546001600160a01b0316610e415760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161040d565b60008281526006602052604090206104ae82826116d1565b60006001600160a01b0384163b15610f4f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610e9d903390899088908890600401611791565b6020604051808303816000875af1925050508015610ed8575060408051601f3d908101601f19168201909252610ed5918101906117ce565b60015b610f35573d808015610f06576040519150601f19603f3d011682016040523d82523d6000602084013e610f0b565b606091505b508051600003610f2d5760405162461bcd60e51b815260040161040d90611631565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610757565b506001949350505050565b606081600003610f815750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610fab5780610f95816115c2565b9150610fa49050600a83611801565b9150610f85565b60008167ffffffffffffffff811115610fc657610fc6611358565b6040519080825280601f01601f191660200182016040528015610ff0576020820181803683370190505b5090505b84156107575761100560018361160b565b9150611012600a86611815565b61101d90603061161e565b60f81b81838151811061103257611032611829565b60200101906001600160f81b031916908160001a905350611054600a86611801565b9450610ff4565b611065838361108e565b6110726000848484610e59565b6104ae5760405162461bcd60e51b815260040161040d90611631565b6001600160a01b0382166110e45760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161040d565b6000818152600260205260409020546001600160a01b0316156111495760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161040d565b6001600160a01b038216600090815260036020526040812080546001929061117290849061161e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b0319811681146108c157600080fd5b6000602082840312156111f857600080fd5b8135610da5816111d0565b60005b8381101561121e578181015183820152602001611206565b50506000910152565b6000815180845261123f816020860160208601611203565b601f01601f19169290920160200192915050565b602081526000610da56020830184611227565b60006020828403121561127857600080fd5b5035919050565b80356001600160a01b038116811461129657600080fd5b919050565b600080604083850312156112ae57600080fd5b6112b78361127f565b946020939093013593505050565b6000806000606084860312156112da57600080fd5b6112e38461127f565b92506112f16020850161127f565b9150604084013590509250925092565b60006020828403121561131357600080fd5b610da58261127f565b6000806040838503121561132f57600080fd5b6113388361127f565b91506020830135801515811461134d57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561138957611389611358565b604051601f8501601f19908116603f011681019082821181831017156113b1576113b1611358565b816040528093508581528686860111156113ca57600080fd5b858560208301376000602087830101525050509392505050565b600080600080608085870312156113fa57600080fd5b6114038561127f565b93506114116020860161127f565b925060408501359150606085013567ffffffffffffffff81111561143457600080fd5b8501601f8101871361144557600080fd5b6114548782356020840161136e565b91505092959194509250565b6000806040838503121561147357600080fd5b61147c8361127f565b915061148a6020840161127f565b90509250929050565b600080604083850312156114a657600080fd5b6114af8361127f565b9150602083013567ffffffffffffffff8111156114cb57600080fd5b8301601f810185136114dc57600080fd5b6114eb8582356020840161136e565b9150509250929050565b600181811c9082168061150957607f821691505b60208210810361152957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000835161158f818460208801611203565b8351908301906115a3818360208801611203565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016115d4576115d46115ac565b5060010190565b60018060a01b03841681528260208201526060604082015260006116026060830184611227565b95945050505050565b818103818111156102da576102da6115ac565b808201808211156102da576102da6115ac565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b601f8211156104ae57600081815260208120601f850160051c810160208610156116aa5750805b601f850160051c820191505b818110156116c9578281556001016116b6565b505050505050565b815167ffffffffffffffff8111156116eb576116eb611358565b6116ff816116f984546114f5565b84611683565b602080601f831160018114611734576000841561171c5750858301515b600019600386901b1c1916600185901b1785556116c9565b600085815260208120601f198616915b8281101561176357888601518255948401946001909101908401611744565b50858210156117815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906117c490830184611227565b9695505050505050565b6000602082840312156117e057600080fd5b8151610da5816111d0565b634e487b7160e01b600052601260045260246000fd5b600082611810576118106117eb565b500490565b600082611824576118246117eb565b500690565b634e487b7160e01b600052603260045260246000fdfea264697066735822122055b4e07304fe036fe3f04e44a7921cbb4fce75fcf1885d1110f1e529fecb60a764736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde1461022f578063c87b56dd14610242578063e985e9c514610255578063eacabe1414610268578063f2fde38b1461027b57600080fd5b8063715018a6146101fb5780638da5cb5b1461020357806395d89b4114610214578063a22cb4651461021c57600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab5780636352211e146101be57806370a08231146101d1578063714cff56146101f257600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e6101293660046111e6565b61028e565b60405190151581526020015b60405180910390f35b61014b6102e0565b60405161013a9190611253565b61016b610166366004611266565b610372565b6040516001600160a01b03909116815260200161013a565b61019661019136600461129b565b610399565b005b6101966101a63660046112c5565b6104b3565b6101966101b93660046112c5565b6104e4565b61016b6101cc366004611266565b6104ff565b6101e46101df366004611301565b61055f565b60405190815260200161013a565b6101e460085481565b6101966105e5565b6007546001600160a01b031661016b565b61014b6105f9565b61019661022a36600461131c565b610608565b61019661023d3660046113e4565b610617565b61014b610250366004611266565b61064f565b61012e610263366004611460565b61075f565b610196610276366004611493565b61078d565b610196610289366004611301565b61084b565b60006001600160e01b031982166380ac58cd60e01b14806102bf57506001600160e01b03198216635b5e139f60e01b145b806102da57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102ef906114f5565b80601f016020809104026020016040519081016040528092919081815260200182805461031b906114f5565b80156103685780601f1061033d57610100808354040283529160200191610368565b820191906000526020600020905b81548152906001019060200180831161034b57829003601f168201915b5050505050905090565b600061037d826108c4565b506000908152600460205260409020546001600160a01b031690565b60006103a4826104ff565b9050806001600160a01b0316836001600160a01b0316036104165760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806104325750610432813361075f565b6104a45760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161040d565b6104ae8383610923565b505050565b6104bd3382610991565b6104d95760405162461bcd60e51b815260040161040d9061152f565b6104ae8383836109ef565b6104ae83838360405180602001604052806000815250610617565b6000818152600260205260408120546001600160a01b0316806102da5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161040d565b60006001600160a01b0382166105c95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161040d565b506001600160a01b031660009081526003602052604090205490565b6105ed610b8b565b6105f76000610be5565b565b6060600180546102ef906114f5565b610613338383610c37565b5050565b6106213383610991565b61063d5760405162461bcd60e51b815260040161040d9061152f565b61064984848484610d05565b50505050565b606061065a826108c4565b60008281526006602052604081208054610673906114f5565b80601f016020809104026020016040519081016040528092919081815260200182805461069f906114f5565b80156106ec5780601f106106c1576101008083540402835291602001916106ec565b820191906000526020600020905b8154815290600101906020018083116106cf57829003601f168201915b50505050509050600061070a60408051602081019091526000815290565b9050805160000361071c575092915050565b81511561074e57808260405160200161073692919061157d565b60405160208183030381529060405292505050919050565b61075784610d38565b949350505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610795610b8b565b6001600160a01b0382166107dd5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161040d565b600880549060006107ed836115c2565b91905055506107fe82600854610dac565b61080a60085482610dc6565b7f9f0432214927ca5d54e705bee45cb45cd0b88d9c6bc15906cc3498feb1d81310826008548360405161083f939291906115db565b60405180910390a15050565b610853610b8b565b6001600160a01b0381166108b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040d565b6108c181610be5565b50565b6000818152600260205260409020546001600160a01b03166108c15760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161040d565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610958826104ff565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061099d836104ff565b9050806001600160a01b0316846001600160a01b031614806109c457506109c4818561075f565b806107575750836001600160a01b03166109dd84610372565b6001600160a01b031614949350505050565b826001600160a01b0316610a02826104ff565b6001600160a01b031614610a665760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161040d565b6001600160a01b038216610ac85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161040d565b610ad3600082610923565b6001600160a01b0383166000908152600360205260408120805460019290610afc90849061160b565b90915550506001600160a01b0382166000908152600360205260408120805460019290610b2a90849061161e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6007546001600160a01b031633146105f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603610c985760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161040d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d108484846109ef565b610d1c84848484610e59565b6106495760405162461bcd60e51b815260040161040d90611631565b6060610d43826108c4565b6000610d5a60408051602081019091526000815290565b90506000815111610d7a5760405180602001604052806000815250610da5565b80610d8484610f5a565b604051602001610d9592919061157d565b6040516020818303038152906040525b9392505050565b61061382826040518060200160405280600081525061105b565b6000828152600260205260409020546001600160a01b0316610e415760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161040d565b60008281526006602052604090206104ae82826116d1565b60006001600160a01b0384163b15610f4f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610e9d903390899088908890600401611791565b6020604051808303816000875af1925050508015610ed8575060408051601f3d908101601f19168201909252610ed5918101906117ce565b60015b610f35573d808015610f06576040519150601f19603f3d011682016040523d82523d6000602084013e610f0b565b606091505b508051600003610f2d5760405162461bcd60e51b815260040161040d90611631565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610757565b506001949350505050565b606081600003610f815750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610fab5780610f95816115c2565b9150610fa49050600a83611801565b9150610f85565b60008167ffffffffffffffff811115610fc657610fc6611358565b6040519080825280601f01601f191660200182016040528015610ff0576020820181803683370190505b5090505b84156107575761100560018361160b565b9150611012600a86611815565b61101d90603061161e565b60f81b81838151811061103257611032611829565b60200101906001600160f81b031916908160001a905350611054600a86611801565b9450610ff4565b611065838361108e565b6110726000848484610e59565b6104ae5760405162461bcd60e51b815260040161040d90611631565b6001600160a01b0382166110e45760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161040d565b6000818152600260205260409020546001600160a01b0316156111495760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161040d565b6001600160a01b038216600090815260036020526040812080546001929061117290849061161e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b0319811681146108c157600080fd5b6000602082840312156111f857600080fd5b8135610da5816111d0565b60005b8381101561121e578181015183820152602001611206565b50506000910152565b6000815180845261123f816020860160208601611203565b601f01601f19169290920160200192915050565b602081526000610da56020830184611227565b60006020828403121561127857600080fd5b5035919050565b80356001600160a01b038116811461129657600080fd5b919050565b600080604083850312156112ae57600080fd5b6112b78361127f565b946020939093013593505050565b6000806000606084860312156112da57600080fd5b6112e38461127f565b92506112f16020850161127f565b9150604084013590509250925092565b60006020828403121561131357600080fd5b610da58261127f565b6000806040838503121561132f57600080fd5b6113388361127f565b91506020830135801515811461134d57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561138957611389611358565b604051601f8501601f19908116603f011681019082821181831017156113b1576113b1611358565b816040528093508581528686860111156113ca57600080fd5b858560208301376000602087830101525050509392505050565b600080600080608085870312156113fa57600080fd5b6114038561127f565b93506114116020860161127f565b925060408501359150606085013567ffffffffffffffff81111561143457600080fd5b8501601f8101871361144557600080fd5b6114548782356020840161136e565b91505092959194509250565b6000806040838503121561147357600080fd5b61147c8361127f565b915061148a6020840161127f565b90509250929050565b600080604083850312156114a657600080fd5b6114af8361127f565b9150602083013567ffffffffffffffff8111156114cb57600080fd5b8301601f810185136114dc57600080fd5b6114eb8582356020840161136e565b9150509250929050565b600181811c9082168061150957607f821691505b60208210810361152957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000835161158f818460208801611203565b8351908301906115a3818360208801611203565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016115d4576115d46115ac565b5060010190565b60018060a01b03841681528260208201526060604082015260006116026060830184611227565b95945050505050565b818103818111156102da576102da6115ac565b808201808211156102da576102da6115ac565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b601f8211156104ae57600081815260208120601f850160051c810160208610156116aa5750805b601f850160051c820191505b818110156116c9578281556001016116b6565b505050505050565b815167ffffffffffffffff8111156116eb576116eb611358565b6116ff816116f984546114f5565b84611683565b602080601f831160018114611734576000841561171c5750858301515b600019600386901b1c1916600185901b1785556116c9565b600085815260208120601f198616915b8281101561176357888601518255948401946001909101908401611744565b50858210156117815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906117c490830184611227565b9695505050505050565b6000602082840312156117e057600080fd5b8151610da5816111d0565b634e487b7160e01b600052601260045260246000fd5b600082611810576118106117eb565b500490565b600082611824576118246117eb565b500690565b634e487b7160e01b600052603260045260246000fdfea264697066735822122055b4e07304fe036fe3f04e44a7921cbb4fce75fcf1885d1110f1e529fecb60a764736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/IOUToken.sol:IOUToken": {"srcmap": "191:412:33:-:0;;;224:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;326:5;333:7;2044:5:19;:13;326:5:33;2044::19;:13;:::i;:::-;-1:-1:-1;2067:7:19;:17;2077:7;2067;:17;:::i;:::-;;1978:113;;352:29:33::1;358:8;368:12;352:5;;;:29;;:::i;:::-;224:164:::0;;;;191:412;;8402:389:19;-1:-1:-1;;;;;8485:21:19;;8477:65;;;;-1:-1:-1;;;8477:65:19;;4578:2:48;8477:65:19;;;4560:21:48;4617:2;4597:18;;;4590:30;4656:33;4636:18;;;4629:61;4707:18;;8477:65:19;;;;;;;;8629:6;8613:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8645:18:19;;:9;:18;;;;;;;;;;:28;;8667:6;;8645:9;:28;;8667:6;;8645:28;:::i;:::-;;;;-1:-1:-1;;8688:37:19;;5109:25:48;;;-1:-1:-1;;;;;8688:37:19;;;8705:1;;8688:37;;5097:2:48;5082:18;8688:37:19;;;;;;;8402:389;;:::o;11786:121::-;;;;:::o;14:127:48:-;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:48;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:48;;;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:48:o;991:791::-;1108:6;1116;1124;1132;1185:3;1173:9;1164:7;1160:23;1156:33;1153:53;;;1202:1;1199;1192:12;1153:53;1228:16;;-1:-1:-1;;;;;1273:31:48;;1263:42;;1253:70;;1319:1;1316;1309:12;1253:70;1387:2;1372:18;;1366:25;1435:2;1420:18;;1414:25;1342:5;;-1:-1:-1;1366:25:48;-1:-1:-1;;;;;;1488:14:48;;;1485:34;;;1515:1;1512;1505:12;1485:34;1538:61;1591:7;1582:6;1571:9;1567:22;1538:61;:::i;:::-;1528:71;;1645:2;1634:9;1630:18;1624:25;1608:41;;1674:2;1664:8;1661:16;1658:36;;;1690:1;1687;1680:12;1658:36;;1713:63;1768:7;1757:8;1746:9;1742:24;1713:63;:::i;:::-;1703:73;;;991:791;;;;;;;:::o;1787:380::-;1866:1;1862:12;;;;1909;;;1930:61;;1984:4;1976:6;1972:17;1962:27;;1930:61;2037:2;2029:6;2026:14;2006:18;2003:38;2000:161;;2083:10;2078:3;2074:20;2071:1;2064:31;2118:4;2115:1;2108:15;2146:4;2143:1;2136:15;2000:161;;1787:380;;;:::o;2298:545::-;2400:2;2395:3;2392:11;2389:448;;;2436:1;2461:5;2457:2;2450:17;2506:4;2502:2;2492:19;2576:2;2564:10;2560:19;2557:1;2553:27;2547:4;2543:38;2612:4;2600:10;2597:20;2594:47;;;-1:-1:-1;2635:4:48;2594:47;2690:2;2685:3;2681:12;2678:1;2674:20;2668:4;2664:31;2654:41;;2745:82;2763:2;2756:5;2753:13;2745:82;;;2808:17;;;2789:1;2778:13;2745:82;;;2749:3;;;2298:545;;;:::o;3019:1352::-;3139:10;;-1:-1:-1;;;;;3161:30:48;;3158:56;;;3194:18;;:::i;:::-;3223:97;3313:6;3273:38;3305:4;3299:11;3273:38;:::i;:::-;3267:4;3223:97;:::i;:::-;3375:4;;3439:2;3428:14;;3456:1;3451:663;;;;4158:1;4175:6;4172:89;;;-1:-1:-1;4227:19:48;;;4221:26;4172:89;-1:-1:-1;;2976:1:48;2972:11;;;2968:24;2964:29;2954:40;3000:1;2996:11;;;2951:57;4274:81;;3421:944;;3451:663;2245:1;2238:14;;;2282:4;2269:18;;-1:-1:-1;;3487:20:48;;;3605:236;3619:7;3616:1;3613:14;3605:236;;;3708:19;;;3702:26;3687:42;;3800:27;;;;3768:1;3756:14;;;;3635:19;;3605:236;;;3609:3;3869:6;3860:7;3857:19;3854:201;;;3930:19;;;3924:26;-1:-1:-1;;4013:1:48;4009:14;;;4025:3;4005:24;4001:37;3997:42;3982:58;3967:74;;3854:201;-1:-1:-1;;;;;4101:1:48;4085:14;;;4081:22;4068:36;;-1:-1:-1;3019:1352:48:o;4736:222::-;4801:9;;;4822:10;;;4819:133;;;4874:10;4869:3;4865:20;4862:1;4855:31;4909:4;4906:1;4899:15;4937:4;4934:1;4927:15;4819:133;4736:222;;;;:::o;4963:177::-;191:412:33;;;;;;", "srcmap-runtime": "191:412:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:48;;1162:22;1144:41;;1132:2;1117:18;4433:197:19;1004:187:48;3244:106:19;3331:12;;3244:106;;;1342:25:48;;;1330:2;1315:18;3244:106:19;1196:177:48;5192:286:19;;;;;;:::i;:::-;;:::i;3093:91::-;;;3175:2;1853:36:48;;1841:2;1826:18;3093:91:19;1711:184:48;5873:234:19;;;;;;:::i;:::-;;:::i;516:85:33:-;;;;;;:::i;:::-;;:::i;:::-;;3408:125:19;;;;;;:::i;:::-;-1:-1:-1;;;;;3508:18:19;3482:7;3508:18;;;;;;;;;;;;3408:125;2367:102;;;:::i;6594:427::-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;;:::i;2156:98::-;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:28;4570:32:19;719:10:28;4586:7:19;4595:6;4570:8;:32::i;:::-;4619:4;4612:11;;;4433:197;;;;;:::o;5192:286::-;5319:4;719:10:28;5375:38:19;5391:4;719:10:28;5406:6:19;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:19;;5192:286;-1:-1:-1;;;;5192:286:19:o;5873:234::-;5961:4;719:10:28;6015:64:19;719:10:28;6031:7:19;6068:10;6040:25;719:10:28;6031:7:19;6040:9;:25::i;:::-;:38;;;;:::i;:::-;6015:8;:64::i;516:85:33:-;566:28;719:10:28;586:7:33;566:5;:28::i;:::-;516:85;:::o;2367:102:19:-;2423:13;2455:7;2448:14;;;;;:::i;6594:427::-;6687:4;719:10:28;6687:4:19;6768:25;719:10:28;6785:7:19;6768:9;:25::i;:::-;6741:52;;6831:15;6811:16;:35;;6803:85;;;;-1:-1:-1;;;6803:85:19;;3390:2:48;6803:85:19;;;3372:21:48;3429:2;3409:18;;;3402:30;3468:34;3448:18;;;3441:62;-1:-1:-1;;;3519:18:48;;;3512:35;3564:19;;6803:85:19;;;;;;;;;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;3729:189::-;3808:4;719:10:28;3862:28:19;719:10:28;3879:2:19;3883:6;3862:9;:28::i;3976:149::-;-1:-1:-1;;;;;4091:18:19;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149::o;10110:370::-;-1:-1:-1;;;;;10241:19:19;;10233:68;;;;-1:-1:-1;;;10233:68:19;;3796:2:48;10233:68:19;;;3778:21:48;3835:2;3815:18;;;3808:30;3874:34;3854:18;;;3847:62;-1:-1:-1;;;3925:18:48;;;3918:34;3969:19;;10233:68:19;3594:400:48;10233:68:19;-1:-1:-1;;;;;10319:21:19;;10311:68;;;;-1:-1:-1;;;10311:68:19;;4201:2:48;10311:68:19;;;4183:21:48;4240:2;4220:18;;;4213:30;4279:34;4259:18;;;4252:62;-1:-1:-1;;;4330:18:48;;;4323:32;4372:19;;10311:68:19;3999:398:48;10311:68:19;-1:-1:-1;;;;;10390:18:19;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10441:32;;1342:25:48;;;10441:32:19;;1315:18:48;10441:32:19;;;;;;;;10110:370;;;:::o;10761:441::-;10891:24;10918:25;10928:5;10935:7;10918:9;:25::i;:::-;10891:52;;-1:-1:-1;;10957:16:19;:37;10953:243;;11038:6;11018:16;:26;;11010:68;;;;-1:-1:-1;;;11010:68:19;;4604:2:48;11010:68:19;;;4586:21:48;4643:2;4623:18;;;4616:30;4682:31;4662:18;;;4655:59;4731:18;;11010:68:19;4402:353:48;11010:68:19;11120:51;11129:5;11136:7;11164:6;11145:16;:25;11120:8;:51::i;:::-;10881:321;10761:441;;;:::o;7475:651::-;-1:-1:-1;;;;;7601:18:19;;7593:68;;;;-1:-1:-1;;;7593:68:19;;4962:2:48;7593:68:19;;;4944:21:48;5001:2;4981:18;;;4974:30;5040:34;5020:18;;;5013:62;-1:-1:-1;;;5091:18:48;;;5084:35;5136:19;;7593:68:19;4760:401:48;7593:68:19;-1:-1:-1;;;;;7679:16:19;;7671:64;;;;-1:-1:-1;;;7671:64:19;;5368:2:48;7671:64:19;;;5350:21:48;5407:2;5387:18;;;5380:30;5446:34;5426:18;;;5419:62;-1:-1:-1;;;5497:18:48;;;5490:33;5540:19;;7671:64:19;5166:399:48;7671:64:19;-1:-1:-1;;;;;7817:15:19;;7795:19;7817:15;;;;;;;;;;;7850:21;;;;7842:72;;;;-1:-1:-1;;;7842:72:19;;5772:2:48;7842:72:19;;;5754:21:48;5811:2;5791:18;;;5784:30;5850:34;5830:18;;;5823:62;-1:-1:-1;;;5901:18:48;;;5894:36;5947:19;;7842:72:19;5570:402:48;7842:72:19;-1:-1:-1;;;;;7948:15:19;;;:9;:15;;;;;;;;;;;7966:20;;;7948:38;;8006:13;;;;;;;;:23;;7980:6;;7948:9;8006:23;;7980:6;;8006:23;:::i;:::-;;;;;;;;8060:2;-1:-1:-1;;;;;8045:26:19;8054:4;-1:-1:-1;;;;;8045:26:19;;8064:6;8045:26;;;;1342:25:48;;1330:2;1315:18;;1196:177;8045:26:19;;;;;;;;8082:37;9111:576;;-1:-1:-1;;;;;9194:21:19;;9186:67;;;;-1:-1:-1;;;9186:67:19;;6179:2:48;9186:67:19;;;6161:21:48;6218:2;6198:18;;;6191:30;6257:34;6237:18;;;6230:62;-1:-1:-1;;;6308:18:48;;;6301:31;6349:19;;9186:67:19;5977:397:48;9186:67:19;-1:-1:-1;;;;;9349:18:19;;9324:22;9349:18;;;;;;;;;;;9385:24;;;;9377:71;;;;-1:-1:-1;;;9377:71:19;;6581:2:48;9377:71:19;;;6563:21:48;6620:2;6600:18;;;6593:30;6659:34;6639:18;;;6632:62;-1:-1:-1;;;6710:18:48;;;6703:32;6752:19;;9377:71:19;6379:398:48;9377:71:19;-1:-1:-1;;;;;9482:18:19;;:9;:18;;;;;;;;;;9503:23;;;9482:44;;9546:12;:22;;9520:6;;9482:9;9546:22;;9520:6;;9546:22;:::i;:::-;;;;-1:-1:-1;;9584:37:19;;1342:25:48;;;9610:1:19;;-1:-1:-1;;;;;9584:37:19;;;;;1330:2:48;1315:18;9584:37:19;1196:177:48;14:548;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:48;;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:48: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:180::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;-1:-1:-1;2051:23:48;;1900:180;-1:-1:-1;1900:180:48:o;2085:186::-;2144:6;2197:2;2185:9;2176:7;2172:23;2168:32;2165:52;;;2213:1;2210;2203:12;2165:52;2236:29;2255:9;2236:29;:::i;:::-;2226:39;2085:186;-1:-1:-1;;;2085:186:48:o;2276:260::-;2344:6;2352;2405:2;2393:9;2384:7;2380:23;2376:32;2373:52;;;2421:1;2418;2411:12;2373:52;2444:29;2463:9;2444:29;:::i;:::-;2434:39;;2492:38;2526:2;2515:9;2511:18;2492:38;:::i;:::-;2482:48;;2276:260;;;;;:::o;2541:380::-;2620:1;2616:12;;;;2663;;;2684:61;;2738:4;2730:6;2726:17;2716:27;;2684:61;2791:2;2783:6;2780:14;2760:18;2757:38;2754:161;;2837:10;2832:3;2828:20;2825:1;2818:31;2872:4;2869:1;2862:15;2900:4;2897:1;2890:15;2754:161;;2541:380;;;:::o;2926:127::-;2987:10;2982:3;2978:20;2975:1;2968:31;3018:4;3015:1;3008:15;3042:4;3039:1;3032:15;3058:125;3123:9;;;3144:10;;;3141:36;;;3157:18;;:::i;6782:128::-;6849:9;;;6870:11;;;6867:37;;;6884:18;;:::i", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply_\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount_\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"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\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b5060405162000e6e38038062000e6e833981016040819052620000349162000224565b8181600362000044838262000346565b50600462000053828262000346565b5050506200006884846200007260201b60201c565b505050506200043a565b6001600160a01b038216620000cd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000e1919062000412565b90915550506001600160a01b038216600090815260208190526040812080548392906200011090849062000412565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200018757600080fd5b81516001600160401b0380821115620001a457620001a46200015f565b604051601f8301601f19908116603f01168101908282118183101715620001cf57620001cf6200015f565b81604052838152602092508683858801011115620001ec57600080fd5b600091505b83821015620002105785820183015181830184015290820190620001f1565b600093810190920192909252949350505050565b600080600080608085870312156200023b57600080fd5b84516001600160a01b03811681146200025357600080fd5b6020860151604087015191955093506001600160401b03808211156200027857600080fd5b620002868883890162000175565b935060608701519150808211156200029d57600080fd5b50620002ac8782880162000175565b91505092959194509250565b600181811c90821680620002cd57607f821691505b602082108103620002ee57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200015a57600081815260208120601f850160051c810160208610156200031d5750805b601f850160051c820191505b818110156200033e5782815560010162000329565b505050505050565b81516001600160401b038111156200036257620003626200015f565b6200037a81620003738454620002b8565b84620002f4565b602080601f831160018114620003b25760008415620003995750858301515b600019600386901b1c1916600185901b1785556200033e565b600085815260208120601f198616915b82811015620003e357888601518255948401946001909101908401620003c2565b5085821015620004025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200043457634e487b7160e01b600052601160045260246000fd5b92915050565b610a24806200044a6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806342966c681161007157806342966c681461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061083a565b60405180910390f35b6100ea6100e53660046108a4565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046108ce565b61026c565b604051601281526020016100ce565b6100ea61013c3660046108a4565b610290565b61015461014f36600461090a565b6102b2565b005b6100fe610164366004610923565b6001600160a01b031660009081526020819052604090205490565b6100c16102bf565b6100ea6101953660046108a4565b6102ce565b6100ea6101a83660046108a4565b61034e565b6100fe6101bb366004610945565b61035c565b6060600380546101cf90610978565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610978565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610387565b60019150505b92915050565b60003361027a8582856104ac565b610285858585610526565b506001949350505050565b6000336102608185856102a3838361035c565b6102ad91906109c8565b610387565b6102bc33826106f4565b50565b6060600480546101cf90610978565b600033816102dc828661035c565b9050838110156103415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102858286868403610387565b600033610260818585610526565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103e95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610338565b6001600160a01b03821661044a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610338565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104b8848461035c565b9050600019811461052057818110156105135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610338565b6105208484848403610387565b50505050565b6001600160a01b03831661058a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610338565b6001600160a01b0382166105ec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610338565b6001600160a01b038316600090815260208190526040902054818110156106645760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610338565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061069b9084906109c8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106e791815260200190565b60405180910390a3610520565b6001600160a01b0382166107545760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610338565b6001600160a01b038216600090815260208190526040902054818110156107c85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610338565b6001600160a01b03831660009081526020819052604081208383039055600280548492906107f79084906109db565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161049f565b600060208083528351808285015260005b818110156108675785810183015185820160400152820161084b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461089f57600080fd5b919050565b600080604083850312156108b757600080fd5b6108c083610888565b946020939093013593505050565b6000806000606084860312156108e357600080fd5b6108ec84610888565b92506108fa60208501610888565b9150604084013590509250925092565b60006020828403121561091c57600080fd5b5035919050565b60006020828403121561093557600080fd5b61093e82610888565b9392505050565b6000806040838503121561095857600080fd5b61096183610888565b915061096f60208401610888565b90509250929050565b600181811c9082168061098c57607f821691505b6020821081036109ac57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610266576102666109b2565b81810381811115610266576102666109b256fea26469706673582212206f580637e2726840ddefd5197269032aa3ba94a5d49ec58f0f176cc76bec3ecd64736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100b45760003560e01c806342966c681161007157806342966c681461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061083a565b60405180910390f35b6100ea6100e53660046108a4565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046108ce565b61026c565b604051601281526020016100ce565b6100ea61013c3660046108a4565b610290565b61015461014f36600461090a565b6102b2565b005b6100fe610164366004610923565b6001600160a01b031660009081526020819052604090205490565b6100c16102bf565b6100ea6101953660046108a4565b6102ce565b6100ea6101a83660046108a4565b61034e565b6100fe6101bb366004610945565b61035c565b6060600380546101cf90610978565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610978565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610387565b60019150505b92915050565b60003361027a8582856104ac565b610285858585610526565b506001949350505050565b6000336102608185856102a3838361035c565b6102ad91906109c8565b610387565b6102bc33826106f4565b50565b6060600480546101cf90610978565b600033816102dc828661035c565b9050838110156103415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102858286868403610387565b600033610260818585610526565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103e95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610338565b6001600160a01b03821661044a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610338565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104b8848461035c565b9050600019811461052057818110156105135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610338565b6105208484848403610387565b50505050565b6001600160a01b03831661058a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610338565b6001600160a01b0382166105ec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610338565b6001600160a01b038316600090815260208190526040902054818110156106645760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610338565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061069b9084906109c8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106e791815260200190565b60405180910390a3610520565b6001600160a01b0382166107545760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610338565b6001600160a01b038216600090815260208190526040902054818110156107c85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610338565b6001600160a01b03831660009081526020819052604081208383039055600280548492906107f79084906109db565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161049f565b600060208083528351808285015260005b818110156108675785810183015185820160400152820161084b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461089f57600080fd5b919050565b600080604083850312156108b757600080fd5b6108c083610888565b946020939093013593505050565b6000806000606084860312156108e357600080fd5b6108ec84610888565b92506108fa60208501610888565b9150604084013590509250925092565b60006020828403121561091c57600080fd5b5035919050565b60006020828403121561093557600080fd5b61093e82610888565b9392505050565b6000806040838503121561095857600080fd5b61096183610888565b915061096f60208401610888565b90509250929050565b600181811c9082168061098c57607f821691505b6020821081036109ac57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610266576102666109b2565b81810381811115610266576102666109b256fea26469706673582212206f580637e2726840ddefd5197269032aa3ba94a5d49ec58f0f176cc76bec3ecd64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/LearnToEarn.sol:LearnToEarn": {"srcmap": "798:11064:34:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "798:11064:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11022:156;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6349:1916;;;;;;:::i;:::-;;:::i;:::-;;8444:661;;;;;;:::i;:::-;;:::i;2071:101:0:-;;;:::i;2058:108:34:-;;;:::i;1441:85:0:-;1513:6;;1441:85;;-1:-1:-1;;;;;1513:6:0;;;3336:51:48;;3324:2;3309:18;1441:85:0;3190:203:48;9321:499:34;;;;;;:::i;:::-;;:::i;2825:2116::-;;;;;;:::i;:::-;;:::i;5131:704::-;;;;;;:::i;:::-;;:::i;10713:125::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2321:198:0:-;;;;;;:::i;:::-;;:::i;10024:563:34:-;;;;;;:::i;:::-;;:::i;:::-;;;6526:14:48;;6519:22;6501:41;;6489:2;6474:18;10024:563:34;6361:187:48;11022:156:34;11106:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11106:14:34;11139:22;;;;:11;:22;;;;;;;;-1:-1:-1;;;;;11139:32:34;;;;;;;;;;11132:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11139:32;;11132:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11022:156;;;;;:::o;6349:1916::-;1563:21;;;;:10;:21;;;;;:29;6549:9;;-1:-1:-1;;;;;1563:29:34;929:10:12;1563:45:34;1555:86;;;;-1:-1:-1;;;1555:86:34;;;;;;;:::i;:::-;;;;;;;;;1844:21:::1;::::0;;;:10:::1;:21;::::0;;;;:33:::1;;::::0;6573:9;;1844:38;1836:74:::1;;;;-1:-1:-1::0;;;1836:74:34::1;;;;;;;:::i;:::-;6594:21:::2;6618::::0;;;:10:::2;:21;::::0;;;;6657:18:::2;::::0;::::2;::::0;:34;-1:-1:-1;6657:34:34;::::2;::::0;:68:::2;;;6710:15;6695:12;:30;6657:68;6649:99;;;::::0;-1:-1:-1;;;6649:99:34;;7464:2:48;6649:99:34::2;::::0;::::2;7446:21:48::0;7503:2;7483:18;;;7476:30;-1:-1:-1;;;7522:18:48;;;7515:48;7580:18;;6649:99:34::2;7262:342:48::0;6649:99:34::2;6783:12;6766:14;:29;6758:63;;;::::0;-1:-1:-1;;;6758:63:34;;7811:2:48;6758:63:34::2;::::0;::::2;7793:21:48::0;7850:2;7830:18;;;7823:30;-1:-1:-1;;;7869:18:48;;;7862:51;7930:18;;6758:63:34::2;7609:345:48::0;6758:63:34::2;6832:23;6858:22:::0;;;:11:::2;:22;::::0;;;;;;;-1:-1:-1;;;;;6858:32:34;::::2;::::0;;;;;;;6908:21:::2;::::0;::::2;::::0;:26;6900:56:::2;;;::::0;-1:-1:-1;;;6900:56:34;;8161:2:48;6900:56:34::2;::::0;::::2;8143:21:48::0;8200:2;8180:18;;;8173:30;-1:-1:-1;;;8219:18:48;;;8212:47;8276:18;;6900:56:34::2;7959:341:48::0;6900:56:34::2;6967:34:::0;;;:19:::2;7037:48;7049:9:::0;7060:8;7070:14;7037:11:::2;:48::i;:::-;7096:21;::::0;::::2;:38:::0;;;7011:74;-1:-1:-1;7145:1062:34;::::2;;;7209:6;:12;;;7183:6;:22;;;:38;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;7235:32:34::2;::::0;::::2;:34:::0;;;:32:::2;:34;::::0;::::2;:::i;:::-;::::0;;;-1:-1:-1;;7307:15:34::2;7284:20;::::0;::::2;:38:::0;7341:19:::2;::::0;::::2;::::0;::::2;;7337:755;;;7443:12;::::0;::::2;::::0;7398:20:::2;::::0;::::2;::::0;7380:76:::2;::::0;-1:-1:-1;;;;;7398:20:34;;::::2;::::0;7433:8;;7380:52:::2;:76::i;:::-;7337:755;;;7499:17;::::0;::::2;::::0;::::2;::::0;::::2;;;7495:583;;;7545:9;7540:160;7564:6;:12;;;7560:1;:16;7540:160;;;7640:20;::::0;::::2;::::0;7629:47:::2;::::0;-1:-1:-1;;;7629:47:34;;-1:-1:-1;;;;;3354:32:48;;;7629:47:34::2;::::0;::::2;3336:51:48::0;7609:14:34::2;::::0;::::2;::::0;7640:20:::2;::::0;7629:37:::2;::::0;3309:18:48;;7629:47:34::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7609:68:::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;7609:68:34;;;::::2;::::0;;;;;::::2;::::0;7578:3;::::2;::::0;::::2;:::i;:::-;;;;7540:160;;;;7495:583;;;7772:6;:12;;;7754:7;:14;:30;7746:58;;;::::0;-1:-1:-1;;;7746:58:34;;9101:2:48;7746:58:34::2;::::0;::::2;9083:21:48::0;9140:2;9120:18;;;9113:30;-1:-1:-1;;;9159:18:48;;;9152:45;9214:18;;7746:58:34::2;8899:339:48::0;7746:58:34::2;7827:24:::0;;::::2;::::0;:14:::2;::::0;::::2;::::0;:24:::2;::::0;::::2;::::0;::::2;:::i;:::-;;7878:9;7873:187;7897:7;:14;7893:1;:18;7873:187;;;7963:20;::::0;::::2;::::0;-1:-1:-1;;;;;7963:20:34::2;7944:57;929:10:12::0;8016:8:34::2;8026:7;8034:1;8026:10;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;7944:93:::2;::::0;-1:-1:-1;;;;;;7944:93:34::2;::::0;;;;;;-1:-1:-1;;;;;9633:15:48;;;7944:93:34::2;::::0;::::2;9615:34:48::0;9685:15;;;;9665:18;;;9658:43;9717:18;;;9710:34;9550:18;;7944:93:34::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;7913:3;;;;;:::i;:::-;;;;7873:187;;;;7495:583;8145:20;::::0;::::2;::::0;8167:12:::2;::::0;::::2;::::0;8110:86:::2;::::0;-1:-1:-1;;;;;8145:20:34;;::::2;::::0;8110:86;::::2;::::0;8124:9;;8110:86:::2;::::0;::::2;::::0;8181:14:::2;::::0;::::2;::::0;8110:86:::2;:::i;:::-;;;;;;;;7145:1062;8222:36;::::0;-1:-1:-1;;;;;3354:32:48;;3336:51;;8238:9:34;;8222:36:::2;::::0;3324:2:48;3309:18;8222:36:34::2;;;;;;;6584:1681;;;1651:1:::1;6349:1916:::0;;;;;;:::o;8444:661::-;1563:21;;;;:10;:21;;;;;:29;8508:9;;-1:-1:-1;;;;;1563:29:34;929:10:12;1563:45:34;1555:86;;;;-1:-1:-1;;;1555:86:34;;;;;;;:::i;:::-;1844:21:::1;::::0;;;:10:::1;:21;::::0;;;;:33:::1;;::::0;8532:9;;1844:38;1836:74:::1;;;;-1:-1:-1::0;;;1836:74:34::1;;;;;;;:::i;:::-;8553:21:::2;8577::::0;;;:10:::2;:21;::::0;;;;8616:19:::2;::::0;::::2;::::0;::::2;;8608:46;;;::::0;-1:-1:-1;;;8608:46:34;;10688:2:48;8608:46:34::2;::::0;::::2;10670:21:48::0;10727:2;10707:18;;;10700:30;-1:-1:-1;;;10746:18:48;;;10739:44;10800:18;;8608:46:34::2;10486:338:48::0;8608:46:34::2;8697:1;8672:6;:22;;;:26;8664:52;;;::::0;-1:-1:-1;;;8664:52:34;;11031:2:48;8664:52:34::2;::::0;::::2;11013:21:48::0;11070:2;11050:18;;;11043:30;-1:-1:-1;;;11089:18:48;;;11082:43;11142:18;;8664:52:34::2;10829:337:48::0;8664:52:34::2;8734:22;::::0;::::2;::::0;;;::::2;;;::::0;:93:::2;;-1:-1:-1::0;8761:19:34::2;::::0;::::2;::::0;:24;;::::2;::::0;:65:::2;;;8807:6;:19;;;8789:15;:37;8761:65;8726:130;;;::::0;-1:-1:-1;;;8726:130:34;;11373:2:48;8726:130:34::2;::::0;::::2;11355:21:48::0;11412:2;11392:18;;;11385:30;11451:26;11431:18;;;11424:54;11495:18;;8726:130:34::2;11171:348:48::0;8726:130:34::2;8885:22;::::0;::::2;::::0;;8867:15:::2;8918:26:::0;;;9007:14;;-1:-1:-1;8972:20:34;::::2;::::0;8954:77:::2;::::0;-1:-1:-1;;;;;8972:20:34;;::::2;::::0;9007:14:::2;8885:22:::0;8954:52:::2;:77::i;:::-;9074:14:::0;;9047:51:::2;::::0;11670:25:48;;;-1:-1:-1;;;;;9074:14:34;;::::2;::::0;9063:9;;9047:51:::2;::::0;11658:2:48;11643:18;9047:51:34::2;;;;;;;8543:562;;1651:1:::1;8444:661:::0;;:::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;2058:108:34:-;3111:19:1;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:1;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:1;1476:19:11;:23;;;3219:66:1;;-1:-1:-1;3268:12:1;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:1;;11908:2:48;3157:201:1;;;11890:21:48;11947:2;11927:18;;;11920:30;11986:34;11966:18;;;11959:62;-1:-1:-1;;;12037:18:48;;;12030:44;12091:19;;3157:201:1;11706:410:48;3157:201:1;3368:12;:16;;-1:-1:-1;;3368:16:1;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:1;;;;;3394:65;2109:16:34::1;:14;:16::i;:::-;2135:24;:22;:24::i;:::-;3483:14:1::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:1;;;3553:14;;-1:-1:-1;12273:36:48;;3553:14:1;;12261:2:48;12246:18;3553:14:1;;;;;;;3479:99;3101:483;2058:108:34:o;9321:499::-;1563:21;;;;:10;:21;;;;;:29;9383:9;;-1:-1:-1;;;;;1563:29:34;929:10:12;1563:45:34;1555:86;;;;-1:-1:-1;;;1555:86:34;;;;;;;:::i;:::-;1844:21:::1;::::0;;;:10:::1;:21;::::0;;;;:33:::1;;::::0;9407:9;;1844:38;1836:74:::1;;;;-1:-1:-1::0;;;1836:74:34::1;;;;;;;:::i;:::-;9428:21:::2;9452::::0;;;:10:::2;:21;::::0;;;;9504:15:::2;9483:18;::::0;::::2;:36:::0;9548:22:::2;::::0;::::2;::::0;;9580:26;;;9621:19:::2;::::0;::::2;::::0;9452:21;;9548:22;9621:19:::2;;:34:::0;::::2;;;;9654:1;9644:7;:11;9621:34;9617:142;;;9724:14:::0;;;9689:20;::::2;::::0;9671:77:::2;::::0;-1:-1:-1;;;;;9689:20:34;;::::2;::::0;9724:14:::2;9740:7:::0;9671:52:::2;:77::i;:::-;9798:14:::0;;9773:40:::2;::::0;-1:-1:-1;;;;;9798:14:34;;::::2;::::0;9787:9;;9773:40:::2;::::0;9798:14:::2;::::0;9773:40:::2;9418:402;;1651:1:::1;9321:499:::0;;:::o;2825:2116::-;3069:7;1316:1;1306:7;:11;1298:35;;;;-1:-1:-1;;;1298:35:34;;;;;;;:::i;:::-;3086:6:::1;1316:1;1306:7;:11;1298:35;;;;-1:-1:-1::0;;;1298:35:34::1;;;;;;;:::i;:::-;1815:1:2::2;2569:7;;:19:::0;2561:63:::2;;;::::0;-1:-1:-1;;;2561:63:2;;12862:2:48;2561:63:2::2;::::0;::::2;12844:21:48::0;12901:2;12881:18;;;12874:30;12940:33;12920:18;;;12913:61;12991:18;;2561:63:2::2;12660:355:48::0;2561:63:2::2;1815:1;2699:7;:18:::0;-1:-1:-1;;;;;3125:28:34;::::3;3117:63;;;::::0;-1:-1:-1;;;3117:63:34;;13222:2:48;3117:63:34::3;::::0;::::3;13204:21:48::0;13261:2;13241:18;;;13234:30;-1:-1:-1;;;13280:18:48;;;13273:52;13342:18;;3117:63:34::3;13020:346:48::0;3117:63:34::3;3209:6;3198:7;:17;;3190:44;;;::::0;-1:-1:-1;;;3190:44:34;;13573:2:48;3190:44:34::3;::::0;::::3;13555:21:48::0;13612:2;13592:18;;;13585:30;-1:-1:-1;;;13631:18:48;;;13624:44;13685:18;;3190:44:34::3;13371:338:48::0;3190:44:34::3;3247:15:::0;;3244:123:::3;;3286:15;3272:10;:29;;3264:60;;;::::0;-1:-1:-1;;;3264:60:34;;7464:2:48;3264:60:34::3;::::0;::::3;7446:21:48::0;7503:2;7483:18;;;7476:30;-1:-1:-1;;;7522:18:48;;;7515:48;7580:18;;3264:60:34::3;7262:342:48::0;3264:60:34::3;3244:123;;;3352:15;3339:28;;3244:123;3378:24;3405:16;:91;;3447:18:::0;;;:48:::3;;;3485:10;3469:13;:26;3447:48;3405:91;;;3441:1;3425:13;:17;3405:91;3378:118;;3514:19;3506:54;;;::::0;-1:-1:-1;;;3506:54:34;;13916:2:48;3506:54:34::3;::::0;::::3;13898:21:48::0;13955:2;13935:18;;;13928:30;-1:-1:-1;;;13974:18:48;;;13967:52;14036:18;;3506:54:34::3;13714:346:48::0;3506:54:34::3;3571:17;3591:19;:17;:19::i;:::-;3571:39;;3620:16;3659:13;3654:551;;3825:62;-1:-1:-1::0;;;;;3825:32:34;::::3;-1:-1:-1::0;;;3825:32:34::3;:62::i;:::-;3811:76;;3907:11;3902:293;;3946:70;-1:-1:-1::0;;;;;3946:32:34;::::3;-1:-1:-1::0;;;3946:32:34::3;:70::i;:::-;3938:112;;;::::0;-1:-1:-1;;;3938:112:34;;14267:2:48;3938:112:34::3;::::0;::::3;14249:21:48::0;14306:2;14286:18;;;14279:30;14345:31;14325:18;;;14318:59;14394:18;;3938:112:34::3;14065:353:48::0;3938:112:34::3;4138:7:::0;-1:-1:-1;;;;;4076:44:34;::::3;;929:10:12::0;4076:58:34::3;::::0;-1:-1:-1;;;;;;4076:58:34::3;::::0;;;;;;-1:-1:-1;;;;;3354:32:48;;;4076:58:34::3;::::0;::::3;3336:51:48::0;3309:18;;4076:58:34::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:69;;4068:112;;;::::0;-1:-1:-1;;;4068:112:34;;14625:2:48;4068:112:34::3;::::0;::::3;14607:21:48::0;14664:2;14644:18;;;14637:30;14703:32;14683:18;;;14676:60;14753:18;;4068:112:34::3;14423:354:48::0;4068:112:34::3;4239:463;;;;;;;;4269:12;929:10:12::0;;850:96;4269:12:34::3;-1:-1:-1::0;;;;;4239:463:34::3;;;;;4310:14;-1:-1:-1::0;;;;;4239:463:34::3;;;;;4346:7;4239:463;;;;4384:7;4239:463;;;;4412:6;4239:463;;;;4459:1;4239:463;;;;4487:10;4239:463;;;;4525:13;4239:463;;;;4565:1;4239:463;;;;4641:13;4239:463;;;;;;4680:11;4239:463;;;;;;4597:16;4239:463;;;;::::0;4215:10:::3;:21;4226:9;4215:21;;;;;;;;;;;:487;;;;;;;;;;;;;-1:-1:-1::0;;;;;4215:487:34::3;;;;;-1:-1:-1::0;;;;;4215:487:34::3;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;4215:487:34::3;;;;;-1:-1:-1::0;;;;;4215:487:34::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4717:13;4713:132;;;4746:88;-1:-1:-1::0;;;;;4746:50:34;::::3;929:10:12::0;4819:4:34::3;4826:7:::0;4746:50:::3;:88::i;:::-;4860:74;::::0;;929:10:12;15051:34:48;;-1:-1:-1;;;;;15121:15:48;;15116:2;15101:18;;15094:43;15153:18;;;15146:34;;;15211:2;15196:18;;15189:34;;;4874:9:34;;4860:74:::3;::::0;15000:3:48;14985:19;4860:74:34::3;;;;;;;-1:-1:-1::0;;1772:1:2::2;2872:22:::0;;-1:-1:-1;;;;;;;;;;2825:2116:34:o;5131:704::-;1563:21;;;;:10;:21;;;;;:29;5207:9;;-1:-1:-1;;;;;1563:29:34;929:10:12;1563:45:34;1555:86;;;;-1:-1:-1;;;1555:86:34;;;;;;;:::i;:::-;5226:7:::1;1316:1;1306:7;:11;1298:35;;;;-1:-1:-1::0;;;1298:35:34::1;;;;;;;:::i;:::-;1844:21:::2;::::0;;;:10:::2;:21;::::0;;;;:33:::2;;::::0;5248:9;;1844:38;1836:74:::2;;;;-1:-1:-1::0;;;1836:74:34::2;;;;;;;:::i;:::-;1815:1:2::3;2569:7;;:19:::0;2561:63:::3;;;::::0;-1:-1:-1;;;2561:63:2;;12862:2:48;2561:63:2::3;::::0;::::3;12844:21:48::0;12901:2;12881:18;;;12874:30;12940:33;12920:18;;;12913:61;12991:18;;2561:63:2::3;12660:355:48::0;2561:63:2::3;1815:1;2699:7;:18:::0;;;5282:21:34::4;5306::::0;;;:10:::4;:21;::::0;;;;5338:13;;::::4;:24:::0;;5355:7;;5282:21;5338:24:::4;::::0;5355:7;;5338:24:::4;:::i;:::-;;;;;;;;5398:7;5372:6;:22;;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;5420:19:34::4;::::0;::::4;::::0;::::4;;5416:366;;;5455:94;929:10:12::0;5473:20:34::4;::::0;::::4;::::0;-1:-1:-1;;;;;5473:20:34::4;::::0;5534:4:::4;5541:7:::0;5455:56:::4;:94::i;:::-;5416:366;;;5585:17;::::0;::::4;::::0;::::4;::::0;::::4;;;5580:192;;5698:22;::::0;::::4;::::0;5649:20:::4;::::0;::::4;::::0;-1:-1:-1;;;;;5649:20:34::4;5630:50;929:10:12::0;5630:64:34::4;::::0;-1:-1:-1;;;;;;5630:64:34::4;::::0;;;;;;-1:-1:-1;;;;;3354:32:48;;;5630:64:34::4;::::0;::::4;3336:51:48::0;3309:18;;5630:64:34::4;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:90;;5622:135;;;::::0;-1:-1:-1;;;5622:135:34;;15566:2:48;5622:135:34::4;::::0;::::4;15548:21:48::0;;;15585:18;;;15578:30;15644:34;15624:18;;;15617:62;15696:18;;5622:135:34::4;15364:356:48::0;5622:135:34::4;5809:9;5797:31;5820:7;5797:31;;;;11670:25:48::0;;11658:2;11643:18;;11524:177;5797:31:34::4;;;;;;;;-1:-1:-1::0;;1772:1:2::3;2872:22:::0;;-1:-1:-1;;;;5131:704:34:o;10713:125::-;10778:13;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10778:13:34;-1:-1:-1;10810:21:34;;;;:10;:21;;;;;;;;;10803:28;;;;;;;;;-1:-1:-1;;;;;10803:28:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10713:125::o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;15927:2:48;2401:73:0::1;::::0;::::1;15909:21:48::0;15966:2;15946:18;;;15939:30;16005:34;15985:18;;;15978:62;-1:-1:-1;;;16056:18:48;;;16049:36;16102:19;;2401:73:0::1;15725:402:48::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;10024:563:34:-:0;10127:4;10187:21;;;:10;:21;;;;;:27;;;;10147:37;;;;;:67;;:123;;-1:-1:-1;10268:1:34;10219:22;;;:11;:22;;;;;;;;-1:-1:-1;;;;;10219:32:34;;;;;;;;;:46;;;:50;;10147:123;10143:141;;;-1:-1:-1;10279:5:34;10272:12;;10143:141;10299:21;;;;:10;:21;;;;;:37;;;;;;;;10295:174;;;10424:21;;;;:10;:21;;;;;;;;:34;;;10377:11;:22;;;;;-1:-1:-1;;;;;10377:32:34;;;;;;;;;;:44;:81;;10424:34;10377:81;:::i;:::-;10359:14;:99;;10352:106;;;;10295:174;10485:21;;;;:10;:21;;;;;:34;;;:39;;:95;;-1:-1:-1;10546:21:34;;;;:10;:21;;;;;:34;;;10528:52;;;10485:95;10478:102;;10024:563;;;;;;:::o;818:216:5:-;968:58;;-1:-1:-1;;;;;16324:32:48;;968:58:5;;;16306:51:48;16373:18;;;16366:34;;;941:86:5;;961:5;;-1:-1:-1;;;991:23:5;16279:18:48;;968:58:5;;;;-1:-1:-1;;968:58:5;;;;;;;;;;;;;;-1:-1:-1;;;;;968:58:5;-1:-1:-1;;;;;;968:58:5;;;;;;;;;;941:19;:86::i;:::-;818:216;;;:::o;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;16613:2:48;1654:68:0;;;16595:21:48;;;16632:18;;;16625:30;16691:34;16671:18;;;16664:62;16743:18;;1654:68:0;16411:356:48;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;1003:95::-;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1065:26:0::1;:24;:26::i;1853:111:2:-:0;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1923:34:2::1;:32;:34::i;11667:193:34:-:0;11718:17;11759:14;11771:1;11759:11;:14::i;:::-;11791:21;;;;:10;:21;;;;;:33;;;11747:26;;-1:-1:-1;11791:38:34;11783:70;;;;-1:-1:-1;;;11783:70:34;;17386:2:48;11783:70:34;;;17368:21:48;17425:2;17405:18;;;17398:30;-1:-1:-1;;;17444:18:48;;;17437:49;17503:18;;11783:70:34;17184:343:48;11783:70:34;11667:193;:::o;1366:274:14:-;1453:4;1560:23;1575:7;1560:14;:23::i;:::-;:73;;;;;1587:46;1612:7;1621:11;1587:24;:46::i;1040:252:5:-;1216:68;;-1:-1:-1;;;;;9633:15:48;;;1216:68:5;;;9615:34:48;9685:15;;9665:18;;;9658:43;9717:18;;;9710:34;;;1189:96:5;;1209:5;;-1:-1:-1;;;1239:27:5;9550:18:48;;1216:68:5;9375:375:48;1189:96:5;1040:252;;;;:::o;3868:717::-;4298:23;4324:69;4352:4;4324:69;;;;;;;;;;;;;;;;;4332:5;-1:-1:-1;;;;;4324:27:5;;;:69;;;;;:::i;:::-;4407:17;;4298:95;;-1:-1:-1;4407:21:5;4403:176;;4502:10;4491:30;;;;;;;;;;;;:::i;:::-;4483:85;;;;-1:-1:-1;;;4483:85:5;;17984:2:48;4483:85:5;;;17966:21:48;18023:2;18003:18;;;17996:30;18062:34;18042:18;;;18035:62;-1:-1:-1;;;18113:18:48;;;18106:40;18163:19;;4483:85:5;17782:406:48;1104:111:0;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1176:32:0::1;929:10:12::0;1176:18:0::1;:32::i;1970:109:2:-:0;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1772:1:2::1;2050:22:::0;;1970:109::o;11385:170:34:-;11444:7;929:10:12;11521:16:34;11536:1;11521:12;:16;:::i;:::-;11480:67;;18398:2:48;18394:15;;;;-1:-1:-1;;18390:53:48;11480:67:34;;;18378:66:48;11511:27:34;18460:12:48;;;18453:28;18497:12;;;18490:28;;;18534:12;;11480:67:34;;;;;;;;;;;;11470:78;;;;;;11463:85;;11385:170;;;:::o;726:422:14:-;790:4;997:71;1022:7;-1:-1:-1;;;997:24:14;:71::i;:::-;:144;;;;-1:-1:-1;1085:56:14;1110:7;-1:-1:-1;;;;;;1085:24:14;:56::i;:::-;1084:57;978:163;726:422;-1:-1:-1;;726:422:14:o;4256:649::-;4418:82;;;-1:-1:-1;;;;;;18719:33:48;;4418:82:14;;;;18701:52:48;;;;4418:82:14;;;;;;;;;;18674:18:48;;;;4418:82:14;;;;;;;;;-1:-1:-1;;;;;4418:82:14;-1:-1:-1;;;4418:82:14;;;4708:20;;4349:4;;4418:82;4349:4;;;;;;4418:82;4349:4;;4708:20;4673:7;4666:5;4655:86;4644:97;;4768:16;4754:30;;4818:4;4812:11;4797:26;;4850:7;:29;;;;;4875:4;4861:10;:18;;4850:29;:48;;;;;4897:1;4883:11;:15;4850:48;4843:55;4256:649;-1:-1:-1;;;;;;;4256:649:14:o;3872:223:11:-;4005:12;4036:52;4058:6;4066:4;4072:1;4075:12;4005;-1:-1:-1;;;;;1476:19:11;;;5239:60;;;;-1:-1:-1;;;5239:60:11;;19373:2:48;5239:60:11;;;19355:21:48;19412:2;19392:18;;;19385:30;19451:31;19431:18;;;19424:59;19500:18;;5239:60:11;19171:353:48;5239:60:11;5311:12;5325:23;5352:6;-1:-1:-1;;;;;5352:11:11;5371:5;5378:4;5352:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5310:73;;;;5400:51;5417:7;5426:10;5438:12;6768;6796:7;6792:566;;;-1:-1:-1;6826:10:11;6819:17;;6792:566;6937:17;;:21;6933:415;;7181:10;7175:17;7241:15;7228:10;7224:2;7220:19;7213:44;6933:415;7320:12;7313:20;;-1:-1:-1;;;7313:20:11;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:48;82:20;;-1:-1:-1;;;;;131:31:48;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:254::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;373:9;360:23;350:33;;402:38;436:2;425:9;421:18;402:38;:::i;:::-;392:48;;192:254;;;;;:::o;451:908::-;593:4;622:2;651;640:9;633:21;692:3;681:9;677:19;738:6;732:13;727:2;716:9;712:18;705:41;800:2;792:6;788:15;782:22;777:2;766:9;762:18;755:50;859:2;851:6;847:15;841:22;836:2;825:9;821:18;814:50;911:2;903:6;899:15;893:22;953:4;946;935:9;931:20;924:34;978:6;1013:12;1007:19;1050:6;1042;1035:22;1088:3;1077:9;1073:19;1066:26;;1133:2;1119:12;1115:21;1101:35;;1154:1;1145:10;;1164:169;1178:6;1175:1;1172:13;1164:169;;;1239:13;;1227:26;;1308:15;;;;1200:1;1193:9;;;;;1273:12;;;;1164:169;;;-1:-1:-1;1350:3:48;451:908;-1:-1:-1;;;;;;451:908:48:o;1364:127::-;1425:10;1420:3;1416:20;1413:1;1406:31;1456:4;1453:1;1446:15;1480:4;1477:1;1470:15;1496:1395;1616:6;1624;1632;1640;1648;1701:3;1689:9;1680:7;1676:23;1672:33;1669:53;;;1718:1;1715;1708:12;1669:53;1754:9;1741:23;1731:33;;1783:2;1804:38;1838:2;1827:9;1823:18;1804:38;:::i;:::-;1794:48;;1889:2;1878:9;1874:18;1861:32;1851:42;;1940:2;1929:9;1925:18;1912:32;1902:42;;1995:3;1984:9;1980:19;1967:33;2019:18;2060:2;2052:6;2049:14;2046:34;;;2076:1;2073;2066:12;2046:34;2114:6;2103:9;2099:22;2089:32;;2159:7;2152:4;2148:2;2144:13;2140:27;2130:55;;2181:1;2178;2171:12;2130:55;2217:2;2204:16;2239:2;2235;2232:10;2229:36;;;2245:18;;:::i;:::-;2291:2;2288:1;2284:10;2323:2;2317:9;2386:2;2382:7;2377:2;2373;2369:11;2365:25;2357:6;2353:38;2441:6;2429:10;2426:22;2421:2;2409:10;2406:18;2403:46;2400:72;;;2452:18;;:::i;:::-;2488:2;2481:22;2538:18;;;2572:15;;;;-1:-1:-1;2614:11:48;;;2610:20;;;2642:19;;;2639:39;;;2674:1;2671;2664:12;2639:39;2698:11;;;;2718:142;2734:6;2729:3;2726:15;2718:142;;;2800:17;;2788:30;;2751:12;;;;2838;;;;2718:142;;;2879:6;2869:16;;;;;;;;1496:1395;;;;;;;;:::o;2896:180::-;2955:6;3008:2;2996:9;2987:7;2983:23;2979:32;2976:52;;;3024:1;3021;3014:12;2976:52;-1:-1:-1;3047:23:48;;2896:180;-1:-1:-1;2896:180:48:o;3398:118::-;3484:5;3477:13;3470:21;3463:5;3460:32;3450:60;;3506:1;3503;3496:12;3521:726;3628:6;3636;3644;3652;3660;3668;3676;3729:3;3717:9;3708:7;3704:23;3700:33;3697:53;;;3746:1;3743;3736:12;3697:53;3769:29;3788:9;3769:29;:::i;:::-;3759:39;;3845:2;3834:9;3830:18;3817:32;3807:42;;3896:2;3885:9;3881:18;3868:32;3858:42;;3947:2;3936:9;3932:18;3919:32;3909:42;;3998:3;3987:9;3983:19;3970:33;3960:43;;4053:3;4042:9;4038:19;4025:33;4067:28;4089:5;4067:28;:::i;:::-;4114:5;-1:-1:-1;4171:3:48;4156:19;;4143:33;4185:30;4143:33;4185:30;:::i;:::-;4234:7;4224:17;;;3521:726;;;;;;;;;;:::o;4252:248::-;4320:6;4328;4381:2;4369:9;4360:7;4356:23;4352:32;4349:52;;;4397:1;4394;4387:12;4349:52;-1:-1:-1;;4420:23:48;;;4490:2;4475:18;;;4462:32;;-1:-1:-1;4252:248:48:o;4601:1237::-;4815:13;;-1:-1:-1;;;;;3147:31:48;3135:44;;4783:3;4768:19;;4887:4;4879:6;4875:17;4869:24;4902:54;4950:4;4939:9;4935:20;4921:12;-1:-1:-1;;;;;3147:31:48;3135:44;;3081:104;4902:54;;5012:4;5004:6;5000:17;4994:24;4987:4;4976:9;4972:20;4965:54;5075:4;5067:6;5063:17;5057:24;5050:4;5039:9;5035:20;5028:54;5138:4;5130:6;5126:17;5120:24;5113:4;5102:9;5098:20;5091:54;5201:4;5193:6;5189:17;5183:24;5176:4;5165:9;5161:20;5154:54;5264:4;5256:6;5252:17;5246:24;5239:4;5228:9;5224:20;5217:54;5327:4;5319:6;5315:17;5309:24;5302:4;5291:9;5287:20;5280:54;5353:6;5413:2;5405:6;5401:15;5395:22;5390:2;5379:9;5375:18;5368:50;;5437:6;5492:2;5484:6;5480:15;5474:22;5505:51;5552:2;5541:9;5537:18;5521:14;4575:13;4568:21;4556:34;;4505:91;5505:51;-1:-1:-1;;5575:6:48;5618:15;;;5612:22;4575:13;4568:21;5675:18;;;4556:34;5713:6;5756:15;;;5750:22;4575:13;4568:21;5813:18;;;;4556:34;;;;4601:1237;:::o;5843:186::-;5902:6;5955:2;5943:9;5934:7;5930:23;5926:32;5923:52;;;5971:1;5968;5961:12;5923:52;5994:29;6013:9;5994:29;:::i;6034:322::-;6111:6;6119;6127;6180:2;6168:9;6159:7;6155:23;6151:32;6148:52;;;6196:1;6193;6186:12;6148:52;6232:9;6219:23;6209:33;;6261:38;6295:2;6284:9;6280:18;6261:38;:::i;:::-;6251:48;;6346:2;6335:9;6331:18;6318:32;6308:42;;6034:322;;;;;:::o;6553:352::-;6755:2;6737:21;;;6794:2;6774:18;;;6767:30;6833;6828:2;6813:18;;6806:58;6896:2;6881:18;;6553:352::o;6910:347::-;7112:2;7094:21;;;7151:2;7131:18;;;7124:30;7190:25;7185:2;7170:18;;7163:53;7248:2;7233:18;;6910:347::o;8305:127::-;8366:10;8361:3;8357:20;8354:1;8347:31;8397:4;8394:1;8387:15;8421:4;8418:1;8411:15;8437:128;8504:9;;;8525:11;;;8522:37;;;8539:18;;:::i;8570:135::-;8609:3;8630:17;;;8627:43;;8650:18;;:::i;:::-;-1:-1:-1;8697:1:48;8686:13;;8570:135::o;8710:184::-;8780:6;8833:2;8821:9;8812:7;8808:23;8804:32;8801:52;;;8849:1;8846;8839:12;8801:52;-1:-1:-1;8872:16:48;;8710:184;-1:-1:-1;8710:184:48:o;9243:127::-;9304:10;9299:3;9295:20;9292:1;9285:31;9335:4;9332:1;9325:15;9359:4;9356:1;9349:15;9755:726;9922:4;9970:2;9959:9;9955:18;10000:6;9989:9;9982:25;10026:2;10064;10059;10048:9;10044:18;10037:30;10087:6;10122;10116:13;10153:6;10145;10138:22;10191:2;10180:9;10176:18;10169:25;;10213:6;10210:1;10203:17;10256:2;10253:1;10243:16;10229:30;;10277:1;10287:168;10301:6;10298:1;10295:13;10287:168;;;10362:13;;10350:26;;10443:1;10431:14;;;;10396:12;;;;10316:9;10287:168;;;-1:-1:-1;10472:3:48;;9755:726;-1:-1:-1;;;;;;;9755:726:48:o;12320:335::-;12522:2;12504:21;;;12561:2;12541:18;;;12534:30;-1:-1:-1;;;12595:2:48;12580:18;;12573:41;12646:2;12631:18;;12320:335::o;15234:125::-;15299:9;;;15320:10;;;15317:36;;;15333:18;;:::i;16772:407::-;16974:2;16956:21;;;17013:2;16993:18;;;16986:30;17052:34;17047:2;17032:18;;17025:62;-1:-1:-1;;;17118:2:48;17103:18;;17096:41;17169:3;17154:19;;16772:407::o;17532:245::-;17599:6;17652:2;17640:9;17631:7;17627:23;17623:32;17620:52;;;17668:1;17665;17658:12;17620:52;17700:9;17694:16;17719:28;17741:5;17719:28;:::i;19529:250::-;19614:1;19624:113;19638:6;19635:1;19632:13;19624:113;;;19714:11;;;19708:18;19695:11;;;19688:39;19660:2;19653:10;19624:113;;;-1:-1:-1;;19771:1:48;19753:16;;19746:27;19529:250::o;19784:287::-;19913:3;19951:6;19945:13;19967:66;20026:6;20021:3;20014:4;20006:6;20002:17;19967:66;:::i;:::-;20049:16;;;;;19784:287;-1:-1:-1;;19784:287:48:o;20076:396::-;20225:2;20214:9;20207:21;20188:4;20257:6;20251:13;20300:6;20295:2;20284:9;20280:18;20273:34;20316:79;20388:6;20383:2;20372:9;20368:18;20363:2;20355:6;20351:15;20316:79;:::i;:::-;20456:2;20435:15;-1:-1:-1;;20431:29:48;20416:45;;;;20463:2;20412:54;;20076:396;-1:-1:-1;;20076:396:48:o", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"}],\"name\":\"AddedBudget\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"learner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rewardAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"nftIds\",\"type\":\"uint256[]\"}],\"name\":\"ClaimedReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"learner\",\"type\":\"address\"}],\"name\":\"CompletedCourse\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timeStarted\",\"type\":\"uint256\"}],\"name\":\"CreatedCourse\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"RemovedCourse\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawnBudget\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_budget\",\"type\":\"uint256\"}],\"name\":\"addBudget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_learner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_timeCompleted\",\"type\":\"uint256\"}],\"name\":\"canGetBonus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_learner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_timeStarted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeCompleted\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_nftIds\",\"type\":\"uint256[]\"}],\"name\":\"completeCourse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rewardAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeEndBonus\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isUsingDuration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_isBonusToken\",\"type\":\"bool\"}],\"name\":\"createCourse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"}],\"name\":\"getCourseData\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rewardAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetAvailable\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalLearnersClaimedBonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeCreated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeEndBonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeRemoved\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBonusToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canMintNFT\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isUsingDuration\",\"type\":\"bool\"}],\"internalType\":\"structCourse\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_learner\",\"type\":\"address\"}],\"name\":\"getLearnerData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"timeStarted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeCompleted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeRewarded\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"nftIds\",\"type\":\"uint256[]\"}],\"internalType\":\"structLearner\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"}],\"name\":\"removeCourse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"}],\"name\":\"withdrawBudget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50612158806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80639d84bf91116100715780639d84bf9114610135578063b149fd1814610148578063caca4ad31461015b578063db631a891461016e578063f2fde38b1461018e578063fda626ce146101a157600080fd5b80632cca6f2d146100b95780633c41b482146100e2578063669e88a1146100f7578063715018a61461010a5780638129fc1c146101125780638da5cb5b1461011a575b600080fd5b6100cc6100c7366004611b88565b6101c4565b6040516100d99190611bb4565b60405180910390f35b6100f56100f0366004611c3a565b610291565b005b6100f5610105366004611d28565b61071b565b6100f5610904565b6100f5610918565b6065546040516001600160a01b0390911681526020016100d9565b6100f5610143366004611d28565b610a31565b6100f5610156366004611d4f565b610b31565b6100f5610169366004611dbf565b61107f565b61018161017c366004611d28565b6112f5565b6040516100d99190611de1565b6100f561019c366004611e8d565b61142a565b6101b46101af366004611ea8565b6114a0565b60405190151581526020016100d9565b6101ef6040518060800160405280600081526020016000815260200160008152602001606081525090565b60008381526098602090815260408083206001600160a01b0386168452825291829020825160808101845281548152600182015481840152600282015481850152600382018054855181860281018601909652808652919492936060860193929083018282801561027f57602002820191906000526020600020905b81548152602001906001019080831161026b575b50505050508152505090505b92915050565b60008581526097602052604090205485906001600160a01b031633146102d25760405162461bcd60e51b81526004016102c990611edd565b60405180910390fd5b6000868152609760205260409020600801548690156103035760405162461bcd60e51b81526004016102c990611f14565b60008781526097602052604090206006810154861080159061032457504286105b6103655760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a5b59481cdd185c9d60721b60448201526064016102c9565b8585116103ac5760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642074696d6520636f6d706c65746560581b60448201526064016102c9565b60008881526098602090815260408083206001600160a01b038b16845290915290206001810154156104145760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb5c1b195d1959607a1b60448201526064016102c9565b86815560006104248a8a896114a0565b60018301889055905080156106d157826004015483600301600082825461044b9190611f61565b909155505060058301805490600061046283611f74565b9091555050426002830155600983015460ff16156104a0576004830154600184015461049b916001600160a01b03909116908b90611592565b61067a565b6009830154610100900460ff16156105645760005b836004015481101561055e5760018401546040516335313c2160e11b81526001600160a01b038c8116600483015260038601921690636a627842906024016020604051808303816000875af1158015610512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105369190611f8d565b815460018101835560009283526020909220909101558061055681611f74565b9150506104b5565b5061067a565b82600401548651146105aa5760405162461bcd60e51b815260206004820152600f60248201526e4e6f7420656e6f756768204e46547360881b60448201526064016102c9565b85516105bf9060038401906020890190611b0c565b5060005b86518110156106785760018401546001600160a01b03166342842e0e338c8a85815181106105f3576105f3611fa6565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561064d57600080fd5b505af1158015610661573d6000803e3d6000fd5b50505050808061067090611f74565b9150506105c3565b505b600183015460048401546040516001600160a01b03928316928c16918d917fd7168ab8576ce4d8336598fe8c588ccb843823a522fe33c98365c3e082daa2ca916106c8916003890190611fbc565b60405180910390a45b6040516001600160a01b038a1681528a907fb14f5aab91d7f1973be0a7f66b9f50b5da882aaf454b27c50d6a9d7b2172616c9060200160405180910390a250505050505050505050565b60008181526097602052604090205481906001600160a01b031633146107535760405162461bcd60e51b81526004016102c990611edd565b6000828152609760205260409020600801548290156107845760405162461bcd60e51b81526004016102c990611f14565b6000838152609760205260409020600981015460ff166107d75760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21030b1ba34b7b760911b60448201526064016102c9565b600081600301541161081b5760405162461bcd60e51b815260206004820152600d60248201526c13dd5d081bd988189d5919d95d609a1b60448201526064016102c9565b600981015462010000900460ff168061084557506007810154158015906108455750806007015442115b6108915760405162461bcd60e51b815260206004820152601860248201527f54696d6520626f6e757320686173206e6f7420656e646564000000000000000060448201526064016102c9565b6003810180546000909155815460018301546108ba916001600160a01b03918216911683611592565b81546040518281526001600160a01b039091169086907faa558890c86253324a06b9e861f61281fd0810f170827987572e7123581a779f9060200160405180910390a35050505050565b61090c6115fa565b6109166000611654565b565b600054610100900460ff16158080156109385750600054600160ff909116105b806109525750303b158015610952575060005460ff166001145b6109b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c9565b6000805460ff1916600117905580156109d8576000805461ff0019166101001790555b6109e06116a6565b6109e86116d5565b8015610a2e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008181526097602052604090205481906001600160a01b03163314610a695760405162461bcd60e51b81526004016102c990611edd565b600082815260976020526040902060080154829015610a9a5760405162461bcd60e51b81526004016102c990611f14565b6000838152609760205260408120426008820155600381018054929055600981015490919060ff168015610ace5750600081115b15610af15781546001830154610af1916001600160a01b03918216911683611592565b81546040516001600160a01b039091169086907f10156d1d3e0caa069c8a10325a1dae1512b2ff6bb941c18e16194970746f30a490600090a35050505050565b8560008111610b525760405162461bcd60e51b81526004016102c99061200f565b8560008111610b735760405162461bcd60e51b81526004016102c99061200f565b600260015403610bc55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c9565b60026001556001600160a01b038916610c195760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420726577617264206164647265737360501b60448201526064016102c9565b86881015610c5a5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908189d5919d95d60921b60448201526064016102c9565b8515610caa5742861015610ca55760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a5b59481cdd185c9d60721b60448201526064016102c9565b610cae565b4295505b600084610cc657851580610cc157508686115b610ccb565b600086115b905080610d135760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642074696d6520656e6420626f6e757360501b60448201526064016102c9565b6000610d1d611704565b9050600085610e7457610d406001600160a01b038d1663357c172f60e01b61176b565b905080610e7457610d616001600160a01b038d166380ac58cd60e01b61176b565b610dad5760405162461bcd60e51b815260206004820152601d60248201527f52657761726420636f6e7472616374206973206e6f742045524337323100000060448201526064016102c9565b8a6001600160a01b038d166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e269190611f8d565b1015610e745760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742063726561746f7227732062616c616e6365000060448201526064016102c9565b604051806101800160405280610e873390565b6001600160a01b031681526020018d6001600160a01b031681526020018c81526020018c81526020018b8152602001600081526020018a815260200189815260200160008152602001871515815260200182151581526020018815158152506097600084815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015561010082015181600801556101208201518160090160006101000a81548160ff0219169083151502179055506101408201518160090160016101000a81548160ff0219169083151502179055506101608201518160090160026101000a81548160ff021916908315150217905550905050851561101b5761101b6001600160a01b038d1633308e611787565b604080513381526001600160a01b038e1660208201529081018b9052606081018a905282907fef048bc89a4d92f598f18e11c600d5cc675b387c770c6c49012d166043db64a29060800160405180910390a250506001805550505050505050505050565b60008281526097602052604090205482906001600160a01b031633146110b75760405162461bcd60e51b81526004016102c990611edd565b81600081116110d85760405162461bcd60e51b81526004016102c99061200f565b6000848152609760205260409020600801548490156111095760405162461bcd60e51b81526004016102c990611f14565b60026001540361115b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c9565b6002600181905560008681526097602052604081209182018054879290611183908490612034565b925050819055508481600301600082825461119e9190612034565b9091555050600981015460ff16156111cf576111ca3360018301546001600160a01b0316903088611787565b6112af565b6009810154610100900460ff166112af57600381015460018201546001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190611f8d565b10156112af5760405162461bcd60e51b815260206004820181905260248201527f42616c616e6365206f662063726561746f72206973206e6f7420656e6f75676860448201526064016102c9565b857f5cd42cadabfcfe861e1f12322ae257de37d1240ae38863b4c8b0b50fd0e32a26866040516112e191815260200190565b60405180910390a250506001805550505050565b61137160405180610180016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581526020016000151581525090565b5060009081526097602090815260409182902082516101808101845281546001600160a01b039081168252600183015416928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008083019190915260099092015460ff808216151561012084015292810483161515610140830152620100009004909116151561016082015290565b6114326115fa565b6001600160a01b0381166114975760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102c9565b610a2e81611654565b6000838152609760205260408120600481015460039091015410806114e9575060008481526098602090815260408083206001600160a01b038716845290915290206001015415155b156114f65750600061158b565b60008481526097602052604090206009015462010000900460ff161561155957600084815260976020908152604080832060070154609883528184206001600160a01b03881685529092529091205461154f9190612034565b821115905061158b565b600084815260976020526040902060070154158061158857506000848152609760205260409020600701548211155b90505b9392505050565b6040516001600160a01b0383166024820152604481018290526115f590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526117c5565b505050565b6065546001600160a01b031633146109165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c9565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166116cd5760405162461bcd60e51b81526004016102c990612047565b610916611897565b600054610100900460ff166116fc5760405162461bcd60e51b81526004016102c990612047565b6109166118c7565b600061171060006118f4565b600081815260976020526040902060060154909150156117685760405162461bcd60e51b8152602060048201526013602482015272191d5c1b1a58d85d194818dbdd5c9cd9481a59606a1b60448201526064016102c9565b90565b60006117768361194c565b801561158b575061158b838361197f565b6040516001600160a01b03808516602483015283166044820152606481018290526117bf9085906323b872dd60e01b906084016115be565b50505050565b600061181a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a089092919063ffffffff16565b8051909150156115f557808060200190518101906118389190612092565b6115f55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102c9565b600054610100900460ff166118be5760405162461bcd60e51b81526004016102c990612047565b61091633611654565b600054610100900460ff166118ee5760405162461bcd60e51b81526004016102c990612047565b60018055565b600033611902600143611f61565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b600061195f826301ffc9a760e01b61197f565b801561028b5750611978826001600160e01b031961197f565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156119f1575060208210155b80156119fd5750600081115b979650505050505050565b60606115888484600085856001600160a01b0385163b611a6a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102c9565b600080866001600160a01b03168587604051611a8691906120d3565b60006040518083038185875af1925050503d8060008114611ac3576040519150601f19603f3d011682016040523d82523d6000602084013e611ac8565b606091505b50915091506119fd82828660608315611ae257508161158b565b825115611af25782518084602001fd5b8160405162461bcd60e51b81526004016102c991906120ef565b828054828255906000526020600020908101928215611b47579160200282015b82811115611b47578251825591602001919060010190611b2c565b50611b53929150611b57565b5090565b5b80821115611b535760008155600101611b58565b80356001600160a01b0381168114611b8357600080fd5b919050565b60008060408385031215611b9b57600080fd5b82359150611bab60208401611b6c565b90509250929050565b6000602080835260a0830184518285015281850151604085015260408501516060850152606085015160808086015281815180845260c0870191508483019350600092505b80831015611c195783518252928401926001929092019190840190611bf9565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a08688031215611c5257600080fd5b853594506020611c63818801611b6c565b94506040870135935060608701359250608087013567ffffffffffffffff80821115611c8e57600080fd5b818901915089601f830112611ca257600080fd5b813581811115611cb457611cb4611c24565b8060051b604051601f19603f83011681018181108582111715611cd957611cd9611c24565b60405291825284820192508381018501918c831115611cf757600080fd5b938501935b82851015611d1557843584529385019392850192611cfc565b8096505050505050509295509295909350565b600060208284031215611d3a57600080fd5b5035919050565b8015158114610a2e57600080fd5b600080600080600080600060e0888a031215611d6a57600080fd5b611d7388611b6c565b96506020880135955060408801359450606088013593506080880135925060a0880135611d9f81611d41565b915060c0880135611daf81611d41565b8091505092959891949750929550565b60008060408385031215611dd257600080fd5b50508035926020909101359150565b81516001600160a01b0316815261018081016020830151611e0d60208401826001600160a01b03169052565b5060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611e6a8285018215159052565b505061014083810151151590830152610160928301511515929091019190915290565b600060208284031215611e9f57600080fd5b61158b82611b6c565b600080600060608486031215611ebd57600080fd5b83359250611ecd60208501611b6c565b9150604084013590509250925092565b6020808252601c908201527f63616c6c6572206973206e6f7420636f757273652063726561746f7200000000604082015260600190565b60208082526017908201527f436f7572736520686173206265656e2072656d6f766564000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561028b5761028b611f4b565b600060018201611f8657611f86611f4b565b5060010190565b600060208284031215611f9f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006040820184835260206040818501528185548084526060860191508660005282600020935060005b8181101561200257845483526001948501949284019201611fe6565b5090979650505050505050565b6020808252600b908201526a16995c9bc8185b5bdd5b9d60aa1b604082015260600190565b8082018082111561028b5761028b611f4b565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156120a457600080fd5b815161158b81611d41565b60005b838110156120ca5781810151838201526020016120b2565b50506000910152565b600082516120e58184602087016120af565b9190910192915050565b602081526000825180602084015261210e8160408501602087016120af565b601f01601f1916919091016040019291505056fea2646970667358221220ffde32c539f0c2ca37deb0a615513f93666574250ea78d2595bdfe329536b1c264736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100b45760003560e01c80639d84bf91116100715780639d84bf9114610135578063b149fd1814610148578063caca4ad31461015b578063db631a891461016e578063f2fde38b1461018e578063fda626ce146101a157600080fd5b80632cca6f2d146100b95780633c41b482146100e2578063669e88a1146100f7578063715018a61461010a5780638129fc1c146101125780638da5cb5b1461011a575b600080fd5b6100cc6100c7366004611b88565b6101c4565b6040516100d99190611bb4565b60405180910390f35b6100f56100f0366004611c3a565b610291565b005b6100f5610105366004611d28565b61071b565b6100f5610904565b6100f5610918565b6065546040516001600160a01b0390911681526020016100d9565b6100f5610143366004611d28565b610a31565b6100f5610156366004611d4f565b610b31565b6100f5610169366004611dbf565b61107f565b61018161017c366004611d28565b6112f5565b6040516100d99190611de1565b6100f561019c366004611e8d565b61142a565b6101b46101af366004611ea8565b6114a0565b60405190151581526020016100d9565b6101ef6040518060800160405280600081526020016000815260200160008152602001606081525090565b60008381526098602090815260408083206001600160a01b0386168452825291829020825160808101845281548152600182015481840152600282015481850152600382018054855181860281018601909652808652919492936060860193929083018282801561027f57602002820191906000526020600020905b81548152602001906001019080831161026b575b50505050508152505090505b92915050565b60008581526097602052604090205485906001600160a01b031633146102d25760405162461bcd60e51b81526004016102c990611edd565b60405180910390fd5b6000868152609760205260409020600801548690156103035760405162461bcd60e51b81526004016102c990611f14565b60008781526097602052604090206006810154861080159061032457504286105b6103655760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a5b59481cdd185c9d60721b60448201526064016102c9565b8585116103ac5760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642074696d6520636f6d706c65746560581b60448201526064016102c9565b60008881526098602090815260408083206001600160a01b038b16845290915290206001810154156104145760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb5c1b195d1959607a1b60448201526064016102c9565b86815560006104248a8a896114a0565b60018301889055905080156106d157826004015483600301600082825461044b9190611f61565b909155505060058301805490600061046283611f74565b9091555050426002830155600983015460ff16156104a0576004830154600184015461049b916001600160a01b03909116908b90611592565b61067a565b6009830154610100900460ff16156105645760005b836004015481101561055e5760018401546040516335313c2160e11b81526001600160a01b038c8116600483015260038601921690636a627842906024016020604051808303816000875af1158015610512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105369190611f8d565b815460018101835560009283526020909220909101558061055681611f74565b9150506104b5565b5061067a565b82600401548651146105aa5760405162461bcd60e51b815260206004820152600f60248201526e4e6f7420656e6f756768204e46547360881b60448201526064016102c9565b85516105bf9060038401906020890190611b0c565b5060005b86518110156106785760018401546001600160a01b03166342842e0e338c8a85815181106105f3576105f3611fa6565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561064d57600080fd5b505af1158015610661573d6000803e3d6000fd5b50505050808061067090611f74565b9150506105c3565b505b600183015460048401546040516001600160a01b03928316928c16918d917fd7168ab8576ce4d8336598fe8c588ccb843823a522fe33c98365c3e082daa2ca916106c8916003890190611fbc565b60405180910390a45b6040516001600160a01b038a1681528a907fb14f5aab91d7f1973be0a7f66b9f50b5da882aaf454b27c50d6a9d7b2172616c9060200160405180910390a250505050505050505050565b60008181526097602052604090205481906001600160a01b031633146107535760405162461bcd60e51b81526004016102c990611edd565b6000828152609760205260409020600801548290156107845760405162461bcd60e51b81526004016102c990611f14565b6000838152609760205260409020600981015460ff166107d75760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21030b1ba34b7b760911b60448201526064016102c9565b600081600301541161081b5760405162461bcd60e51b815260206004820152600d60248201526c13dd5d081bd988189d5919d95d609a1b60448201526064016102c9565b600981015462010000900460ff168061084557506007810154158015906108455750806007015442115b6108915760405162461bcd60e51b815260206004820152601860248201527f54696d6520626f6e757320686173206e6f7420656e646564000000000000000060448201526064016102c9565b6003810180546000909155815460018301546108ba916001600160a01b03918216911683611592565b81546040518281526001600160a01b039091169086907faa558890c86253324a06b9e861f61281fd0810f170827987572e7123581a779f9060200160405180910390a35050505050565b61090c6115fa565b6109166000611654565b565b600054610100900460ff16158080156109385750600054600160ff909116105b806109525750303b158015610952575060005460ff166001145b6109b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c9565b6000805460ff1916600117905580156109d8576000805461ff0019166101001790555b6109e06116a6565b6109e86116d5565b8015610a2e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008181526097602052604090205481906001600160a01b03163314610a695760405162461bcd60e51b81526004016102c990611edd565b600082815260976020526040902060080154829015610a9a5760405162461bcd60e51b81526004016102c990611f14565b6000838152609760205260408120426008820155600381018054929055600981015490919060ff168015610ace5750600081115b15610af15781546001830154610af1916001600160a01b03918216911683611592565b81546040516001600160a01b039091169086907f10156d1d3e0caa069c8a10325a1dae1512b2ff6bb941c18e16194970746f30a490600090a35050505050565b8560008111610b525760405162461bcd60e51b81526004016102c99061200f565b8560008111610b735760405162461bcd60e51b81526004016102c99061200f565b600260015403610bc55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c9565b60026001556001600160a01b038916610c195760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420726577617264206164647265737360501b60448201526064016102c9565b86881015610c5a5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908189d5919d95d60921b60448201526064016102c9565b8515610caa5742861015610ca55760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a5b59481cdd185c9d60721b60448201526064016102c9565b610cae565b4295505b600084610cc657851580610cc157508686115b610ccb565b600086115b905080610d135760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642074696d6520656e6420626f6e757360501b60448201526064016102c9565b6000610d1d611704565b9050600085610e7457610d406001600160a01b038d1663357c172f60e01b61176b565b905080610e7457610d616001600160a01b038d166380ac58cd60e01b61176b565b610dad5760405162461bcd60e51b815260206004820152601d60248201527f52657761726420636f6e7472616374206973206e6f742045524337323100000060448201526064016102c9565b8a6001600160a01b038d166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e269190611f8d565b1015610e745760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742063726561746f7227732062616c616e6365000060448201526064016102c9565b604051806101800160405280610e873390565b6001600160a01b031681526020018d6001600160a01b031681526020018c81526020018c81526020018b8152602001600081526020018a815260200189815260200160008152602001871515815260200182151581526020018815158152506097600084815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015561010082015181600801556101208201518160090160006101000a81548160ff0219169083151502179055506101408201518160090160016101000a81548160ff0219169083151502179055506101608201518160090160026101000a81548160ff021916908315150217905550905050851561101b5761101b6001600160a01b038d1633308e611787565b604080513381526001600160a01b038e1660208201529081018b9052606081018a905282907fef048bc89a4d92f598f18e11c600d5cc675b387c770c6c49012d166043db64a29060800160405180910390a250506001805550505050505050505050565b60008281526097602052604090205482906001600160a01b031633146110b75760405162461bcd60e51b81526004016102c990611edd565b81600081116110d85760405162461bcd60e51b81526004016102c99061200f565b6000848152609760205260409020600801548490156111095760405162461bcd60e51b81526004016102c990611f14565b60026001540361115b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c9565b6002600181905560008681526097602052604081209182018054879290611183908490612034565b925050819055508481600301600082825461119e9190612034565b9091555050600981015460ff16156111cf576111ca3360018301546001600160a01b0316903088611787565b6112af565b6009810154610100900460ff166112af57600381015460018201546001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190611f8d565b10156112af5760405162461bcd60e51b815260206004820181905260248201527f42616c616e6365206f662063726561746f72206973206e6f7420656e6f75676860448201526064016102c9565b857f5cd42cadabfcfe861e1f12322ae257de37d1240ae38863b4c8b0b50fd0e32a26866040516112e191815260200190565b60405180910390a250506001805550505050565b61137160405180610180016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581526020016000151581525090565b5060009081526097602090815260409182902082516101808101845281546001600160a01b039081168252600183015416928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008083019190915260099092015460ff808216151561012084015292810483161515610140830152620100009004909116151561016082015290565b6114326115fa565b6001600160a01b0381166114975760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102c9565b610a2e81611654565b6000838152609760205260408120600481015460039091015410806114e9575060008481526098602090815260408083206001600160a01b038716845290915290206001015415155b156114f65750600061158b565b60008481526097602052604090206009015462010000900460ff161561155957600084815260976020908152604080832060070154609883528184206001600160a01b03881685529092529091205461154f9190612034565b821115905061158b565b600084815260976020526040902060070154158061158857506000848152609760205260409020600701548211155b90505b9392505050565b6040516001600160a01b0383166024820152604481018290526115f590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526117c5565b505050565b6065546001600160a01b031633146109165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c9565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166116cd5760405162461bcd60e51b81526004016102c990612047565b610916611897565b600054610100900460ff166116fc5760405162461bcd60e51b81526004016102c990612047565b6109166118c7565b600061171060006118f4565b600081815260976020526040902060060154909150156117685760405162461bcd60e51b8152602060048201526013602482015272191d5c1b1a58d85d194818dbdd5c9cd9481a59606a1b60448201526064016102c9565b90565b60006117768361194c565b801561158b575061158b838361197f565b6040516001600160a01b03808516602483015283166044820152606481018290526117bf9085906323b872dd60e01b906084016115be565b50505050565b600061181a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a089092919063ffffffff16565b8051909150156115f557808060200190518101906118389190612092565b6115f55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102c9565b600054610100900460ff166118be5760405162461bcd60e51b81526004016102c990612047565b61091633611654565b600054610100900460ff166118ee5760405162461bcd60e51b81526004016102c990612047565b60018055565b600033611902600143611f61565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b600061195f826301ffc9a760e01b61197f565b801561028b5750611978826001600160e01b031961197f565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156119f1575060208210155b80156119fd5750600081115b979650505050505050565b60606115888484600085856001600160a01b0385163b611a6a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102c9565b600080866001600160a01b03168587604051611a8691906120d3565b60006040518083038185875af1925050503d8060008114611ac3576040519150601f19603f3d011682016040523d82523d6000602084013e611ac8565b606091505b50915091506119fd82828660608315611ae257508161158b565b825115611af25782518084602001fd5b8160405162461bcd60e51b81526004016102c991906120ef565b828054828255906000526020600020908101928215611b47579160200282015b82811115611b47578251825591602001919060010190611b2c565b50611b53929150611b57565b5090565b5b80821115611b535760008155600101611b58565b80356001600160a01b0381168114611b8357600080fd5b919050565b60008060408385031215611b9b57600080fd5b82359150611bab60208401611b6c565b90509250929050565b6000602080835260a0830184518285015281850151604085015260408501516060850152606085015160808086015281815180845260c0870191508483019350600092505b80831015611c195783518252928401926001929092019190840190611bf9565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a08688031215611c5257600080fd5b853594506020611c63818801611b6c565b94506040870135935060608701359250608087013567ffffffffffffffff80821115611c8e57600080fd5b818901915089601f830112611ca257600080fd5b813581811115611cb457611cb4611c24565b8060051b604051601f19603f83011681018181108582111715611cd957611cd9611c24565b60405291825284820192508381018501918c831115611cf757600080fd5b938501935b82851015611d1557843584529385019392850192611cfc565b8096505050505050509295509295909350565b600060208284031215611d3a57600080fd5b5035919050565b8015158114610a2e57600080fd5b600080600080600080600060e0888a031215611d6a57600080fd5b611d7388611b6c565b96506020880135955060408801359450606088013593506080880135925060a0880135611d9f81611d41565b915060c0880135611daf81611d41565b8091505092959891949750929550565b60008060408385031215611dd257600080fd5b50508035926020909101359150565b81516001600160a01b0316815261018081016020830151611e0d60208401826001600160a01b03169052565b5060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611e6a8285018215159052565b505061014083810151151590830152610160928301511515929091019190915290565b600060208284031215611e9f57600080fd5b61158b82611b6c565b600080600060608486031215611ebd57600080fd5b83359250611ecd60208501611b6c565b9150604084013590509250925092565b6020808252601c908201527f63616c6c6572206973206e6f7420636f757273652063726561746f7200000000604082015260600190565b60208082526017908201527f436f7572736520686173206265656e2072656d6f766564000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561028b5761028b611f4b565b600060018201611f8657611f86611f4b565b5060010190565b600060208284031215611f9f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006040820184835260206040818501528185548084526060860191508660005282600020935060005b8181101561200257845483526001948501949284019201611fe6565b5090979650505050505050565b6020808252600b908201526a16995c9bc8185b5bdd5b9d60aa1b604082015260600190565b8082018082111561028b5761028b611f4b565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156120a457600080fd5b815161158b81611d41565b60005b838110156120ca5781810151838201526020016120b2565b50506000910152565b600082516120e58184602087016120af565b9190910192915050565b602081526000825180602084015261210e8160408501602087016120af565b601f01601f1916919091016040019291505056fea2646970667358221220ffde32c539f0c2ca37deb0a615513f93666574250ea78d2595bdfe329536b1c264736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/LearnToEarnTest.sol:LearnToEarnTest": {"srcmap": "161:1668:35:-:0;;;249:159;;;;;;;;;;287:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;273:11:35;:31;;-1:-1:-1;;;;;;273:31:35;-1:-1:-1;;;;;273:31:35;;;;;;;;;314:24;;;-1:-1:-1;;;314:24:35;;;;:22;;:24;;;;;273:11;;314:24;;;;;;273:11;:31;314:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;362:39;;;;;:::i;:::-;317:2:48;299:21;;;356:2;336:18;;;329:30;-1:-1:-1;;;390:2:48;375:18;;368:41;447:3;440:4;425:20;;418:33;;;488:1;467:19;;;460:30;-1:-1:-1;;;521:3:48;506:19;;499:37;568:3;553:19;362:39:35;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;349:10:35;:52;;-1:-1:-1;;;;;;349:52:35;-1:-1:-1;;;;;349:52:35;;;;;;;;;;161:1668;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:564:48:-;161:1668:35;;;;;;", "srcmap-runtime": "161:1668:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;588:1239;;;:::i;:::-;;;666:3;697;726:2;758:15;634:21;806:18;758:15;818:6;806:18;:::i;:::-;834:20;906:11;:204;;-1:-1:-1;;;906:204:35;;-1:-1:-1;;;;;597:32:48;;;906:204:35;;;579:51:48;646:18;;;639:34;;;689:18;;;682:34;;;732:18;;;725:34;;;775:19;;;768:35;;;857:4:35;819:19:48;;;812:51;;;879:19;;;872:51;;;783:41:35;;-1:-1:-1;857:4:35;;906:11;;:24;;551:19:48;;906:204:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1121:16;1140:14;1152:1;1140:11;:14::i;:::-;1225:20;1248:11;;:35;;-1:-1:-1;;;1248:35:35;;;;;1080:25:48;;;1121:33:35;;-1:-1:-1;1225:20:35;;-1:-1:-1;;;;;1248:11:35;;;;:25;;1053:18:48;;1248:35:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1300:14;;1225:58;;-1:-1:-1;;;;;;1300:31:35;1326:4;1300:31;1293:39;;;;:::i;:::-;1373:13;-1:-1:-1;;;;;1349:37:35;:6;:20;;;-1:-1:-1;;;;;1349:37:35;;1342:45;;;;:::i;:::-;1421:10;:6;1430:1;1421:10;:::i;:::-;1404:6;:13;;;:27;1397:35;;;;:::i;:::-;1475:6;1449;:22;;;:32;1442:40;;;;:::i;:::-;1515:5;1499:6;:12;;;:21;1492:29;;;;:::i;:::-;1560:9;1538:6;:18;;;:31;1531:39;;;;:::i;:::-;1610:12;1587:6;:19;;;:35;1580:43;;;;:::i;:::-;1640:18;;;;:23;1633:31;;;;:::i;:::-;1707:15;1681:41;;:6;:22;;;:41;;;1674:49;;;;:::i;:::-;1763:12;1740:35;;:6;:19;;;:35;;;1733:43;;;;:::i;:::-;1793:17;;;;:26;1786:34;;;;:::i;:::-;624:1203;;;;;;;;;588:1239::o;414:168::-;473:7;526:10;548:16;563:1;548:12;:16;:::i;:::-;509:65;;3413:2:48;3409:15;;;;-1:-1:-1;;3405:53:48;509:65:35;;;3393:66:48;538:27:35;3475:12:48;;;3468:28;3512:12;;;3505:28;;;3549:12;;509:65:35;;;;;;;;;;;;499:76;;;;;;492:83;;414:168;;;:::o;14:127:48:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:125;211:9;;;232:10;;;229:36;;;245:18;;:::i;:::-;146:125;;;;:::o;1116:344::-;1183:2;1177:9;1225:3;1213:16;;1259:18;1244:34;;1280:22;;;1241:62;1238:185;;;1345:10;1340:3;1336:20;1333:1;1326:31;1380:4;1377:1;1370:15;1408:4;1405:1;1398:15;1238:185;1439:2;1432:22;1116:344;:::o;1465:177::-;1544:13;;-1:-1:-1;;;;;1586:31:48;;1576:42;;1566:70;;1632:1;1629;1622:12;1566:70;1465:177;;;:::o;1647:164::-;1723:13;;1772;;1765:21;1755:32;;1745:60;;1801:1;1798;1791:12;1816:1122;1910:6;1963:3;1951:9;1942:7;1938:23;1934:33;1931:53;;;1980:1;1977;1970:12;1931:53;2006:17;;:::i;:::-;2046:40;2076:9;2046:40;:::i;:::-;2039:5;2032:55;2119:49;2164:2;2153:9;2149:18;2119:49;:::i;:::-;2114:2;2107:5;2103:14;2096:73;2222:2;2211:9;2207:18;2201:25;2196:2;2189:5;2185:14;2178:49;2280:2;2269:9;2265:18;2259:25;2254:2;2247:5;2243:14;2236:49;2339:3;2328:9;2324:19;2318:26;2312:3;2305:5;2301:15;2294:51;2399:3;2388:9;2384:19;2378:26;2372:3;2365:5;2361:15;2354:51;2459:3;2448:9;2444:19;2438:26;2432:3;2425:5;2421:15;2414:51;2519:3;2508:9;2504:19;2498:26;2492:3;2485:5;2481:15;2474:51;2544:3;2600:2;2589:9;2585:18;2579:25;2574:2;2567:5;2563:14;2556:49;;2624:3;2659:46;2701:2;2690:9;2686:18;2659:46;:::i;:::-;2643:14;;;2636:70;2725:3;2760:46;2787:18;;;2760:46;:::i;:::-;2744:14;;;2737:70;2826:3;2861:46;2888:18;;;2861:46;:::i;:::-;2845:14;;;2838:70;2849:5;1816:1122;-1:-1:-1;;;1816:1122:48:o;2943:127::-;3004:10;2999:3;2995:20;2992:1;2985:31;3035:4;3032:1;3025:15;3059:4;3056:1;3049:15;3075:128;3142:9;;;3163:11;;;3160:37;;;3177:18;;:::i", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"test_createCourse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b5060405161001d90610133565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691821781556040805163204a7f0760e21b81529051638129fc1c9260048084019391929182900301818387803b15801561008d57600080fd5b505af11580156100a1573d6000803e3d6000fd5b505050506040516100b190610140565b6040808252600b908201526a436572746966696361746560a81b60608201526080602082018190526006908201526550494f4e434560d01b60a082015260c001604051809103906000f08015801561010d573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b039290921691909117905561014d565b612178806105cb83390190565b611bdd8061274383390190565b61046f8061015c6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e22387d314610030575b600080fd5b61003861003a565b005b60016064600a42600061005082620151806102d7565b6000546040516316293fa360e31b81526001600160a01b03888116600483015260248201889052604482018790526064820186905260848201849052600160a4830181905260c483018190529394508392169063b149fd189060e401600060405180830381600087803b1580156100c657600080fd5b505af11580156100da573d6000803e3d6000fd5b5050505060006100ea6000610269565b6000805460405163db631a8960e01b81526004810184905292935090916001600160a01b039091169063db631a899060240161018060405180830381865afa15801561013a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015e9190610354565b80519091506001600160a01b0316301461017a5761017a610410565b886001600160a01b031681602001516001600160a01b03161461019f5761019f610410565b6101aa8860016102d7565b8160400151146101bc576101bc610410565b878160600151146101cf576101cf610410565b868160800151146101e2576101e2610410565b858160c00151146101f5576101f5610410565b848160e001511461020857610208610410565b6101008101511561021b5761021b610410565b83151581610160015115151461023357610233610410565b82151581610120015115151461024b5761024b610410565b6101408101511561025e5761025e610410565b505050505050505050565b600033610277600143610426565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ea576102ea6102c1565b92915050565b604051610180810167ffffffffffffffff8111828210171561032257634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b038116811461033f57600080fd5b919050565b8051801515811461033f57600080fd5b6000610180828403121561036757600080fd5b61036f6102f0565b61037883610328565b815261038660208401610328565b602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152506101206103e1818501610344565b908201526101406103f3848201610344565b90820152610160610405848201610344565b908201529392505050565b634e487b7160e01b600052600160045260246000fd5b818103818111156102ea576102ea6102c156fea2646970667358221220547f7a22cea14f65b02de170ef2e36d043a70ab72b91433334ce7ce4635c51c664736f6c63430008100033608060405234801561001057600080fd5b50612158806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80639d84bf91116100715780639d84bf9114610135578063b149fd1814610148578063caca4ad31461015b578063db631a891461016e578063f2fde38b1461018e578063fda626ce146101a157600080fd5b80632cca6f2d146100b95780633c41b482146100e2578063669e88a1146100f7578063715018a61461010a5780638129fc1c146101125780638da5cb5b1461011a575b600080fd5b6100cc6100c7366004611b88565b6101c4565b6040516100d99190611bb4565b60405180910390f35b6100f56100f0366004611c3a565b610291565b005b6100f5610105366004611d28565b61071b565b6100f5610904565b6100f5610918565b6065546040516001600160a01b0390911681526020016100d9565b6100f5610143366004611d28565b610a31565b6100f5610156366004611d4f565b610b31565b6100f5610169366004611dbf565b61107f565b61018161017c366004611d28565b6112f5565b6040516100d99190611de1565b6100f561019c366004611e8d565b61142a565b6101b46101af366004611ea8565b6114a0565b60405190151581526020016100d9565b6101ef6040518060800160405280600081526020016000815260200160008152602001606081525090565b60008381526098602090815260408083206001600160a01b0386168452825291829020825160808101845281548152600182015481840152600282015481850152600382018054855181860281018601909652808652919492936060860193929083018282801561027f57602002820191906000526020600020905b81548152602001906001019080831161026b575b50505050508152505090505b92915050565b60008581526097602052604090205485906001600160a01b031633146102d25760405162461bcd60e51b81526004016102c990611edd565b60405180910390fd5b6000868152609760205260409020600801548690156103035760405162461bcd60e51b81526004016102c990611f14565b60008781526097602052604090206006810154861080159061032457504286105b6103655760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a5b59481cdd185c9d60721b60448201526064016102c9565b8585116103ac5760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642074696d6520636f6d706c65746560581b60448201526064016102c9565b60008881526098602090815260408083206001600160a01b038b16845290915290206001810154156104145760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb5c1b195d1959607a1b60448201526064016102c9565b86815560006104248a8a896114a0565b60018301889055905080156106d157826004015483600301600082825461044b9190611f61565b909155505060058301805490600061046283611f74565b9091555050426002830155600983015460ff16156104a0576004830154600184015461049b916001600160a01b03909116908b90611592565b61067a565b6009830154610100900460ff16156105645760005b836004015481101561055e5760018401546040516335313c2160e11b81526001600160a01b038c8116600483015260038601921690636a627842906024016020604051808303816000875af1158015610512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105369190611f8d565b815460018101835560009283526020909220909101558061055681611f74565b9150506104b5565b5061067a565b82600401548651146105aa5760405162461bcd60e51b815260206004820152600f60248201526e4e6f7420656e6f756768204e46547360881b60448201526064016102c9565b85516105bf9060038401906020890190611b0c565b5060005b86518110156106785760018401546001600160a01b03166342842e0e338c8a85815181106105f3576105f3611fa6565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561064d57600080fd5b505af1158015610661573d6000803e3d6000fd5b50505050808061067090611f74565b9150506105c3565b505b600183015460048401546040516001600160a01b03928316928c16918d917fd7168ab8576ce4d8336598fe8c588ccb843823a522fe33c98365c3e082daa2ca916106c8916003890190611fbc565b60405180910390a45b6040516001600160a01b038a1681528a907fb14f5aab91d7f1973be0a7f66b9f50b5da882aaf454b27c50d6a9d7b2172616c9060200160405180910390a250505050505050505050565b60008181526097602052604090205481906001600160a01b031633146107535760405162461bcd60e51b81526004016102c990611edd565b6000828152609760205260409020600801548290156107845760405162461bcd60e51b81526004016102c990611f14565b6000838152609760205260409020600981015460ff166107d75760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21030b1ba34b7b760911b60448201526064016102c9565b600081600301541161081b5760405162461bcd60e51b815260206004820152600d60248201526c13dd5d081bd988189d5919d95d609a1b60448201526064016102c9565b600981015462010000900460ff168061084557506007810154158015906108455750806007015442115b6108915760405162461bcd60e51b815260206004820152601860248201527f54696d6520626f6e757320686173206e6f7420656e646564000000000000000060448201526064016102c9565b6003810180546000909155815460018301546108ba916001600160a01b03918216911683611592565b81546040518281526001600160a01b039091169086907faa558890c86253324a06b9e861f61281fd0810f170827987572e7123581a779f9060200160405180910390a35050505050565b61090c6115fa565b6109166000611654565b565b600054610100900460ff16158080156109385750600054600160ff909116105b806109525750303b158015610952575060005460ff166001145b6109b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c9565b6000805460ff1916600117905580156109d8576000805461ff0019166101001790555b6109e06116a6565b6109e86116d5565b8015610a2e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008181526097602052604090205481906001600160a01b03163314610a695760405162461bcd60e51b81526004016102c990611edd565b600082815260976020526040902060080154829015610a9a5760405162461bcd60e51b81526004016102c990611f14565b6000838152609760205260408120426008820155600381018054929055600981015490919060ff168015610ace5750600081115b15610af15781546001830154610af1916001600160a01b03918216911683611592565b81546040516001600160a01b039091169086907f10156d1d3e0caa069c8a10325a1dae1512b2ff6bb941c18e16194970746f30a490600090a35050505050565b8560008111610b525760405162461bcd60e51b81526004016102c99061200f565b8560008111610b735760405162461bcd60e51b81526004016102c99061200f565b600260015403610bc55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c9565b60026001556001600160a01b038916610c195760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420726577617264206164647265737360501b60448201526064016102c9565b86881015610c5a5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908189d5919d95d60921b60448201526064016102c9565b8515610caa5742861015610ca55760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a5b59481cdd185c9d60721b60448201526064016102c9565b610cae565b4295505b600084610cc657851580610cc157508686115b610ccb565b600086115b905080610d135760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642074696d6520656e6420626f6e757360501b60448201526064016102c9565b6000610d1d611704565b9050600085610e7457610d406001600160a01b038d1663357c172f60e01b61176b565b905080610e7457610d616001600160a01b038d166380ac58cd60e01b61176b565b610dad5760405162461bcd60e51b815260206004820152601d60248201527f52657761726420636f6e7472616374206973206e6f742045524337323100000060448201526064016102c9565b8a6001600160a01b038d166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e269190611f8d565b1015610e745760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742063726561746f7227732062616c616e6365000060448201526064016102c9565b604051806101800160405280610e873390565b6001600160a01b031681526020018d6001600160a01b031681526020018c81526020018c81526020018b8152602001600081526020018a815260200189815260200160008152602001871515815260200182151581526020018815158152506097600084815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015561010082015181600801556101208201518160090160006101000a81548160ff0219169083151502179055506101408201518160090160016101000a81548160ff0219169083151502179055506101608201518160090160026101000a81548160ff021916908315150217905550905050851561101b5761101b6001600160a01b038d1633308e611787565b604080513381526001600160a01b038e1660208201529081018b9052606081018a905282907fef048bc89a4d92f598f18e11c600d5cc675b387c770c6c49012d166043db64a29060800160405180910390a250506001805550505050505050505050565b60008281526097602052604090205482906001600160a01b031633146110b75760405162461bcd60e51b81526004016102c990611edd565b81600081116110d85760405162461bcd60e51b81526004016102c99061200f565b6000848152609760205260409020600801548490156111095760405162461bcd60e51b81526004016102c990611f14565b60026001540361115b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c9565b6002600181905560008681526097602052604081209182018054879290611183908490612034565b925050819055508481600301600082825461119e9190612034565b9091555050600981015460ff16156111cf576111ca3360018301546001600160a01b0316903088611787565b6112af565b6009810154610100900460ff166112af57600381015460018201546001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190611f8d565b10156112af5760405162461bcd60e51b815260206004820181905260248201527f42616c616e6365206f662063726561746f72206973206e6f7420656e6f75676860448201526064016102c9565b857f5cd42cadabfcfe861e1f12322ae257de37d1240ae38863b4c8b0b50fd0e32a26866040516112e191815260200190565b60405180910390a250506001805550505050565b61137160405180610180016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581526020016000151581525090565b5060009081526097602090815260409182902082516101808101845281546001600160a01b039081168252600183015416928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008083019190915260099092015460ff808216151561012084015292810483161515610140830152620100009004909116151561016082015290565b6114326115fa565b6001600160a01b0381166114975760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102c9565b610a2e81611654565b6000838152609760205260408120600481015460039091015410806114e9575060008481526098602090815260408083206001600160a01b038716845290915290206001015415155b156114f65750600061158b565b60008481526097602052604090206009015462010000900460ff161561155957600084815260976020908152604080832060070154609883528184206001600160a01b03881685529092529091205461154f9190612034565b821115905061158b565b600084815260976020526040902060070154158061158857506000848152609760205260409020600701548211155b90505b9392505050565b6040516001600160a01b0383166024820152604481018290526115f590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526117c5565b505050565b6065546001600160a01b031633146109165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c9565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166116cd5760405162461bcd60e51b81526004016102c990612047565b610916611897565b600054610100900460ff166116fc5760405162461bcd60e51b81526004016102c990612047565b6109166118c7565b600061171060006118f4565b600081815260976020526040902060060154909150156117685760405162461bcd60e51b8152602060048201526013602482015272191d5c1b1a58d85d194818dbdd5c9cd9481a59606a1b60448201526064016102c9565b90565b60006117768361194c565b801561158b575061158b838361197f565b6040516001600160a01b03808516602483015283166044820152606481018290526117bf9085906323b872dd60e01b906084016115be565b50505050565b600061181a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a089092919063ffffffff16565b8051909150156115f557808060200190518101906118389190612092565b6115f55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102c9565b600054610100900460ff166118be5760405162461bcd60e51b81526004016102c990612047565b61091633611654565b600054610100900460ff166118ee5760405162461bcd60e51b81526004016102c990612047565b60018055565b600033611902600143611f61565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b600061195f826301ffc9a760e01b61197f565b801561028b5750611978826001600160e01b031961197f565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156119f1575060208210155b80156119fd5750600081115b979650505050505050565b60606115888484600085856001600160a01b0385163b611a6a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102c9565b600080866001600160a01b03168587604051611a8691906120d3565b60006040518083038185875af1925050503d8060008114611ac3576040519150601f19603f3d011682016040523d82523d6000602084013e611ac8565b606091505b50915091506119fd82828660608315611ae257508161158b565b825115611af25782518084602001fd5b8160405162461bcd60e51b81526004016102c991906120ef565b828054828255906000526020600020908101928215611b47579160200282015b82811115611b47578251825591602001919060010190611b2c565b50611b53929150611b57565b5090565b5b80821115611b535760008155600101611b58565b80356001600160a01b0381168114611b8357600080fd5b919050565b60008060408385031215611b9b57600080fd5b82359150611bab60208401611b6c565b90509250929050565b6000602080835260a0830184518285015281850151604085015260408501516060850152606085015160808086015281815180845260c0870191508483019350600092505b80831015611c195783518252928401926001929092019190840190611bf9565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a08688031215611c5257600080fd5b853594506020611c63818801611b6c565b94506040870135935060608701359250608087013567ffffffffffffffff80821115611c8e57600080fd5b818901915089601f830112611ca257600080fd5b813581811115611cb457611cb4611c24565b8060051b604051601f19603f83011681018181108582111715611cd957611cd9611c24565b60405291825284820192508381018501918c831115611cf757600080fd5b938501935b82851015611d1557843584529385019392850192611cfc565b8096505050505050509295509295909350565b600060208284031215611d3a57600080fd5b5035919050565b8015158114610a2e57600080fd5b600080600080600080600060e0888a031215611d6a57600080fd5b611d7388611b6c565b96506020880135955060408801359450606088013593506080880135925060a0880135611d9f81611d41565b915060c0880135611daf81611d41565b8091505092959891949750929550565b60008060408385031215611dd257600080fd5b50508035926020909101359150565b81516001600160a01b0316815261018081016020830151611e0d60208401826001600160a01b03169052565b5060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611e6a8285018215159052565b505061014083810151151590830152610160928301511515929091019190915290565b600060208284031215611e9f57600080fd5b61158b82611b6c565b600080600060608486031215611ebd57600080fd5b83359250611ecd60208501611b6c565b9150604084013590509250925092565b6020808252601c908201527f63616c6c6572206973206e6f7420636f757273652063726561746f7200000000604082015260600190565b60208082526017908201527f436f7572736520686173206265656e2072656d6f766564000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561028b5761028b611f4b565b600060018201611f8657611f86611f4b565b5060010190565b600060208284031215611f9f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006040820184835260206040818501528185548084526060860191508660005282600020935060005b8181101561200257845483526001948501949284019201611fe6565b5090979650505050505050565b6020808252600b908201526a16995c9bc8185b5bdd5b9d60aa1b604082015260600190565b8082018082111561028b5761028b611f4b565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156120a457600080fd5b815161158b81611d41565b60005b838110156120ca5781810151838201526020016120b2565b50506000910152565b600082516120e58184602087016120af565b9190910192915050565b602081526000825180602084015261210e8160408501602087016120af565b601f01601f1916919091016040019291505056fea2646970667358221220ffde32c539f0c2ca37deb0a615513f93666574250ea78d2595bdfe329536b1c264736f6c6343000810003360806040523480156200001157600080fd5b5060405162001bdd38038062001bdd833981016040819052620000349162000193565b818160006200004483826200028c565b5060016200005382826200028c565b505050620000706200006a6200007860201b60201c565b6200007c565b505062000358565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000f657600080fd5b81516001600160401b0380821115620001135762000113620000ce565b604051601f8301601f19908116603f011681019082821181831017156200013e576200013e620000ce565b816040528381526020925086838588010111156200015b57600080fd5b600091505b838210156200017f578582018301518183018401529082019062000160565b600093810190920192909252949350505050565b60008060408385031215620001a757600080fd5b82516001600160401b0380821115620001bf57600080fd5b620001cd86838701620000e4565b93506020850151915080821115620001e457600080fd5b50620001f385828601620000e4565b9150509250929050565b600181811c908216806200021257607f821691505b6020821081036200023357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028757600081815260208120601f850160051c81016020861015620002625750805b601f850160051c820191505b8181101562000283578281556001016200026e565b5050505b505050565b81516001600160401b03811115620002a857620002a8620000ce565b620002c081620002b98454620001fd565b8462000239565b602080601f831160018114620002f85760008415620002df5750858301515b600019600386901b1c1916600185901b17855562000283565b600085815260208120601f198616915b82811015620003295788860151825594840194600190910190840162000308565b5085821015620003485787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61187580620003686000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde1461022f578063c87b56dd14610242578063e985e9c514610255578063eacabe1414610268578063f2fde38b1461027b57600080fd5b8063715018a6146101fb5780638da5cb5b1461020357806395d89b4114610214578063a22cb4651461021c57600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab5780636352211e146101be57806370a08231146101d1578063714cff56146101f257600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e6101293660046111e6565b61028e565b60405190151581526020015b60405180910390f35b61014b6102e0565b60405161013a9190611253565b61016b610166366004611266565b610372565b6040516001600160a01b03909116815260200161013a565b61019661019136600461129b565b610399565b005b6101966101a63660046112c5565b6104b3565b6101966101b93660046112c5565b6104e4565b61016b6101cc366004611266565b6104ff565b6101e46101df366004611301565b61055f565b60405190815260200161013a565b6101e460085481565b6101966105e5565b6007546001600160a01b031661016b565b61014b6105f9565b61019661022a36600461131c565b610608565b61019661023d3660046113e4565b610617565b61014b610250366004611266565b61064f565b61012e610263366004611460565b61075f565b610196610276366004611493565b61078d565b610196610289366004611301565b61084b565b60006001600160e01b031982166380ac58cd60e01b14806102bf57506001600160e01b03198216635b5e139f60e01b145b806102da57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102ef906114f5565b80601f016020809104026020016040519081016040528092919081815260200182805461031b906114f5565b80156103685780601f1061033d57610100808354040283529160200191610368565b820191906000526020600020905b81548152906001019060200180831161034b57829003601f168201915b5050505050905090565b600061037d826108c4565b506000908152600460205260409020546001600160a01b031690565b60006103a4826104ff565b9050806001600160a01b0316836001600160a01b0316036104165760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806104325750610432813361075f565b6104a45760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161040d565b6104ae8383610923565b505050565b6104bd3382610991565b6104d95760405162461bcd60e51b815260040161040d9061152f565b6104ae8383836109ef565b6104ae83838360405180602001604052806000815250610617565b6000818152600260205260408120546001600160a01b0316806102da5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161040d565b60006001600160a01b0382166105c95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161040d565b506001600160a01b031660009081526003602052604090205490565b6105ed610b8b565b6105f76000610be5565b565b6060600180546102ef906114f5565b610613338383610c37565b5050565b6106213383610991565b61063d5760405162461bcd60e51b815260040161040d9061152f565b61064984848484610d05565b50505050565b606061065a826108c4565b60008281526006602052604081208054610673906114f5565b80601f016020809104026020016040519081016040528092919081815260200182805461069f906114f5565b80156106ec5780601f106106c1576101008083540402835291602001916106ec565b820191906000526020600020905b8154815290600101906020018083116106cf57829003601f168201915b50505050509050600061070a60408051602081019091526000815290565b9050805160000361071c575092915050565b81511561074e57808260405160200161073692919061157d565b60405160208183030381529060405292505050919050565b61075784610d38565b949350505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610795610b8b565b6001600160a01b0382166107dd5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161040d565b600880549060006107ed836115c2565b91905055506107fe82600854610dac565b61080a60085482610dc6565b7f9f0432214927ca5d54e705bee45cb45cd0b88d9c6bc15906cc3498feb1d81310826008548360405161083f939291906115db565b60405180910390a15050565b610853610b8b565b6001600160a01b0381166108b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040d565b6108c181610be5565b50565b6000818152600260205260409020546001600160a01b03166108c15760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161040d565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610958826104ff565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061099d836104ff565b9050806001600160a01b0316846001600160a01b031614806109c457506109c4818561075f565b806107575750836001600160a01b03166109dd84610372565b6001600160a01b031614949350505050565b826001600160a01b0316610a02826104ff565b6001600160a01b031614610a665760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161040d565b6001600160a01b038216610ac85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161040d565b610ad3600082610923565b6001600160a01b0383166000908152600360205260408120805460019290610afc90849061160b565b90915550506001600160a01b0382166000908152600360205260408120805460019290610b2a90849061161e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6007546001600160a01b031633146105f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603610c985760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161040d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d108484846109ef565b610d1c84848484610e59565b6106495760405162461bcd60e51b815260040161040d90611631565b6060610d43826108c4565b6000610d5a60408051602081019091526000815290565b90506000815111610d7a5760405180602001604052806000815250610da5565b80610d8484610f5a565b604051602001610d9592919061157d565b6040516020818303038152906040525b9392505050565b61061382826040518060200160405280600081525061105b565b6000828152600260205260409020546001600160a01b0316610e415760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161040d565b60008281526006602052604090206104ae82826116d1565b60006001600160a01b0384163b15610f4f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610e9d903390899088908890600401611791565b6020604051808303816000875af1925050508015610ed8575060408051601f3d908101601f19168201909252610ed5918101906117ce565b60015b610f35573d808015610f06576040519150601f19603f3d011682016040523d82523d6000602084013e610f0b565b606091505b508051600003610f2d5760405162461bcd60e51b815260040161040d90611631565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610757565b506001949350505050565b606081600003610f815750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610fab5780610f95816115c2565b9150610fa49050600a83611801565b9150610f85565b60008167ffffffffffffffff811115610fc657610fc6611358565b6040519080825280601f01601f191660200182016040528015610ff0576020820181803683370190505b5090505b84156107575761100560018361160b565b9150611012600a86611815565b61101d90603061161e565b60f81b81838151811061103257611032611829565b60200101906001600160f81b031916908160001a905350611054600a86611801565b9450610ff4565b611065838361108e565b6110726000848484610e59565b6104ae5760405162461bcd60e51b815260040161040d90611631565b6001600160a01b0382166110e45760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161040d565b6000818152600260205260409020546001600160a01b0316156111495760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161040d565b6001600160a01b038216600090815260036020526040812080546001929061117290849061161e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b0319811681146108c157600080fd5b6000602082840312156111f857600080fd5b8135610da5816111d0565b60005b8381101561121e578181015183820152602001611206565b50506000910152565b6000815180845261123f816020860160208601611203565b601f01601f19169290920160200192915050565b602081526000610da56020830184611227565b60006020828403121561127857600080fd5b5035919050565b80356001600160a01b038116811461129657600080fd5b919050565b600080604083850312156112ae57600080fd5b6112b78361127f565b946020939093013593505050565b6000806000606084860312156112da57600080fd5b6112e38461127f565b92506112f16020850161127f565b9150604084013590509250925092565b60006020828403121561131357600080fd5b610da58261127f565b6000806040838503121561132f57600080fd5b6113388361127f565b91506020830135801515811461134d57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561138957611389611358565b604051601f8501601f19908116603f011681019082821181831017156113b1576113b1611358565b816040528093508581528686860111156113ca57600080fd5b858560208301376000602087830101525050509392505050565b600080600080608085870312156113fa57600080fd5b6114038561127f565b93506114116020860161127f565b925060408501359150606085013567ffffffffffffffff81111561143457600080fd5b8501601f8101871361144557600080fd5b6114548782356020840161136e565b91505092959194509250565b6000806040838503121561147357600080fd5b61147c8361127f565b915061148a6020840161127f565b90509250929050565b600080604083850312156114a657600080fd5b6114af8361127f565b9150602083013567ffffffffffffffff8111156114cb57600080fd5b8301601f810185136114dc57600080fd5b6114eb8582356020840161136e565b9150509250929050565b600181811c9082168061150957607f821691505b60208210810361152957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000835161158f818460208801611203565b8351908301906115a3818360208801611203565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016115d4576115d46115ac565b5060010190565b60018060a01b03841681528260208201526060604082015260006116026060830184611227565b95945050505050565b818103818111156102da576102da6115ac565b808201808211156102da576102da6115ac565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b601f8211156104ae57600081815260208120601f850160051c810160208610156116aa5750805b601f850160051c820191505b818110156116c9578281556001016116b6565b505050505050565b815167ffffffffffffffff8111156116eb576116eb611358565b6116ff816116f984546114f5565b84611683565b602080601f831160018114611734576000841561171c5750858301515b600019600386901b1c1916600185901b1785556116c9565b600085815260208120601f198616915b8281101561176357888601518255948401946001909101908401611744565b50858210156117815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906117c490830184611227565b9695505050505050565b6000602082840312156117e057600080fd5b8151610da5816111d0565b634e487b7160e01b600052601260045260246000fd5b600082611810576118106117eb565b500490565b600082611824576118246117eb565b500690565b634e487b7160e01b600052603260045260246000fdfea264697066735822122055b4e07304fe036fe3f04e44a7921cbb4fce75fcf1885d1110f1e529fecb60a764736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e22387d314610030575b600080fd5b61003861003a565b005b60016064600a42600061005082620151806102d7565b6000546040516316293fa360e31b81526001600160a01b03888116600483015260248201889052604482018790526064820186905260848201849052600160a4830181905260c483018190529394508392169063b149fd189060e401600060405180830381600087803b1580156100c657600080fd5b505af11580156100da573d6000803e3d6000fd5b5050505060006100ea6000610269565b6000805460405163db631a8960e01b81526004810184905292935090916001600160a01b039091169063db631a899060240161018060405180830381865afa15801561013a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015e9190610354565b80519091506001600160a01b0316301461017a5761017a610410565b886001600160a01b031681602001516001600160a01b03161461019f5761019f610410565b6101aa8860016102d7565b8160400151146101bc576101bc610410565b878160600151146101cf576101cf610410565b868160800151146101e2576101e2610410565b858160c00151146101f5576101f5610410565b848160e001511461020857610208610410565b6101008101511561021b5761021b610410565b83151581610160015115151461023357610233610410565b82151581610120015115151461024b5761024b610410565b6101408101511561025e5761025e610410565b505050505050505050565b600033610277600143610426565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ea576102ea6102c1565b92915050565b604051610180810167ffffffffffffffff8111828210171561032257634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b038116811461033f57600080fd5b919050565b8051801515811461033f57600080fd5b6000610180828403121561036757600080fd5b61036f6102f0565b61037883610328565b815261038660208401610328565b602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152506101206103e1818501610344565b908201526101406103f3848201610344565b90820152610160610405848201610344565b908201529392505050565b634e487b7160e01b600052600160045260246000fd5b818103818111156102ea576102ea6102c156fea2646970667358221220547f7a22cea14f65b02de170ef2e36d043a70ab72b91433334ce7ce4635c51c664736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/NFTReward.sol:NFTReward": {"srcmap": "378:1883:36:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "378:1883:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2022:237;;;;;;:::i;:::-;;:::i;:::-;;;565:14:48;;558:22;540:41;;528:2;513:18;2022:237:36;;;;;;;;2931:98:6;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:48;;;1679:51;;1667:2;1652:18;4407:167:6;1533:203:48;3928:418:6;;;;;;:::i;:::-;;:::i;:::-;;5084:327;;;;;;:::i;:::-;;:::i;5477:179::-;;;;;;:::i;:::-;;:::i;999:309:36:-;;;;;;:::i;:::-;;:::i;2651:218:6:-;;;;;;:::i;:::-;;:::i;1495:293:36:-;;;;;;:::i;:::-;;:::i;:::-;;;4667:25:48;;;4655:2;4640:18;1495:293:36;4521:177:48;2390:204:6;;;;;;:::i;:::-;;:::i;605:23:36:-;;;;;;3093:102:6;;;:::i;4641:153::-;;;;;;:::i;:::-;;:::i;509:26:36:-;;;;;-1:-1:-1;;;;;509:26:36;;;5722:315:6;;;;;;:::i;:::-;;:::i;747:608:9:-;;;;;;:::i;:::-;;:::i;4860:162:6:-;;;;;;:::i;:::-;;:::i;716:17:36:-;;;:::i;2022:237::-;2146:4;-1:-1:-1;;;;;;2169:43:36;;-1:-1:-1;;;2169:43:36;;:83;;;2216:36;2240:11;2216:23;:36::i;:::-;2162:90;2022:237;-1:-1:-1;;2022:237:36:o;2931:98:6:-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:6;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:6;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:6;:2;-1:-1:-1;;;;;4076:11:6;;4068:57;;;;-1:-1:-1;;;4068:57:6;;6579:2:48;4068:57:6;;;6561:21:48;6618:2;6598:18;;;6591:30;6657:34;6637:18;;;6630:62;-1:-1:-1;;;6708:18:48;;;6701:31;6749:19;;4068:57:6;;;;;;;;;929:10:12;-1:-1:-1;;;;;4157:21:6;;;;:62;;-1:-1:-1;4182:37:6;4199:5;929:10:12;4860:162:6;:::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:6;;6981:2:48;4136:171:6;;;6963:21:48;7020:2;7000:18;;;6993:30;7059:34;7039:18;;;7032:62;7130:32;7110:18;;;7103:60;7180:19;;4136:171:6;6779:426:48;4136:171:6;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;5084:327::-;5273:41;929:10:12;5306:7:6;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:6;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;5477:179::-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;999:309:36:-;3111:19:1;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:1;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:1;1476:19:11;:23;;;3219:66:1;;-1:-1:-1;3268:12:1;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:1;;7827:2:48;3157:201:1;;;7809:21:48;7866:2;7846:18;;;7839:30;7905:34;7885:18;;;7878:62;-1:-1:-1;;;7956:18:48;;;7949:44;8010:19;;3157:201:1;7625:410:48;3157:201:1;3368:12;:16;;-1:-1:-1;;3368:16:1;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:1;;;;;3394:65;-1:-1:-1;;;;;1142:26:36;::::1;1134:71;;;::::0;-1:-1:-1;;;1134:71:36;;8242:2:48;1134:71:36::1;::::0;::::1;8224:21:48::0;;;8261:18;;;8254:30;8320:34;8300:18;;;8293:62;8372:18;;1134:71:36::1;8040:356:48::0;1134:71:36::1;1215:29;1229:5;1236:7;1215:13;:29::i;:::-;1255:11;:26:::0;;-1:-1:-1;;;;;;1255:26:36::1;-1:-1:-1::0;;;;;1255:26:36;::::1;;::::0;;1291:3:::1;:10;1297:4:::0;1291:3;:10:::1;:::i;:::-;;3483:14:1::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:1;;;3553:14;;-1:-1:-1;10757:36:48;;3553:14:1;;10745:2:48;10730:18;3553:14:1;;;;;;;3479:99;3101:483;999:309:36;;;;:::o;2651:218:6:-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:6;;2784:56;;;;-1:-1:-1;;;2784:56:6;;11006:2:48;2784:56:6;;;10988:21:48;11045:2;11025:18;;;11018:30;-1:-1:-1;;;11064:18:48;;;11057:54;11128:18;;2784:56:6;10804:348:48;1495:293:36;1582:11;;1539:7;;-1:-1:-1;;;;;1582:11:36;929:10:12;-1:-1:-1;;;;;1566:27:36;;1558:65;;;;-1:-1:-1;;;1558:65:36;;11359:2:48;1558:65:36;;;11341:21:48;11398:2;11378:18;;;11371:30;11437:27;11417:18;;;11410:55;11482:18;;1558:65:36;11157:349:48;1558:65:36;1635:8;;1633:10;;;;;:::i;:::-;;;;-1:-1:-1;1668:8:36;;1653:24;;1663:3;;1653:9;:24::i;:::-;1687:27;1700:8;;1710:3;1687:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;1730:26;1737:3;1742:8;;1752:3;1730:26;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;1773:8:36;;;1495:293::o;2390:204:6:-;2462:7;-1:-1:-1;;;;;2489:19:6;;2481:73;;;;-1:-1:-1;;;2481:73:6;;13122:2:48;2481:73:6;;;13104:21:48;13161:2;13141:18;;;13134:30;13200:34;13180:18;;;13173:62;-1:-1:-1;;;13251:18:48;;;13244:39;13300:19;;2481:73:6;12920:405:48;2481:73:6;-1:-1:-1;;;;;;2571:16:6;;;;;:9;:16;;;;;;;2390:204::o;3093:102::-;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;929:10:12;4768:8:6;4778;4735:18;:52::i;:::-;4641:153;;:::o;5722:315::-;5890:41;929:10:12;5923:7:6;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:6;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;747:608:9:-;820:13;845:23;860:7;845:14;:23::i;:::-;879;905:19;;;:10;:19;;;;;879:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;934:18;955:10;3855:9:6;;;;;;;;;-1:-1:-1;3855:9:6;;;3779:92;955:10:9;934:31;;1044:4;1038:18;1060:1;1038:23;1034:70;;-1:-1:-1;1084:9:9;747:608;-1:-1:-1;;747:608:9:o;1034:70::-;1206:23;;:27;1202:106;;1280:4;1286:9;1263:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1249:48;;;;747:608;;;:::o;1202:106::-;1325:23;1340:7;1325:14;:23::i;:::-;1318:30;747:608;-1:-1:-1;;;;747:608:9:o;4860:162:6:-;-1:-1:-1;;;;;4980:25:6;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162::o;716:17:36:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1987:344:6:-;2111:4;-1:-1:-1;;;;;;2146:51:6;;-1:-1:-1;;;2146:51:6;;:126;;-1:-1:-1;;;;;;;2213:59:6;;-1:-1:-1;;;2213:59:6;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:15;;;2288:36:6;1060:166:15;12173:133:6;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:6;12246:53;;;;-1:-1:-1;;;12246:53:6;;11006:2:48;12246:53:6;;;10988:21:48;11045:2;11025:18;;;11018:30;-1:-1:-1;;;11064:18:48;;;11057:54;11128:18;;12246:53:6;10804:348:48;12246:53:6;12173:133;:::o;11464:182::-;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:6;-1:-1:-1;;;;;11538:29:6;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:6;;;;;;;;;;;11464:182;;:::o;7789:272::-;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:6;:7;-1:-1:-1;;;;;7966:16:6;;:52;;;;7986:32;8003:5;8010:7;7986:16;:32::i;:::-;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:6;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:6;;7958:96;7789:272;-1:-1:-1;;;;7789:272:6:o;10736:616::-;10901:4;-1:-1:-1;;;;;10863:42:6;:34;10889:7;10863:25;:34::i;:::-;-1:-1:-1;;;;;10863:42:6;;10855:92;;;;-1:-1:-1;;;10855:92:6;;14033:2:48;10855:92:6;;;14015:21:48;14072:2;14052:18;;;14045:30;14111:34;14091:18;;;14084:62;-1:-1:-1;;;14162:18:48;;;14155:35;14207:19;;10855:92:6;13831:401:48;10855:92:6;-1:-1:-1;;;;;10965:16:6;;10957:65;;;;-1:-1:-1;;;10957:65:6;;14439:2:48;10957:65:6;;;14421:21:48;14478:2;14458:18;;;14451:30;14517:34;14497:18;;;14490:62;-1:-1:-1;;;14568:18:48;;;14561:34;14612:19;;10957:65:6;14237:400:48;10957:65:6;11134:29;11151:1;11155:7;11134:8;:29::i;:::-;-1:-1:-1;;;;;11174:15:6;;;;;;:9;:15;;;;;:20;;11193:1;;11174:15;:20;;11193:1;;11174:20;:::i;:::-;;;;-1:-1:-1;;;;;;;11204:13:6;;;;;;:9;:13;;;;;:18;;11221:1;;11204:13;:18;;11221:1;;11204:18;:::i;:::-;;;;-1:-1:-1;;11232:16:6;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;11232:21:6;-1:-1:-1;;;;;11232:21:6;;;;;;;;;11269:27;;11232:16;;11269:27;;;;;;;3998:348;3928:418;;:::o;1605:149::-;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1708:39:6::1;1732:5;1739:7;1708:23;:39::i;8391:108::-:0;8466:26;8476:2;8480:7;8466:26;;;;;;;;;;;;:9;:26::i;1502:214:9:-;7571:4:6;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:6;1593:75:9;;;;-1:-1:-1;;;1593:75:9;;15519:2:48;1593:75:9;;;15501:21:48;15558:2;15538:18;;;15531:30;15597:34;15577:18;;;15570:62;-1:-1:-1;;;15648:18:48;;;15641:44;15702:19;;1593:75:9;15317:410:48;1593:75:9;1678:19;;;;:10;:19;;;;;:31;1700:9;1678:19;:31;:::i;11782:307:6:-;11932:8;-1:-1:-1;;;;;11923:17:6;:5;-1:-1:-1;;;;;11923:17:6;;11915:55;;;;-1:-1:-1;;;11915:55:6;;15934:2:48;11915:55:6;;;15916:21:48;15973:2;15953:18;;;15946:30;16012:27;15992:18;;;15985:55;16057:18;;11915:55:6;15732:349:48;11915:55:6;-1:-1:-1;;;;;11980:25:6;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:6;;;;;;;;;;12041:41;;540::48;;;12041::6;;513:18:48;12041:41:6;;;;;;;11782:307;;;:::o;6898:305::-;7048:28;7058:4;7064:2;7068:7;7048:9;:28::i;:::-;7094:47;7117:4;7123:2;7127:7;7136:4;7094:22;:47::i;:::-;7086:110;;;;-1:-1:-1;;;7086:110:6;;;;;;;:::i;3261:276::-;3334:13;3359:23;3374:7;3359:14;:23::i;:::-;3393:21;3417:10;3855:9;;;;;;;;;-1:-1:-1;3855:9:6;;;3779:92;3417:10;3393:34;;3468:1;3450:7;3444:21;:25;:86;;;;;;;;;;;;;;;;;3496:7;3505:18;:7;:16;:18::i;:::-;3479:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3444:86;3437:93;3261:276;-1:-1:-1;;;3261:276:6:o;1760:160::-;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1873:5:6::1;:13;1881:5:::0;1873;:13:::1;:::i;:::-;-1:-1:-1::0;1896:7:6::1;:17;1906:7:::0;1896;:17:::1;:::i;8720:309::-:0;8844:18;8850:2;8854:7;8844:5;:18::i;:::-;8893:53;8924:1;8928:2;8932:7;8941:4;8893:22;:53::i;:::-;8872:150;;;;-1:-1:-1;;;8872:150:6;;;;;;;:::i;12858:853::-;13007:4;-1:-1:-1;;;;;13027:13:6;;1476:19:11;:23;13023:682:6;;13062:82;;-1:-1:-1;;;13062:82:6;;-1:-1:-1;;;;;13062:47:6;;;;;:82;;929:10:12;;13124:4:6;;13130:7;;13139:4;;13062:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:6;;;;;;;;-1:-1:-1;;13062:82:6;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:6;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:6;-1:-1:-1;;;13194:62:6;;-1:-1:-1;13187:69:6;;13023:682;-1:-1:-1;13690:4:6;12858:853;;;;;;:::o;403:703:13:-;459:13;676:5;685:1;676:10;672:51;;-1:-1:-1;;702:10:13;;;;;;;;;;;;-1:-1:-1;;;702:10:13;;;;;403:703::o;672:51::-;747:5;732:12;786:75;793:9;;786:75;;818:8;;;;:::i;:::-;;-1:-1:-1;840:10:13;;-1:-1:-1;848:2:13;840:10;;:::i;:::-;;;786:75;;;870:19;902:6;892:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;892:17:13;;870:39;;919:150;926:10;;919:150;;952:11;962:1;952:11;;:::i;:::-;;-1:-1:-1;1020:10:13;1028:2;1020:5;:10;:::i;:::-;1007:24;;:2;:24;:::i;:::-;994:39;;977:6;984;977:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;977:56:13;;;;;;;;-1:-1:-1;1047:11:13;1056:2;1047:11;;:::i;:::-;;;919:150;;9351:427:6;-1:-1:-1;;;;;9430:16:6;;9422:61;;;;-1:-1:-1;;;9422:61:6;;17961:2:48;9422:61:6;;;17943:21:48;;;17980:18;;;17973:30;18039:34;18019:18;;;18012:62;18091:18;;9422:61:6;17759:356:48;9422:61:6;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:6;:30;9493:58;;;;-1:-1:-1;;;9493:58:6;;18322:2:48;9493:58:6;;;18304:21:48;18361:2;18341:18;;;18334:30;18400;18380:18;;;18373:58;18448:18;;9493:58:6;18120:352:48;9493:58:6;-1:-1:-1;;;;;9618:13:6;;;;;;:9;:13;;;;;:18;;9635:1;;9618:13;:18;;9635:1;;9618:18;:::i;:::-;;;;-1:-1:-1;;9646:16:6;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9646:21:6;-1:-1:-1;;;;;9646:21:6;;;;;;;;9683:33;;9646:16;;;9683:33;;9646:16;;9683:33;4641:153;;:::o;14:131:48:-;-1:-1:-1;;;;;;88:32:48;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:48;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:48;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:48:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:48;;1348:180;-1:-1:-1;1348:180:48:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:48;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:48:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:127::-;2572:10;2567:3;2563:20;2560:1;2553:31;2603:4;2600:1;2593:15;2627:4;2624:1;2617:15;2643:632;2708:5;2738:18;2779:2;2771:6;2768:14;2765:40;;;2785:18;;:::i;:::-;2860:2;2854:9;2828:2;2914:15;;-1:-1:-1;;2910:24:48;;;2936:2;2906:33;2902:42;2890:55;;;2960:18;;;2980:22;;;2957:46;2954:72;;;3006:18;;:::i;:::-;3046:10;3042:2;3035:22;3075:6;3066:15;;3105:6;3097;3090:22;3145:3;3136:6;3131:3;3127:16;3124:25;3121:45;;;3162:1;3159;3152:12;3121:45;3212:6;3207:3;3200:4;3192:6;3188:17;3175:44;3267:1;3260:4;3251:6;3243;3239:19;3235:30;3228:41;;;;2643:632;;;;;:::o;3280:222::-;3323:5;3376:3;3369:4;3361:6;3357:17;3353:27;3343:55;;3394:1;3391;3384:12;3343:55;3416:80;3492:3;3483:6;3470:20;3463:4;3455:6;3451:17;3416:80;:::i;3507:818::-;3623:6;3631;3639;3647;3700:3;3688:9;3679:7;3675:23;3671:33;3668:53;;;3717:1;3714;3707:12;3668:53;3740:29;3759:9;3740:29;:::i;:::-;3730:39;;3820:2;3809:9;3805:18;3792:32;3843:18;3884:2;3876:6;3873:14;3870:34;;;3900:1;3897;3890:12;3870:34;3923:50;3965:7;3956:6;3945:9;3941:22;3923:50;:::i;:::-;3913:60;;4026:2;4015:9;4011:18;3998:32;3982:48;;4055:2;4045:8;4042:16;4039:36;;;4071:1;4068;4061:12;4039:36;4094:52;4138:7;4127:8;4116:9;4112:24;4094:52;:::i;:::-;4084:62;;4199:2;4188:9;4184:18;4171:32;4155:48;;4228:2;4218:8;4215:16;4212:36;;;4244:1;4241;4234:12;4212:36;;4267:52;4311:7;4300:8;4289:9;4285:24;4267:52;:::i;:::-;4257:62;;;3507:818;;;;;;;:::o;4330:186::-;4389:6;4442:2;4430:9;4421:7;4417:23;4413:32;4410:52;;;4458:1;4455;4448:12;4410:52;4481:29;4500:9;4481:29;:::i;4703:347::-;4768:6;4776;4829:2;4817:9;4808:7;4804:23;4800:32;4797:52;;;4845:1;4842;4835:12;4797:52;4868:29;4887:9;4868:29;:::i;:::-;4858:39;;4947:2;4936:9;4932:18;4919:32;4994:5;4987:13;4980:21;4973:5;4970:32;4960:60;;5016:1;5013;5006:12;4960:60;5039:5;5029:15;;;4703:347;;;;;:::o;5055:667::-;5150:6;5158;5166;5174;5227:3;5215:9;5206:7;5202:23;5198:33;5195:53;;;5244:1;5241;5234:12;5195:53;5267:29;5286:9;5267:29;:::i;:::-;5257:39;;5315:38;5349:2;5338:9;5334:18;5315:38;:::i;:::-;5305:48;;5400:2;5389:9;5385:18;5372:32;5362:42;;5455:2;5444:9;5440:18;5427:32;5482:18;5474:6;5471:30;5468:50;;;5514:1;5511;5504:12;5468:50;5537:22;;5590:4;5582:13;;5578:27;-1:-1:-1;5568:55:48;;5619:1;5616;5609:12;5568:55;5642:74;5708:7;5703:2;5690:16;5685:2;5681;5677:11;5642:74;:::i;5727:260::-;5795:6;5803;5856:2;5844:9;5835:7;5831:23;5827:32;5824:52;;;5872:1;5869;5862:12;5824:52;5895:29;5914:9;5895:29;:::i;:::-;5885:39;;5943:38;5977:2;5966:9;5962:18;5943:38;:::i;:::-;5933:48;;5727:260;;;;;:::o;5992:380::-;6071:1;6067:12;;;;6114;;;6135:61;;6189:4;6181:6;6177:17;6167:27;;6135:61;6242:2;6234:6;6231:14;6211:18;6208:38;6205:161;;6288:10;6283:3;6279:20;6276:1;6269:31;6323:4;6320:1;6313:15;6351:4;6348:1;6341:15;6205:161;;5992:380;;;:::o;7210:410::-;7412:2;7394:21;;;7451:2;7431:18;;;7424:30;7490:34;7485:2;7470:18;;7463:62;-1:-1:-1;;;7556:2:48;7541:18;;7534:44;7610:3;7595:19;;7210:410::o;8527:545::-;8629:2;8624:3;8621:11;8618:448;;;8665:1;8690:5;8686:2;8679:17;8735:4;8731:2;8721:19;8805:2;8793:10;8789:19;8786:1;8782:27;8776:4;8772:38;8841:4;8829:10;8826:20;8823:47;;;-1:-1:-1;8864:4:48;8823:47;8919:2;8914:3;8910:12;8907:1;8903:20;8897:4;8893:31;8883:41;;8974:82;8992:2;8985:5;8982:13;8974:82;;;9037:17;;;9018:1;9007:13;8974:82;;;8978:3;;;8527:545;;;:::o;9248:1352::-;9374:3;9368:10;9401:18;9393:6;9390:30;9387:56;;;9423:18;;:::i;:::-;9452:97;9542:6;9502:38;9534:4;9528:11;9502:38;:::i;:::-;9496:4;9452:97;:::i;:::-;9604:4;;9668:2;9657:14;;9685:1;9680:663;;;;10387:1;10404:6;10401:89;;;-1:-1:-1;10456:19:48;;;10450:26;10401:89;-1:-1:-1;;9205:1:48;9201:11;;;9197:24;9193:29;9183:40;9229:1;9225:11;;;9180:57;10503:81;;9650:944;;9680:663;8474:1;8467:14;;;8511:4;8498:18;;-1:-1:-1;;9716:20:48;;;9834:236;9848:7;9845:1;9842:14;9834:236;;;9937:19;;;9931:26;9916:42;;10029:27;;;;9997:1;9985:14;;;;9864:19;;9834:236;;;9838:3;10098:6;10089:7;10086:19;10083:201;;;10159:19;;;10153:26;-1:-1:-1;;10242:1:48;10238:14;;;10254:3;10234:24;10230:37;10226:42;10211:58;10196:74;;10083:201;-1:-1:-1;;;;;10330:1:48;10314:14;;;10310:22;10297:36;;-1:-1:-1;9248:1352:48:o;11511:127::-;11572:10;11567:3;11563:20;11560:1;11553:31;11603:4;11600:1;11593:15;11627:4;11624:1;11617:15;11643:135;11682:3;11703:17;;;11700:43;;11723:18;;:::i;:::-;-1:-1:-1;11770:1:48;11759:13;;11643:135::o;11783:1132::-;12014:1;12010;12005:3;12001:11;11997:19;11989:6;11985:32;11974:9;11967:51;11948:4;12037:2;12075:6;12070:2;12059:9;12055:18;12048:34;12118:2;12113;12102:9;12098:18;12091:30;12141:1;12174:6;12168:13;12204:36;12230:9;12204:36;:::i;:::-;12276:6;12271:2;12260:9;12256:18;12249:34;12302:3;12324:1;12356:2;12345:9;12341:18;12373:1;12368:158;;;;12540:1;12535:354;;;;12334:555;;12368:158;-1:-1:-1;;12416:24:48;;12396:18;;;12389:52;12494:14;;12487:22;12484:1;12480:30;12465:46;;12461:55;;;-1:-1:-1;12368:158:48;;12535:354;12566:6;12563:1;12556:17;12614:2;12611:1;12601:16;12639:1;12653:180;12667:6;12664:1;12661:13;12653:180;;;12760:14;;12736:17;;;12732:26;;12725:50;12803:16;;;;12682:10;;12653:180;;;12857:17;;12853:26;;;-1:-1:-1;;12334:555:48;-1:-1:-1;12906:3:48;;11783:1132;-1:-1:-1;;;;;;;;;;11783:1132:48:o;13330:496::-;13509:3;13547:6;13541:13;13563:66;13622:6;13617:3;13610:4;13602:6;13598:17;13563:66;:::i;:::-;13692:13;;13651:16;;;;13714:70;13692:13;13651:16;13761:4;13749:17;;13714:70;:::i;:::-;13800:20;;13330:496;-1:-1:-1;;;;13330:496:48:o;14642:128::-;14709:9;;;14730:11;;;14727:37;;;14744:18;;:::i;14775:125::-;14840:9;;;14861:10;;;14858:36;;;14874:18;;:::i;14905:407::-;15107:2;15089:21;;;15146:2;15126:18;;;15119:30;15185:34;15180:2;15165:18;;15158:62;-1:-1:-1;;;15251:2:48;15236:18;;15229:41;15302:3;15287:19;;14905:407::o;16086:414::-;16288:2;16270:21;;;16327:2;16307:18;;;16300:30;16366:34;16361:2;16346:18;;16339:62;-1:-1:-1;;;16432:2:48;16417:18;;16410:48;16490:3;16475:19;;16086:414::o;16505:489::-;-1:-1:-1;;;;;16774:15:48;;;16756:34;;16826:15;;16821:2;16806:18;;16799:43;16873:2;16858:18;;16851:34;;;16921:3;16916:2;16901:18;;16894:31;;;16699:4;;16942:46;;16968:19;;16960:6;16942:46;:::i;:::-;16934:54;16505:489;-1:-1:-1;;;;;;16505:489:48:o;16999:249::-;17068:6;17121:2;17109:9;17100:7;17096:23;17092:32;17089:52;;;17137:1;17134;17127:12;17089:52;17169:9;17163:16;17188:30;17212:5;17188:30;:::i;17253:127::-;17314:10;17309:3;17305:20;17302:1;17295:31;17345:4;17342:1;17335:15;17369:4;17366:1;17359:15;17385:120;17425:1;17451;17441:35;;17456:18;;:::i;:::-;-1:-1:-1;17490:9:48;;17385:120::o;17510:112::-;17542:1;17568;17558:35;;17573:18;;:::i;:::-;-1:-1:-1;17607:9:48;;17510:112::o;17627:127::-;17688:10;17683:3;17679:20;17676:1;17669:31;17719:4;17716:1;17709:15;17743:4;17740:1;17733:15", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_learnToEarn\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"learnToEarn\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50611bab806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a4e8aaae11610071578063a4e8aaae1461023c578063b88d4fde1461024f578063c87b56dd14610262578063e985e9c514610275578063eac989f81461028857600080fd5b806370a0823114610205578063714cff561461021857806395d89b4114610221578063a22cb4651461022957600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab5780635f1e6f6d146101be5780636352211e146101d15780636a627842146101e457600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e610129366004611414565b610290565b60405190151581526020015b60405180910390f35b61014b6102bb565b60405161013a9190611481565b61016b610166366004611494565b61034d565b6040516001600160a01b03909116815260200161013a565b6101966101913660046114c9565b610374565b005b6101966101a63660046114f3565b61048e565b6101966101b93660046114f3565b6104bf565b6101966101cc3660046115db565b6104da565b61016b6101df366004611494565b61066f565b6101f76101f2366004611674565b6106cf565b60405190815260200161013a565b6101f7610213366004611674565b610832565b6101f760ca5481565b61014b6108b8565b61019661023736600461168f565b6108c7565b60c95461016b906001600160a01b031681565b61019661025d3660046116cb565b6108d6565b61014b610270366004611494565b61090e565b61012e61028336600461173b565b610a1e565b61014b610a4c565b60006001600160e01b0319821663357c172f60e01b14806102b557506102b582610ada565b92915050565b6060606580546102ca9061176e565b80601f01602080910402602001604051908101604052809291908181526020018280546102f69061176e565b80156103435780601f1061031857610100808354040283529160200191610343565b820191906000526020600020905b81548152906001019060200180831161032657829003601f168201915b5050505050905090565b600061035882610b2a565b506000908152606960205260409020546001600160a01b031690565b600061037f8261066f565b9050806001600160a01b0316836001600160a01b0316036103f15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061040d575061040d8133610a1e565b61047f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103e8565b6104898383610b8c565b505050565b6104983382610bfa565b6104b45760405162461bcd60e51b81526004016103e8906117a8565b610489838383610c58565b610489838383604051806020016040528060008152506108d6565b600054610100900460ff16158080156104fa5750600054600160ff909116105b806105145750303b158015610514575060005460ff166001145b6105775760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103e8565b6000805460ff19166001179055801561059a576000805461ff0019166101001790555b6001600160a01b0385166105f05760405162461bcd60e51b815260206004820181905260248201527f4c6561726e546f4561726e2061646472657373206973206e6f742076616c696460448201526064016103e8565b6105fa8484610df4565b60c980546001600160a01b0319166001600160a01b03871617905560cb6106218382611844565b508015610668576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000818152606760205260408120546001600160a01b0316806102b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103e8565b60c9546000906001600160a01b0316336001600160a01b0316146107355760405162461bcd60e51b815260206004820152601960248201527f43616c6c6572206973206e6f74206c6561726e546f4561726e0000000000000060448201526064016103e8565b60ca600081546107449061191a565b9091555060ca54610756908390610e25565b6107ec60ca5460cb80546107699061176e565b80601f01602080910402602001604051908101604052809291908181526020018280546107959061176e565b80156107e25780601f106107b7576101008083540402835291602001916107e2565b820191906000526020600020905b8154815290600101906020018083116107c557829003601f168201915b5050505050610e3f565b7fe7cd4ce7f2a465edc730269a1305e8a48bad821e8fb7e152ec413829c01a53c48260ca5460cb60405161082293929190611933565b60405180910390a1505060ca5490565b60006001600160a01b03821661089c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103e8565b506001600160a01b031660009081526068602052604090205490565b6060606680546102ca9061176e565b6108d2338383610ed2565b5050565b6108e03383610bfa565b6108fc5760405162461bcd60e51b81526004016103e8906117a8565b61090884848484610fa0565b50505050565b606061091982610b2a565b600082815260976020526040812080546109329061176e565b80601f016020809104026020016040519081016040528092919081815260200182805461095e9061176e565b80156109ab5780601f10610980576101008083540402835291602001916109ab565b820191906000526020600020905b81548152906001019060200180831161098e57829003601f168201915b5050505050905060006109c960408051602081019091526000815290565b905080516000036109db575092915050565b815115610a0d5780826040516020016109f59291906119d5565b60405160208183030381529060405292505050919050565b610a1684610fd3565b949350505050565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60cb8054610a599061176e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a859061176e565b8015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b505050505081565b60006001600160e01b031982166380ac58cd60e01b1480610b0b57506001600160e01b03198216635b5e139f60e01b145b806102b557506301ffc9a760e01b6001600160e01b03198316146102b5565b6000818152606760205260409020546001600160a01b0316610b895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103e8565b50565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610bc18261066f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610c068361066f565b9050806001600160a01b0316846001600160a01b03161480610c2d5750610c2d8185610a1e565b80610a165750836001600160a01b0316610c468461034d565b6001600160a01b031614949350505050565b826001600160a01b0316610c6b8261066f565b6001600160a01b031614610ccf5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103e8565b6001600160a01b038216610d315760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103e8565b610d3c600082610b8c565b6001600160a01b0383166000908152606860205260408120805460019290610d65908490611a04565b90915550506001600160a01b0382166000908152606860205260408120805460019290610d93908490611a17565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600054610100900460ff16610e1b5760405162461bcd60e51b81526004016103e890611a2a565b6108d28282611047565b6108d2828260405180602001604052806000815250611087565b6000828152606760205260409020546001600160a01b0316610eba5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016103e8565b60008281526097602052604090206104898282611844565b816001600160a01b0316836001600160a01b031603610f335760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103e8565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610fab848484610c58565b610fb7848484846110ba565b6109085760405162461bcd60e51b81526004016103e890611a75565b6060610fde82610b2a565b6000610ff560408051602081019091526000815290565b905060008151116110155760405180602001604052806000815250611040565b8061101f846111bb565b6040516020016110309291906119d5565b6040516020818303038152906040525b9392505050565b600054610100900460ff1661106e5760405162461bcd60e51b81526004016103e890611a2a565b606561107a8382611844565b5060666104898282611844565b61109183836112bc565b61109e60008484846110ba565b6104895760405162461bcd60e51b81526004016103e890611a75565b60006001600160a01b0384163b156111b057604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906110fe903390899088908890600401611ac7565b6020604051808303816000875af1925050508015611139575060408051601f3d908101601f1916820190925261113691810190611b04565b60015b611196573d808015611167576040519150601f19603f3d011682016040523d82523d6000602084013e61116c565b606091505b50805160000361118e5760405162461bcd60e51b81526004016103e890611a75565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610a16565b506001949350505050565b6060816000036111e25750506040805180820190915260018152600360fc1b602082015290565b8160005b811561120c57806111f68161191a565b91506112059050600a83611b37565b91506111e6565b60008167ffffffffffffffff8111156112275761122761152f565b6040519080825280601f01601f191660200182016040528015611251576020820181803683370190505b5090505b8415610a1657611266600183611a04565b9150611273600a86611b4b565b61127e906030611a17565b60f81b81838151811061129357611293611b5f565b60200101906001600160f81b031916908160001a9053506112b5600a86611b37565b9450611255565b6001600160a01b0382166113125760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103e8565b6000818152606760205260409020546001600160a01b0316156113775760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103e8565b6001600160a01b03821660009081526068602052604081208054600192906113a0908490611a17565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114610b8957600080fd5b60006020828403121561142657600080fd5b8135611040816113fe565b60005b8381101561144c578181015183820152602001611434565b50506000910152565b6000815180845261146d816020860160208601611431565b601f01601f19169290920160200192915050565b6020815260006110406020830184611455565b6000602082840312156114a657600080fd5b5035919050565b80356001600160a01b03811681146114c457600080fd5b919050565b600080604083850312156114dc57600080fd5b6114e5836114ad565b946020939093013593505050565b60008060006060848603121561150857600080fd5b611511846114ad565b925061151f602085016114ad565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156115605761156061152f565b604051601f8501601f19908116603f011681019082821181831017156115885761158861152f565b816040528093508581528686860111156115a157600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126115cc57600080fd5b61104083833560208501611545565b600080600080608085870312156115f157600080fd5b6115fa856114ad565b9350602085013567ffffffffffffffff8082111561161757600080fd5b611623888389016115bb565b9450604087013591508082111561163957600080fd5b611645888389016115bb565b9350606087013591508082111561165b57600080fd5b50611668878288016115bb565b91505092959194509250565b60006020828403121561168657600080fd5b611040826114ad565b600080604083850312156116a257600080fd5b6116ab836114ad565b9150602083013580151581146116c057600080fd5b809150509250929050565b600080600080608085870312156116e157600080fd5b6116ea856114ad565b93506116f8602086016114ad565b925060408501359150606085013567ffffffffffffffff81111561171b57600080fd5b8501601f8101871361172c57600080fd5b61166887823560208401611545565b6000806040838503121561174e57600080fd5b611757836114ad565b9150611765602084016114ad565b90509250929050565b600181811c9082168061178257607f821691505b6020821081036117a257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f82111561048957600081815260208120601f850160051c8101602086101561181d5750805b601f850160051c820191505b8181101561183c57828155600101611829565b505050505050565b815167ffffffffffffffff81111561185e5761185e61152f565b6118728161186c845461176e565b846117f6565b602080601f8311600181146118a7576000841561188f5750858301515b600019600386901b1c1916600185901b17855561183c565b600085815260208120601f198616915b828110156118d6578886015182559484019460019091019084016118b7565b50858210156118f45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b60006001820161192c5761192c611904565b5060010190565b60018060a01b0384168152600060208481840152606060408401526000845461195b8161176e565b806060870152608060018084166000811461197d5760018114611997576119c5565b60ff1985168984015283151560051b8901830195506119c5565b896000528660002060005b858110156119bd5781548b82018601529083019088016119a2565b8a0184019650505b50939a9950505050505050505050565b600083516119e7818460208801611431565b8351908301906119fb818360208801611431565b01949350505050565b818103818111156102b5576102b5611904565b808201808211156102b5576102b5611904565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611afa90830184611455565b9695505050505050565b600060208284031215611b1657600080fd5b8151611040816113fe565b634e487b7160e01b600052601260045260246000fd5b600082611b4657611b46611b21565b500490565b600082611b5a57611b5a611b21565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220d16bb6aff2f2b793d1af32b65465db5bd9e4a26159d00e1f31a074311ca5fcd064736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a4e8aaae11610071578063a4e8aaae1461023c578063b88d4fde1461024f578063c87b56dd14610262578063e985e9c514610275578063eac989f81461028857600080fd5b806370a0823114610205578063714cff561461021857806395d89b4114610221578063a22cb4651461022957600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab5780635f1e6f6d146101be5780636352211e146101d15780636a627842146101e457600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e610129366004611414565b610290565b60405190151581526020015b60405180910390f35b61014b6102bb565b60405161013a9190611481565b61016b610166366004611494565b61034d565b6040516001600160a01b03909116815260200161013a565b6101966101913660046114c9565b610374565b005b6101966101a63660046114f3565b61048e565b6101966101b93660046114f3565b6104bf565b6101966101cc3660046115db565b6104da565b61016b6101df366004611494565b61066f565b6101f76101f2366004611674565b6106cf565b60405190815260200161013a565b6101f7610213366004611674565b610832565b6101f760ca5481565b61014b6108b8565b61019661023736600461168f565b6108c7565b60c95461016b906001600160a01b031681565b61019661025d3660046116cb565b6108d6565b61014b610270366004611494565b61090e565b61012e61028336600461173b565b610a1e565b61014b610a4c565b60006001600160e01b0319821663357c172f60e01b14806102b557506102b582610ada565b92915050565b6060606580546102ca9061176e565b80601f01602080910402602001604051908101604052809291908181526020018280546102f69061176e565b80156103435780601f1061031857610100808354040283529160200191610343565b820191906000526020600020905b81548152906001019060200180831161032657829003601f168201915b5050505050905090565b600061035882610b2a565b506000908152606960205260409020546001600160a01b031690565b600061037f8261066f565b9050806001600160a01b0316836001600160a01b0316036103f15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061040d575061040d8133610a1e565b61047f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103e8565b6104898383610b8c565b505050565b6104983382610bfa565b6104b45760405162461bcd60e51b81526004016103e8906117a8565b610489838383610c58565b610489838383604051806020016040528060008152506108d6565b600054610100900460ff16158080156104fa5750600054600160ff909116105b806105145750303b158015610514575060005460ff166001145b6105775760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103e8565b6000805460ff19166001179055801561059a576000805461ff0019166101001790555b6001600160a01b0385166105f05760405162461bcd60e51b815260206004820181905260248201527f4c6561726e546f4561726e2061646472657373206973206e6f742076616c696460448201526064016103e8565b6105fa8484610df4565b60c980546001600160a01b0319166001600160a01b03871617905560cb6106218382611844565b508015610668576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000818152606760205260408120546001600160a01b0316806102b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103e8565b60c9546000906001600160a01b0316336001600160a01b0316146107355760405162461bcd60e51b815260206004820152601960248201527f43616c6c6572206973206e6f74206c6561726e546f4561726e0000000000000060448201526064016103e8565b60ca600081546107449061191a565b9091555060ca54610756908390610e25565b6107ec60ca5460cb80546107699061176e565b80601f01602080910402602001604051908101604052809291908181526020018280546107959061176e565b80156107e25780601f106107b7576101008083540402835291602001916107e2565b820191906000526020600020905b8154815290600101906020018083116107c557829003601f168201915b5050505050610e3f565b7fe7cd4ce7f2a465edc730269a1305e8a48bad821e8fb7e152ec413829c01a53c48260ca5460cb60405161082293929190611933565b60405180910390a1505060ca5490565b60006001600160a01b03821661089c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103e8565b506001600160a01b031660009081526068602052604090205490565b6060606680546102ca9061176e565b6108d2338383610ed2565b5050565b6108e03383610bfa565b6108fc5760405162461bcd60e51b81526004016103e8906117a8565b61090884848484610fa0565b50505050565b606061091982610b2a565b600082815260976020526040812080546109329061176e565b80601f016020809104026020016040519081016040528092919081815260200182805461095e9061176e565b80156109ab5780601f10610980576101008083540402835291602001916109ab565b820191906000526020600020905b81548152906001019060200180831161098e57829003601f168201915b5050505050905060006109c960408051602081019091526000815290565b905080516000036109db575092915050565b815115610a0d5780826040516020016109f59291906119d5565b60405160208183030381529060405292505050919050565b610a1684610fd3565b949350505050565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60cb8054610a599061176e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a859061176e565b8015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b505050505081565b60006001600160e01b031982166380ac58cd60e01b1480610b0b57506001600160e01b03198216635b5e139f60e01b145b806102b557506301ffc9a760e01b6001600160e01b03198316146102b5565b6000818152606760205260409020546001600160a01b0316610b895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103e8565b50565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610bc18261066f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610c068361066f565b9050806001600160a01b0316846001600160a01b03161480610c2d5750610c2d8185610a1e565b80610a165750836001600160a01b0316610c468461034d565b6001600160a01b031614949350505050565b826001600160a01b0316610c6b8261066f565b6001600160a01b031614610ccf5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103e8565b6001600160a01b038216610d315760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103e8565b610d3c600082610b8c565b6001600160a01b0383166000908152606860205260408120805460019290610d65908490611a04565b90915550506001600160a01b0382166000908152606860205260408120805460019290610d93908490611a17565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600054610100900460ff16610e1b5760405162461bcd60e51b81526004016103e890611a2a565b6108d28282611047565b6108d2828260405180602001604052806000815250611087565b6000828152606760205260409020546001600160a01b0316610eba5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016103e8565b60008281526097602052604090206104898282611844565b816001600160a01b0316836001600160a01b031603610f335760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103e8565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610fab848484610c58565b610fb7848484846110ba565b6109085760405162461bcd60e51b81526004016103e890611a75565b6060610fde82610b2a565b6000610ff560408051602081019091526000815290565b905060008151116110155760405180602001604052806000815250611040565b8061101f846111bb565b6040516020016110309291906119d5565b6040516020818303038152906040525b9392505050565b600054610100900460ff1661106e5760405162461bcd60e51b81526004016103e890611a2a565b606561107a8382611844565b5060666104898282611844565b61109183836112bc565b61109e60008484846110ba565b6104895760405162461bcd60e51b81526004016103e890611a75565b60006001600160a01b0384163b156111b057604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906110fe903390899088908890600401611ac7565b6020604051808303816000875af1925050508015611139575060408051601f3d908101601f1916820190925261113691810190611b04565b60015b611196573d808015611167576040519150601f19603f3d011682016040523d82523d6000602084013e61116c565b606091505b50805160000361118e5760405162461bcd60e51b81526004016103e890611a75565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610a16565b506001949350505050565b6060816000036111e25750506040805180820190915260018152600360fc1b602082015290565b8160005b811561120c57806111f68161191a565b91506112059050600a83611b37565b91506111e6565b60008167ffffffffffffffff8111156112275761122761152f565b6040519080825280601f01601f191660200182016040528015611251576020820181803683370190505b5090505b8415610a1657611266600183611a04565b9150611273600a86611b4b565b61127e906030611a17565b60f81b81838151811061129357611293611b5f565b60200101906001600160f81b031916908160001a9053506112b5600a86611b37565b9450611255565b6001600160a01b0382166113125760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103e8565b6000818152606760205260409020546001600160a01b0316156113775760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103e8565b6001600160a01b03821660009081526068602052604081208054600192906113a0908490611a17565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114610b8957600080fd5b60006020828403121561142657600080fd5b8135611040816113fe565b60005b8381101561144c578181015183820152602001611434565b50506000910152565b6000815180845261146d816020860160208601611431565b601f01601f19169290920160200192915050565b6020815260006110406020830184611455565b6000602082840312156114a657600080fd5b5035919050565b80356001600160a01b03811681146114c457600080fd5b919050565b600080604083850312156114dc57600080fd5b6114e5836114ad565b946020939093013593505050565b60008060006060848603121561150857600080fd5b611511846114ad565b925061151f602085016114ad565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156115605761156061152f565b604051601f8501601f19908116603f011681019082821181831017156115885761158861152f565b816040528093508581528686860111156115a157600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126115cc57600080fd5b61104083833560208501611545565b600080600080608085870312156115f157600080fd5b6115fa856114ad565b9350602085013567ffffffffffffffff8082111561161757600080fd5b611623888389016115bb565b9450604087013591508082111561163957600080fd5b611645888389016115bb565b9350606087013591508082111561165b57600080fd5b50611668878288016115bb565b91505092959194509250565b60006020828403121561168657600080fd5b611040826114ad565b600080604083850312156116a257600080fd5b6116ab836114ad565b9150602083013580151581146116c057600080fd5b809150509250929050565b600080600080608085870312156116e157600080fd5b6116ea856114ad565b93506116f8602086016114ad565b925060408501359150606085013567ffffffffffffffff81111561171b57600080fd5b8501601f8101871361172c57600080fd5b61166887823560208401611545565b6000806040838503121561174e57600080fd5b611757836114ad565b9150611765602084016114ad565b90509250929050565b600181811c9082168061178257607f821691505b6020821081036117a257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f82111561048957600081815260208120601f850160051c8101602086101561181d5750805b601f850160051c820191505b8181101561183c57828155600101611829565b505050505050565b815167ffffffffffffffff81111561185e5761185e61152f565b6118728161186c845461176e565b846117f6565b602080601f8311600181146118a7576000841561188f5750858301515b600019600386901b1c1916600185901b17855561183c565b600085815260208120601f198616915b828110156118d6578886015182559484019460019091019084016118b7565b50858210156118f45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b60006001820161192c5761192c611904565b5060010190565b60018060a01b0384168152600060208481840152606060408401526000845461195b8161176e565b806060870152608060018084166000811461197d5760018114611997576119c5565b60ff1985168984015283151560051b8901830195506119c5565b896000528660002060005b858110156119bd5781548b82018601529083019088016119a2565b8a0184019650505b50939a9950505050505050505050565b600083516119e7818460208801611431565b8351908301906119fb818360208801611431565b01949350505050565b818103818111156102b5576102b5611904565b808201808211156102b5576102b5611904565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611afa90830184611455565b9695505050505050565b600060208284031215611b1657600080fd5b8151611040816113fe565b634e487b7160e01b600052601260045260246000fd5b600082611b4657611b46611b21565b500490565b600082611b5a57611b5a611b21565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220d16bb6aff2f2b793d1af32b65465db5bd9e4a26159d00e1f31a074311ca5fcd064736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ReBakedDAO.sol:ReBakedDAO": {"srcmap": "860:19735:37:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "860:19735:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11612:488;;;;;;:::i;:::-;;:::i;:::-;;7662:1153;;;;;;:::i;:::-;;:::i;10697:733::-;;;;;;:::i;:::-;;:::i;15363:164::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;3476:13:48;;3458:32;;3546:4;3534:17;;;3528:24;3506:20;;;3499:54;3609:4;3597:17;;;3591:24;3569:20;;;3562:54;3672:4;3660:17;;;3654:24;3632:20;;;3625:54;3735:4;3723:17;;;3717:24;3695:20;;;3688:54;3798:4;3786:17;;;3780:24;3758:20;;;3751:54;3861:4;3849:17;;;3843:24;3821:20;;;3814:54;3924:4;3912:17;;;3906:24;3884:20;;;3877:54;3950:6;3998:15;;;3992:22;3972:18;;;3965:50;4034:6;4082:15;;;4076:22;4056:18;;;4049:50;4118:6;4166:15;;;4160:22;4140:18;;;4133:50;4202:6;4250:15;;;4244:22;4224:18;;;4217:50;4286:6;4334:15;;;4328:22;4308:18;;;4301:50;4370:6;4418:15;;;4412:22;4392:18;;;4385:50;4454:6;4502:15;;;4496:22;4476:18;;;4469:50;4538:6;4579:15;;;4573:22;3235:13;3228:21;4634:18;;;3216:34;;;;3445:3;3430:19;;3261:1398;15363:164:37;;;;;;;;15724:245;;;;;;:::i;:::-;;:::i;:::-;;;;;;5143:4:48;5185:3;5174:9;5170:19;5162:27;;5222:6;5216:13;5205:9;5198:32;5286:4;5278:6;5274:17;5268:24;5261:4;5250:9;5246:20;5239:54;5349:4;5341:6;5337:17;5331:24;5324:4;5313:9;5309:20;5302:54;5412:4;5404:6;5400:17;5394:24;5387:4;5376:9;5372:20;5365:54;5475:4;5467:6;5463:17;5457:24;5450:4;5439:9;5435:20;5428:54;5538:4;5530:6;5526:17;5520:24;5513:4;5502:9;5498:20;5491:54;5615:4;5607:6;5603:17;5597:24;5590:32;5583:40;5576:4;5565:9;5561:20;5554:70;4991:639;;;;;15090:130:37;;;;;;:::i;:::-;;:::i;:::-;;;;;;6077:13:48;;-1:-1:-1;;;;;6073:22:48;;;6055:41;;6156:4;6144:17;;;6138:24;6134:33;;;6112:20;;;6105:63;6224:4;6212:17;;;6206:24;6184:20;;;6177:54;6287:4;6275:17;;;6269:24;6247:20;;;6240:54;6350:4;6338:17;;;6332:24;6310:20;;;6303:54;6035:3;6401:17;;;6395:24;6373:20;;;6366:54;6476:4;6464:17;;;6458:24;6436:20;;;6429:54;6539:4;6527:17;;;6521:24;6499:20;;;6492:54;6565:6;6613:15;;;6607:22;6587:18;;;6580:50;;;;6004:3;5989:19;;5820:816;5886:1462:37;;;;;;:::i;:::-;;:::i;13350:533::-;;;;;;:::i;:::-;;:::i;16166:328::-;;;;;;:::i;:::-;16312:7;16376:28;;;:16;:28;;;;;;;;:40;;;;;;;;;-1:-1:-1;;;;;16376:55:37;;;;;;;;;16450:16;;16468:18;;;;;16450:16;;16166:328;;;;;8811:25:48;;;8867:2;8852:18;;8845:34;;;;8784:18;16166:328:37;8637:248:48;16679:225:37;;;;;;:::i;:::-;;:::i;:::-;;;;9106:13:48;;9088:32;;9176:4;9164:17;;;9158:24;9136:20;;;9129:54;9241:17;;;9235:24;9228:32;9221:40;9199:20;;;9192:70;9076:2;9061:18;16679:225:37;8890:378:48;1293:23:37;;;;;-1:-1:-1;;;;;1293:23:37;;;;;;-1:-1:-1;;;;;9437:32:48;;;9419:51;;9407:2;9392:18;1293:23:37;9273:203:48;2071:101:0;;;:::i;13889:1059:37:-;;;;;;:::i;:::-;;:::i;17085:425::-;;;;;;:::i;:::-;;:::i;:::-;;;10364:25:48;;;10352:2;10337:18;17085:425:37;10218:177:48;2930:263:37;;;;;;:::i;:::-;;:::i;3915:225::-;;;;;;:::i;:::-;;:::i;1441:85:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;1441:85;;4499:1044:37;;;;;;:::i;:::-;;:::i;12904:222::-;;;;;;:::i;:::-;;:::i;2525:227::-;;;;;;:::i;:::-;;:::i;9881:464::-;;;;;;:::i;:::-;;:::i;1217:43::-;;1257:3;1217:43;;3434:354;;;;;;:::i;:::-;;:::i;9082:510::-;;;;;;:::i;:::-;;:::i;2321:198:0:-;;;;;;:::i;:::-;;:::i;11612:488:37:-;11700:24;;;;:12;:24;;;;;;;;:36;;;;;;;;929:10:12;11700:50:37;;;;;;;;;;11699:51;11691:94;;;;-1:-1:-1;;;11691:94:37;;12144:2:48;11691:94:37;;;12126:21:48;12183:2;12163:18;;;12156:30;12222:32;12202:18;;;12195:60;12272:18;;11691:94:37;;;;;;;;;11796:33;11832:28;;;:16;:28;;;;;;;;:40;;;;;;;;929:10:12;11832:54:37;;;;;;;11896:34;11832:54;11896:32;:34::i;:::-;12003:16;;11996:5;11940:23;;;:11;:23;;;;;;;;:35;;;;;;;;:80;;:35;;11996:5;11940:55;:80::i;:::-;12036:57;;929:10:12;9419:51:48;;12068:10:37;;12056;;12036:57;;9407:2:48;9392:18;12036:57:37;;;;;;;;11681:419;11612:488;;:::o;7662:1153::-;2295:23;;;;:11;:23;;;;;:33;7875:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;7897:23:::1;7923::::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;8001:26:::1;::::0;::::1;::::0;7976:21;;:51:::1;7968:92;;;::::0;-1:-1:-1;;;7968:92:37;;12863:2:48;7968:92:37::1;::::0;::::1;12845:21:48::0;12902:2;12882:18;;;12875:30;12941;12921:18;;;12914:58;12989:18;;7968:92:37::1;12661:352:48::0;7968:92:37::1;8099:7;:22;;;8078:10;:17;:43;8070:80;;;::::0;-1:-1:-1;;;8070:80:37;;13220:2:48;8070:80:37::1;::::0;::::1;13202:21:48::0;13259:2;13239:18;;;13232:30;13298:26;13278:18;;;13271:54;13342:18;;8070:80:37::1;13018:348:48::0;8070:80:37::1;8161:24;:7;:22;:24::i;:::-;8200:12;8196:280;;;8233:9;8228:121;8252:14;:21;8248:1;:25;8228:121;;;8280:69;8304:10;8316;8328:14;8343:1;8328:17;;;;;;;;:::i;:::-;;;;;;;8347:1;8280:23;:69::i;:::-;8275:3:::0;::::1;::::0;::::1;:::i;:::-;;;;8228:121;;;;8368:9;8363:102;8387:10;:17;8383:1;:21;8363:102;;;8411:54;8427:10;8439;8451;8462:1;8451:13;;;;;;;;:::i;:::-;;;;;;;8411:15;:54::i;:::-;8406:3:::0;::::1;::::0;::::1;:::i;:::-;;;;8363:102;;;;8196:280;8556:13;::::0;::::1;::::0;8534:18:::1;::::0;::::1;::::0;8517:14;;8486:27:::1;::::0;8556:13;8517:35:::1;::::0;::::1;:::i;:::-;8516:53;;;;:::i;:::-;8486:83;;8629:7;:27;;;8603:7;:23;;;:53;;;;:::i;:::-;8579:78;::::0;;::::1;:::i;:::-;8667:23;::::0;;;:11:::1;:23;::::0;;;;8579:78;;-1:-1:-1;8667:65:37::1;::::0;8579:78;8667:44:::1;:65::i;:::-;8788:19;8776:10;8764;8748:60;;;;;;;;;;7887:928;;7662:1153:::0;;;;;;:::o;10697:733::-;2295:23;;;;:11;:23;;;;;:33;10869:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;10900:24:::1;::::0;;;:12:::1;:24;::::0;;;;;;;:36;;;;;;;;-1:-1:-1;;;;;10900:51:37;::::1;::::0;;;;;;;;::::1;;10899:52;10891:95;;;::::0;-1:-1:-1;;;10891:95:37;;12144:2:48;10891:95:37::1;::::0;::::1;12126:21:48::0;12183:2;12163:18;;;12156:30;12222:32;12202:18;;;12195:60;12272:18;;10891:95:37::1;11942:354:48::0;10891:95:37::1;10997:33;11033:28:::0;;;:16:::1;:28;::::0;;;;;;;:40;;;;;;;;-1:-1:-1;;;;;11033:55:37;::::1;::::0;;;;;;;11098:109;::::1;;;11131:65;11155:10;11167;11179:13;11194:1;11131:23;:65::i;:::-;11217:34;:12;:32;:34::i;:::-;11332:16:::0;;::::1;11261:23:::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;:88:::1;::::0;11317:13;;11261:55:::1;:88::i;:::-;11365:58;::::0;-1:-1:-1;;;;;9437:32:48;;9419:51;;11397:10:37;;11385;;11365:58:::1;::::0;9407:2:48;9392:18;11365:58:37::1;;;;;;;;10881:549;10697:733:::0;;;;;:::o;15363:164::-;15450:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15450:14:37;-1:-1:-1;15484:23:37;;;;:11;:23;;;;;;;;:35;;;;;;;;;15476:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15363:164;;;;;:::o;15724:245::-;15869:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15869:19:37;-1:-1:-1;15907:28:37;;;;:16;:28;;;;;;;;:40;;;;;;;;-1:-1:-1;;;;;15907:55:37;;;;;;;;;;15900:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15724:245;;;;;;:::o;15090:130::-;15157:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15157:14:37;-1:-1:-1;15190:23:37;;;;:11;:23;;;;;;;;;15183:30;;;;;;;;;-1:-1:-1;;;;;15183:30:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15090:130::o;5886:1462::-;2295:23;;;;:11;:23;;;;;:33;6106:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;6128:23:::1;6154::::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;6232:26:::1;::::0;::::1;::::0;6207:21;;:51:::1;6199:90;;;::::0;-1:-1:-1;;;6199:90:37;;14240:2:48;6199:90:37::1;::::0;::::1;14222:21:48::0;14279:2;14259:18;;;14252:30;14318:28;14298:18;;;14291:56;14364:18;;6199:90:37::1;14038:350:48::0;6199:90:37::1;6332:7;:14;6307;:21;:39;6299:75;;;::::0;-1:-1:-1;;;6299:75:37;;14595:2:48;6299:75:37::1;::::0;::::1;14577:21:48::0;14634:2;14614:18;;;14607:30;14673:25;14653:18;;;14646:53;14716:18;;6299:75:37::1;14393:347:48::0;6299:75:37::1;6413:7;:22;;;6392:10;:17;:43;6384:78;;;::::0;-1:-1:-1;;;6384:78:37;;14947:2:48;6384:78:37::1;::::0;::::1;14929:21:48::0;14986:2;14966:18;;;14959:30;-1:-1:-1;;;15005:18:48;;;14998:52;15067:18;;6384:78:37::1;14745:346:48::0;6384:78:37::1;6473:19;6495:24;:7;:22;:24::i;:::-;6529:23;::::0;;;:11:::1;:23;::::0;;;;6473:46;;-1:-1:-1;6529:51:37::1;::::0;6473:46;6529:38:::1;:51::i;:::-;6611:1;6595:7;:13;;;:17;:46;;;;;6640:1;6616:14;:21;:25;6595:46;6591:381;;;6657:25;6705:9:::0;6700:173:::1;6724:7;:14;6720:1;:18;6700:173;;;6784:1;6771:7;6779:1;6771:10;;;;;;;;:::i;:::-;;;;;;;:14;6763:46;;;::::0;-1:-1:-1;;;6763:46:37;;15298:2:48;6763:46:37::1;::::0;::::1;15280:21:48::0;15337:2;15317:18;;;15310:30;-1:-1:-1;;;15356:18:48;;;15349:49;15415:18;;6763:46:37::1;15096:343:48::0;6763:46:37::1;6848:7;6856:1;6848:10;;;;;;;;:::i;:::-;;;;;;;6827:31;;;;;:::i;:::-;::::0;-1:-1:-1;6740:3:37;::::1;::::0;::::1;:::i;:::-;;;;6700:173;;;;1257:3;6894:17;:34;6886:75;;;::::0;-1:-1:-1;;;6886:75:37;;15646:2:48;6886:75:37::1;::::0;::::1;15628:21:48::0;15685:2;15665:18;;;15658:30;15724;15704:18;;;15697:58;15772:18;;6886:75:37::1;15444:352:48::0;6886:75:37::1;6643:329;6591:381;6987:9;6982:155;7006:14;:21;7002:1;:25;6982:155;;;7048:78;7072:10;7084;7096:14;7111:1;7096:17;;;;;;;;:::i;:::-;;;;;;;7115:7;7123:1;7115:10;;;;;;;;:::i;:::-;;;;;;;7048:23;:78::i;:::-;7029:3:::0;::::1;::::0;::::1;:::i;:::-;;;;6982:155;;;;7152:9;7147:127;7171:10;:17;7167:1;:21;7147:127;;;7209:54;7225:10;7237;7249;7260:1;7249:13;;;;;;;;:::i;7209:54::-;7190:3:::0;::::1;::::0;::::1;:::i;:::-;;;;7147:127;;;;7329:11;7317:10;7305;7289:52;;;;;;;;;;6118:1230;;5886:1462:::0;;;;;;:::o;13350:533::-;2295:23;;;;:11;:23;;;;;:33;13497:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;13547:1:::1;13527:10;:17;:21;13519:56;;;::::0;-1:-1:-1;;;13519:56:37;;16003:2:48;13519:56:37::1;::::0;::::1;15985:21:48::0;16042:2;16022:18;;;16015:30;-1:-1:-1;;;16061:18:48;;;16054:52;16123:18;;13519:56:37::1;15801:346:48::0;13519:56:37::1;13591:9;13586:142;13610:10;:17;13606:1;:21;13586:142;;;13648:24;::::0;;;:12:::1;:24;::::0;;;;;;;:36;;;;;;;;13685:13;;13648:69:::1;::::0;:24;13685:10;;13696:1;;13685:13;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;13648:51:37::1;-1:-1:-1::0;;;;;13648:51:37::1;;;;;;;;;;;;:67;:69::i;:::-;13629:3:::0;::::1;::::0;::::1;:::i;:::-;;;;13586:142;;;-1:-1:-1::0;13790:17:37;;13737:23:::1;::::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;:71:::1;::::0;:52:::1;:71::i;:::-;13853:10;13841;13824:52;13865:10;13824:52;;;;;;:::i;:::-;;;;;;;;13350:533:::0;;;;:::o;16679:225::-;16816:15;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;16816:15:37;-1:-1:-1;16850:24:37;;;;:12;:24;;;;;;;;:36;;;;;;;;;-1:-1:-1;;;;;16850:47:37;;;;;;;;;;;;;16843:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16679:225::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;13889:1059:37:-;2295:23;;;;:11;:23;;;;;:33;14078:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;14130:1:::1;14108:12;:19;:23;:51;;;;14158:1;14135:13;:20;:24;14108:51;14100:87;;;::::0;-1:-1:-1;;;14100:87:37;;17017:2:48;14100:87:37::1;::::0;::::1;16999:21:48::0;17056:2;17036:18;;;17029:30;17095:25;17075:18;;;17068:53;17138:18;;14100:87:37::1;16815:347:48::0;14100:87:37::1;14202:19:::0;;:23;14198:360:::1;;14246:9;14241:151;14265:12;:19;14261:1;:23;14241:151;;;14309:24;::::0;;;:12:::1;:24;::::0;;;;;;;:36;;;;;;;;14346:15;;14309:68:::1;::::0;:24;14346:12;;14359:1;;14346:15;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;14309:53:37::1;-1:-1:-1::0;;;;;14309:53:37::1;;;;;;;;;;;;:66;:68::i;:::-;14286:3:::0;::::1;::::0;::::1;:::i;:::-;;;;14241:151;;;-1:-1:-1::0;14455:19:37;;14405:23:::1;::::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;:70:::1;::::0;:49:::1;:70::i;:::-;14522:10;14510;14495:52;14534:12;14495:52;;;;;;:::i;:::-;;;;;;;;14198:360;14572:20:::0;;:24;14568:374:::1;;14617:9;14612:156;14636:13;:20;14632:1;:24;14612:156;;;14681:24;::::0;;;:12:::1;:24;::::0;;;;;;;:36;;;;;;;;14718:16;;14681:72:::1;::::0;:24;14718:13;;14732:1;;14718:16;::::1;;;;;:::i;14681:72::-;14658:3:::0;::::1;::::0;::::1;:::i;:::-;;;;14612:156;;;-1:-1:-1::0;14835:20:37;;14782:23:::1;::::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;:74:::1;::::0;:52:::1;:74::i;:::-;14905:10;14893;14876:55;14917:13;14876:55;;;;;;:::i;:::-;;;;;;;;14568:374;13889:1059:::0;;;;;:::o;17085:425::-;17219:7;17266:24;;;:12;:24;;;;;;;;:36;;;;;;;;-1:-1:-1;;;;;17266:47:37;;;;;;;;;17327:17;;;;:21;;;:50;;-1:-1:-1;17352:20:37;;:25;17327:50;:72;;;-1:-1:-1;17381:18:37;;;;;;17327:72;17323:111;;;17422:1;17415:8;;;;;17323:111;17450:23;;;;:11;:23;;;;;;;;:35;;;;;;;;:53;;:51;:53::i;:::-;17443:60;17085:425;-1:-1:-1;;;;;17085:425:37:o;2930:263::-;1334:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;3010:23:37;::::1;3002:60;;;::::0;-1:-1:-1;;;3002:60:37;;17369:2:48;3002:60:37::1;::::0;::::1;17351:21:48::0;17408:2;17388:18;;;17381:30;-1:-1:-1;;;17427:18:48;;;17420:54;17491:18;;3002:60:37::1;17167:348:48::0;3002:60:37::1;3094:8;::::0;;-1:-1:-1;;;;;3112:20:37;;::::1;-1:-1:-1::0;;;;;;3112:20:37;::::1;::::0;::::1;::::0;;;3148:38:::1;::::0;;3094:8;;;::::1;17732:34:48::0;;;17797:2;17782:18;;17775:43;;;;3148:38:37::1;::::0;17667:18:48;3148:38:37::1;;;;;;;;2992:201;2930:263:::0;:::o;3915:225::-;2295:23;;;;:11;:23;;;;;:33;3981:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;1815:1:2::1;2569:7;;:19:::0;2561:63:::1;;;;-1:-1:-1::0;;;2561:63:2::1;;;;;;;:::i;:::-;1815:1;2699:7;:18:::0;4016:19:37::2;4038:23:::0;;;:11:::2;:23;::::0;;;;:40:::2;::::0;:38:::2;:40::i;:::-;4016:62;;4109:10;4093:40;4121:11;4093:40;;;;10364:25:48::0;;10352:2;10337:18;;10218:177;4093:40:37::2;;;;;;;;-1:-1:-1::0;;1772:1:2::1;2872:7;:22:::0;-1:-1:-1;3915:225:37:o;4499:1044::-;2295:23;;;;:11;:23;;;;;:33;4735:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;4755:7:::1;2097:1;2087:7;:11;2079:35;;;;-1:-1:-1::0;;;2079:35:37::1;;;;;;;:::i;:::-;1815:1:2::2;2569:7;;:19:::0;2561:63:::2;;;;-1:-1:-1::0;;;2561:63:2::2;;;;;;;:::i;:::-;1815:1;2699:7;:18:::0;4787:23:37::3;4813::::0;;;:11:::3;:23;::::0;;;;;4881:15;4862:16:::3;4872:6:::0;4862:7;:16:::3;:::i;:::-;:34;;;;:::i;:::-;4846:50:::0;-1:-1:-1;4906:37:37::3;:7:::0;4846:50;4906:30:::3;:37::i;:::-;4953:18;4974:33;4993:10;5005:1;4974:18;:33::i;:::-;5017:23;5043::::0;;;:11:::3;:23;::::0;;;;;;;:35;;;;;;;;4953:54;;-1:-1:-1;5088:77:37::3;5043:35:::0;5111:7;5120:15;5137:6;5145:19;5088:22:::3;:77::i;:::-;5175:92;929:10:12::0;5239:8:37::3;::::0;-1:-1:-1;;;;;5239:8:37::3;5263:3;5250:9;:5:::0;5258:1:::3;5250:9;:::i;:::-;5249:17;;;;:::i;:::-;5193:13;::::0;::::3;::::0;-1:-1:-1;;;;;5193:13:37::3;::::0;5175:92;;:49:::3;:92::i;:::-;5282:17:::0;;:21;5278:171:::3;;5345:1;5327:15;:19;5319:56;;;::::0;-1:-1:-1;;;5319:56:37;;19126:2:48;5319:56:37::3;::::0;::::3;19108:21:48::0;19165:2;19145:18;;;19138:30;19204:26;19184:18;;;19177:54;19248:18;;5319:56:37::3;18924:348:48::0;5319:56:37::3;5389:49;5403:10;5415;5427;5389:13;:49::i;:::-;5464:72;::::0;;19479:25:48;;;19535:2;19520:18;;19513:34;;;19563:18;;;19556:34;;;5491:10:37;;5479;;5464:72:::3;::::0;19467:2:48;19452:18;5464:72:37::3;;;;;;;-1:-1:-1::0;;1772:1:2::2;2872:7;:22:::0;-1:-1:-1;;;;;;;;;;4499:1044:37:o;12904:222::-;2295:23;;;;:11;:23;;;;;:33;13048:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;13070:49:::1;13084:10;13096;13108;13070:13;:49::i;:::-;12904:222:::0;;;;:::o;2525:227::-;3111:19:1;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:1;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:1;1476:19:11;:23;;;3219:66:1;;-1:-1:-1;3268:12:1;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:1;;19803:2:48;3157:201:1;;;19785:21:48;19842:2;19822:18;;;19815:30;19881:34;19861:18;;;19854:62;-1:-1:-1;;;19932:18:48;;;19925:44;19986:19;;3157:201:1;19601:410:48;3157:201:1;3368:12;:16;;-1:-1:-1;;3368:16:1;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:1;;;;;3394:65;2593:16:37::1;:14;:16::i;:::-;2619:24;:22;:24::i;:::-;-1:-1:-1::0;;;;;2662:23:37;::::1;2654:60;;;::::0;-1:-1:-1;;;2654:60:37;;17369:2:48;2654:60:37::1;::::0;::::1;17351:21:48::0;17408:2;17388:18;;;17381:30;-1:-1:-1;;;17427:18:48;;;17420:54;17491:18;;2654:60:37::1;17167:348:48::0;2654:60:37::1;2725:8;:20:::0;;-1:-1:-1;;;;;;2725:20:37::1;-1:-1:-1::0;;;;;2725:20:37;::::1;;::::0;;3479:99:1;;;;3529:5;3513:21;;-1:-1:-1;;3513:21:1;;;3553:14;;-1:-1:-1;20168:36:48;;3553:14:1;;20156:2:48;20141:18;3553:14:1;20016:194:48;3479:99:1;3101:483;2525:227:37;:::o;9881:464::-;2295:23;;;;:11;:23;;;;;:33;10026:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;10048:24:::1;::::0;;;:12:::1;:24;::::0;;;;;;;:36;;;;;;;;-1:-1:-1;;;;;10048:51:37;::::1;::::0;;;;;;;;;:58;;-1:-1:-1;;10048:58:37::1;10102:4;10048:58;::::0;;10117:28;;;:16:::1;:28:::0;;;;;:40;;;;;;;;:55;;;;;;;;:78:::1;::::0;:76:::1;:78::i;:::-;10205:23;::::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;:58:::1;::::0;:56:::1;:58::i;:::-;10279:59;::::0;-1:-1:-1;;;;;9437:32:48;;9419:51;;10312:10:37;;10300;;10279:59:::1;::::0;9407:2:48;9392:18;10279:59:37::1;9273:203:48::0;3434:354:37;3507:7;2097:1;2087:7;:11;2079:35;;;;-1:-1:-1;;;2079:35:37;;;;;;;:::i;:::-;1815:1:2::1;2569:7;;:19:::0;2561:63:::1;;;;-1:-1:-1::0;;;2561:63:2::1;;;;;;;:::i;:::-;1815:1;2699:7;:18:::0;-1:-1:-1;;;;;3547:20:37;::::2;3539:54;;;::::0;-1:-1:-1;;;3539:54:37;;20417:2:48;3539:54:37::2;::::0;::::2;20399:21:48::0;20456:2;20436:18;;;20429:30;-1:-1:-1;;;20475:18:48;;;20468:51;20536:18;;3539:54:37::2;20215:345:48::0;3539:54:37::2;3603:18;3624:20;:18;:20::i;:::-;3654:23;::::0;;;:11:::2;:23;::::0;;;;3603:41;;-1:-1:-1;3654:55:37::2;::::0;3693:6;3701:7;3654:38:::2;:55::i;:::-;3739:10:::0;3724:57:::2;929:10:12::0;3724:57:37::2;::::0;;-1:-1:-1;;;;;20823:15:48;;;20805:34;;20875:15;;;20870:2;20855:18;;20848:43;20907:18;;20900:34;;;20755:2;20740:18;3724:57:37::2;;;;;;;-1:-1:-1::0;;1772:1:2::1;2872:7;:22:::0;-1:-1:-1;;3434:354:37:o;9082:510::-;2295:23;;;;:11;:23;;;;;:33;9245:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;9265:4:::1;2097:1;2087:7;:11;2079:35;;;;-1:-1:-1::0;;;2079:35:37::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9289:27:37;::::2;9281:70;;;::::0;-1:-1:-1;;;9281:70:37;;21147:2:48;9281:70:37::2;::::0;::::2;21129:21:48::0;21186:2;21166:18;;;21159:30;21225:32;21205:18;;;21198:60;21275:18;;9281:70:37::2;20945:354:48::0;9281:70:37::2;9362:28;::::0;;;:16:::2;:28;::::0;;;;;;;:40;;;;;;;;-1:-1:-1;;;;;9362:55:37;::::2;::::0;;;;;;;:78:::2;::::0;9435:4;9362:72:::2;:78::i;:::-;9450:23;::::0;;;:11:::2;:23;::::0;;;;;;;:35;;;;;;;;:57:::2;::::0;9502:4;9450:51:::2;:57::i;:::-;9523:62;::::0;;-1:-1:-1;;;;;21496:32:48;;21478:51;;21560:2;21545:18;;21538:34;;;9553:10:37;;9541;;9523:62:::2;::::0;21451:18:48;9523:62:37::2;21304:274:48::0;2321:198:0;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;21785:2:48;2401:73:0::1;::::0;::::1;21767:21:48::0;21824:2;21804:18;;;21797:30;21863:34;21843:18;;;21836:62;-1:-1:-1;;;21914:18:48;;;21907:36;21960:19;;2401:73:0::1;21583:402:48::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;:::-;2321:198:::0;:::o;1402:159:43:-;1499:13;312:1;284:13;:25;;;:29;:57;;;;-1:-1:-1;318:23:43;;;;;;317:24;284:57;276:90;;;;-1:-1:-1;;;276:90:43;;;;;;;:::i;:::-;-1:-1:-1;1524:23:43::1;;:30:::0;;-1:-1:-1;;1524:30:43::1;1550:4;1524:30;::::0;;1402:159::o;3842:248:45:-;351:17;;;;3953:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;3978:8:::1;3973:72;;4030:4;4002:8;:24;;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;3973:72:45::1;4054:27;::::0;::::1;:29:::0;;;:27:::1;:29;::::0;::::1;:::i;:::-;;;;;;3842:248:::0;;;;:::o;1406:178::-;351:17;;;;1483:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;-1:-1:-1;1527:15:45::1;1503:21;::::0;::::1;:39:::0;1552:17:::1;;:25:::0;;-1:-1:-1;;1552:25:45::1;::::0;;1406:178::o;17830:980:37:-;17998:33;18034:28;;;:16;:28;;;;;;;;:40;;;;;;;;-1:-1:-1;;;;;18034:55:37;;;;;;;;;18125:23;;;:11;:23;;;;;:35;;;;;;;;18199:13;;;;18034:55;;18125:35;;18199:17;;;;:31;;;18229:1;18220:6;:10;18199:31;18195:258;;;18294:26;;;;18256:30;;;;:34;;18289:1;18256:34;:::i;:::-;:64;18255:187;;1257:3;18419:6;18403:7;:13;;;:22;;;;:::i;:::-;18402:40;;;;:::i;:::-;18255:187;;;18361:7;:17;;;18345:7;:13;;;:33;;;;:::i;:::-;18246:196;;18195:258;18463:28;;;;:16;:28;;;;;;;;:40;;;;;;;;-1:-1:-1;;;;;18463:55:37;;;;;;;;;:74;;18530:6;18463:66;:74::i;:::-;18594:16;;;18547:23;;;:11;:23;;;;;;;;:35;;;;;;;;:72;;18612:6;18547:46;:72::i;:::-;18629:70;18658:13;18692:6;18673:12;:16;;;:25;;;;:::i;:::-;18629:23;;;;:11;:23;;;;;;:70;:28;:70::i;:::-;18778:16;;18715:88;;;-1:-1:-1;;;;;23044:32:48;;23026:51;;23108:2;23093:18;;23086:34;;;;23136:18;;23129:34;;;18751:10:37;;18739;;18715:88;;23014:2:48;22999:18;18715:88:37;;;;;;;17988:822;;;17830:980;;;;:::o;19024:489::-;19156:24;;;;:12;:24;;;;;;;;:36;;;;;;;;-1:-1:-1;;;;;19156:47:37;;;;;;;;;:65;;:63;:65::i;:::-;19232:15;19250:23;;;:11;:23;;;;;;;;:35;;;;;;;;:53;;:51;:53::i;:::-;19313:23;;;;:11;:23;;;;;;;;:35;;;;;;;;19232:71;;-1:-1:-1;19313:60:37;;19232:71;19313:51;:60::i;:::-;19383:23;;;;:11;:23;;;;;:48;;19412:9;19423:7;19383:28;:48::i;:::-;19447:59;;;-1:-1:-1;;;;;21496:32:48;;21478:51;;21560:2;21545:18;;21538:34;;;19475:10:37;;19463;;19447:59;;21451:18:48;19447:59:37;21304:274:48;2577:192:46;2709:19;2681:8;:24;;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;2738:22:46;;;:24;;;:22;:24;;;:::i;:::-;;;;;;2577:192;;:::o;4337:575:45:-;351:17;;;;4433:19;;4414:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;4503:8:::1;:30;;;4472:8;:27;;;:61;4464:103;;;::::0;-1:-1:-1;;;4464:103:45;;23376:2:48;4464:103:45::1;::::0;::::1;23358:21:48::0;23415:2;23395:18;;;23388:30;23454:31;23434:18;;;23427:59;23503:18;;4464:103:45::1;23174:353:48::0;4464:103:45::1;4609:24;::::0;::::1;::::0;4591:15;;:42:::1;::::0;4609:24;4591:42:::1;:::i;:::-;4577:56;;4647:8;:23;;;4674:1;4647:28:::0;4643:73:::1;;4692:24;::::0;::::1;::::0;4677:39:::1;::::0;;::::1;:::i;:::-;;;4643:73;4730:8;:27;;;4761:1;4730:32:::0;4726:67:::1;;4779:14;::::0;::::1;::::0;4764:29:::1;::::0;;::::1;:::i;:::-;;;4726:67;-1:-1:-1::0;4827:15:45::1;4803:21;::::0;::::1;:39:::0;4852:17:::1;::::0;;::::1;:25:::0;;-1:-1:-1;;4852:25:45::1;::::0;;4337:575;:::o;3036:199:46:-;3130:15;;3126:60;;3175:11;3147:8;:24;;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;;3126:60:46;3196:30;;;:32;;;:30;:32;;;:::i;744:135:44:-;261:21;;825:9;;261:25;;;;:49;;-1:-1:-1;291:19:44;;;;;;290:20;261:49;253:78;;;;-1:-1:-1;;;253:78:44;;23734:2:48;253:78:44;;;23716:21:48;23773:2;23753:18;;;23746:30;-1:-1:-1;;;23792:18:48;;;23785:46;23848:18;;253:78:44;23532:340:48;253:78:44;-1:-1:-1;846:19:44::1;;:26:::0;;-1:-1:-1;;846:26:44::1;868:4;846:26;::::0;;744:135::o;2715:155:45:-;351:17;;;;2810:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;2857:6:::1;2830:8;:23;;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;2715:155:45:o;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;24079:2:48;1654:68:0;;;24061:21:48;;;24098:18;;;24091:30;24157:34;24137:18;;;24130:62;24209:18;;1654:68:0;23877:356:48;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;451:186:44:-;528:21;;:26;520:61;;;;-1:-1:-1;;;520:61:44;;24440:2:48;520:61:44;;;24422:21:48;24479:2;24459:18;;;24452:30;-1:-1:-1;;;24498:18:48;;;24491:52;24560:18;;520:61:44;24238:346:48;520:61:44;615:15;591:39;;451:186::o;2062:245:45:-;351:17;;;;2154:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;219:2:::1;2208:6;2182:8;:23;;;:32;;;;:::i;:::-;:49;;2174:83;;;::::0;-1:-1:-1;;;2174:83:45;;24791:2:48;2174:83:45::1;::::0;::::1;24773:21:48::0;24830:2;24810:18;;;24803:30;-1:-1:-1;;;24849:18:48;;;24842:51;24910:18;;2174:83:45::1;24589:345:48::0;2174:83:45::1;2294:6;2267:8;:23;;;:33;;;;;;;:::i;5044:370::-:0;5118:7;5137:15;5182:8;:28;;;5155:8;:24;;;:55;;;;:::i;:::-;5137:73;;5279:15;5324:8;:23;;;5297:8;:24;;;:50;;;;:::i;:::-;5279:68;-1:-1:-1;5375:11:45;5279:68;5375:1;:11;:::i;:::-;5365:7;:21;5364:43;;5400:7;5364:43;;;5390:7;5364:43;5357:50;5044:370;-1:-1:-1;;;;5044:370:45:o;1202:545:46:-;1270:7;1297:8;:21;;;1322:1;1297:26;1289:63;;;;-1:-1:-1;;;1289:63:46;;25141:2:48;1289:63:46;;;25123:21:48;25180:2;25160:18;;;25153:30;25219:26;25199:18;;;25192:54;25263:18;;1289:63:46;24939:348:48;1289:63:46;1396:8;:30;;;1370:8;:22;;;:56;1362:93;;;;-1:-1:-1;;;1362:93:46;;25494:2:48;1362:93:46;;;25476:21:48;25533:2;25513:18;;;25506:30;25572:26;25552:18;;;25545:54;25616:18;;1362:93:46;25292:348:48;1362:93:46;1489:15;1465:21;;;:39;1554:24;;;;1536:15;;;;1514:19;;1536:42;;;:::i;:::-;1514:64;-1:-1:-1;1592:15:46;;1588:125;;1670:18;;;1641:14;;;1623:79;;-1:-1:-1;;;;;1641:14:46;;;;1670:18;1690:11;1623:46;:79::i;2012:384::-;2141:21;;;;:26;2133:58;;;;-1:-1:-1;;;2133:58:46;;25847:2:48;2133:58:46;;;25829:21:48;25886:2;25866:18;;;25859:30;-1:-1:-1;;;25905:18:48;;;25898:49;25964:18;;2133:58:46;25645:343:48;2133:58:46;2255:12;2228:8;:24;;;:39;;;;:::i;:::-;2209:8;:15;;;:58;;2201:101;;;;-1:-1:-1;;;2201:101:46;;26195:2:48;2201:101:46;;;26177:21:48;26234:2;26214:18;;;26207:30;26273:32;26253:18;;;26246:60;26323:18;;2201:101:46;25993:354:48;2201:101:46;2340:12;2312:8;:24;;;:40;;;;;;;:::i;:::-;;;;;;;;2388:1;2362:8;:22;;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;2012:384:46:o;20343:250:37:-;20429:18;20472:19;20484:6;20472:11;:19::i;:::-;20509:23;;;;:11;:23;;;;;;;;:35;;;;;;;;:47;;;20459:32;;-1:-1:-1;20509:52:37;20501:85;;;;-1:-1:-1;;;20501:85:37;;26554:2:48;20501:85:37;;;26536:21:48;26593:2;26573:18;;;26566:30;-1:-1:-1;;;26612:18:48;;;26605:50;26672:18;;20501:85:37;26352:344:48;710:587:45;928:19;924:1;:23;:67;;;;;171:2;951:19;:40;;924:67;916:109;;;;-1:-1:-1;;;916:109:45;;26903:2:48;916:109:45;;;26885:21:48;26942:2;26922:18;;;26915:30;26981:31;26961:18;;;26954:59;27030:18;;916:109:45;26701:353:48;916:109:45;1035:25;;;1070:24;;;:46;;;;1126:14;;;:23;1159:27;;;:49;1241:15;1218:20;;;:38;1266:17;;:24;;-1:-1:-1;;1266:24:45;1286:4;1266:24;;;710:587::o;1040:252:5:-;1216:68;;-1:-1:-1;;;;;20823:15:48;;;1216:68:5;;;20805:34:48;20875:15;;20855:18;;;20848:43;20907:18;;;20900:34;;;1189:96:5;;1209:5;;-1:-1:-1;;;1239:27:5;20740:18:48;;1216:68:5;;;;-1:-1:-1;;1216:68:5;;;;;;;;;;;;;;-1:-1:-1;;;;;1216:68:5;-1:-1:-1;;;;;;1216:68:5;;;;;;;;;;1189:19;:96::i;12106:574:37:-;12274:1;12254:10;:17;:21;12246:56;;;;-1:-1:-1;;;12246:56:37;;16003:2:48;12246:56:37;;;15985:21:48;16042:2;16022:18;;;16015:30;-1:-1:-1;;;16061:18:48;;;16054:52;16123:18;;12246:56:37;15801:346:48;12246:56:37;12318:9;12313:217;12337:10;:17;12333:1;:21;12313:217;;;12408:1;-1:-1:-1;;;;;12383:27:37;:10;12394:1;12383:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;12383:27:37;;12375:64;;;;-1:-1:-1;;;12375:64:37;;27261:2:48;12375:64:37;;;27243:21:48;27300:2;27280:18;;;27273:30;27339:26;27319:18;;;27312:54;27383:18;;12375:64:37;27059:348:48;12375:64:37;12453:24;;;;:12;:24;;;;;;;;:36;;;;;;;;12490:13;;12453:66;;:24;12490:10;;12501:1;;12490:13;;;;;;:::i;12453:66::-;12356:3;;;;:::i;:::-;;;;12313:217;;;-1:-1:-1;12589:17:37;;12539:23;;;;:11;:23;;;;;;;;:35;;;;;;;;:68;;:49;:68::i;:::-;12650:10;12638;12623:50;12662:10;12623:50;;;;;;:::i;1003:95:0:-;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1065:26:0::1;:24;:26::i;1853:111:2:-:0;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1923:34:2::1;:32;:34::i;1133:263:43:-:0;1231:13;312:1;284:13;:25;;;:29;:57;;;;-1:-1:-1;318:23:43;;;;;;317:24;284:57;276:90;;;;-1:-1:-1;;;276:90:43;;;;;;;:::i;:::-;1264:29:::1;::::0;::::1;::::0;:34;1256:76:::1;;;::::0;-1:-1:-1;;;1256:76:43;;28026:2:48;1256:76:43::1;::::0;::::1;28008:21:48::0;28065:2;28045:18;;;28038:30;28104:31;28084:18;;;28077:59;28153:18;;1256:76:43::1;27824:353:48::0;1256:76:43::1;-1:-1:-1::0;1374:15:43::1;1342:29;::::0;;::::1;:47:::0;1133:263::o;3554:142:45:-;351:17;;;;3637:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;3657:30:::1;::::0;::::1;:32:::0;;;:30:::1;:32;::::0;::::1;:::i;19960:199:37:-:0;20012:18;20055:14;20067:1;20055:11;:14::i;:::-;20087:23;;;;:11;:23;;;;;:35;;;20042:27;;-1:-1:-1;20087:40:37;20079:73;;;;-1:-1:-1;;;20079:73:37;;28384:2:48;20079:73:37;;;28366:21:48;28423:2;28403:18;;;28396:30;-1:-1:-1;;;28442:18:48;;;28435:50;28502:18;;20079:73:37;28182:344:48;20079:73:37;19960:199;:::o;570:391:46:-;702:31;;-1:-1:-1;;;;;;702:31:46;;;723:10;702:31;;;;;;743:14;;:23;;-1:-1:-1;;;;;743:23:46;;;;;;;;776:15;;;:25;;;834:15;811:20;;;:38;860:94;;743:23;931:4;794:7;860:50;:94::i;:::-;570:391;;;:::o;656:327:43:-;759:23;;;;;;;:57;;-1:-1:-1;786:25:43;;;;:30;759:57;751:96;;;;-1:-1:-1;;;751:96:43;;28733:2:48;751:96:43;;;28715:21:48;28772:2;28752:18;;;28745:30;28811:28;28791:18;;;28784:56;28857:18;;751:96:43;28531:350:48;751:96:43;858:24;;892:23;;;:31;;-1:-1:-1;;892:31:43;;;961:15;933:25;;;;:43;656:327::o;3016:409:45:-;351:17;;;;3111:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;3185:7:::1;3158:8;:24;;;:34;;;;:::i;:::-;3139:15:::0;;:53:::1;;3131:96;;;::::0;-1:-1:-1;;;3131:96:45;;29088:2:48;3131:96:45::1;::::0;::::1;29070:21:48::0;29127:2;29107:18;;;29100:30;29166:32;29146:18;;;29139:60;29216:18;;3131:96:45::1;28886:354:48::0;3131:96:45::1;3275:8;:27;;;3245:8;:27;;;:57;3237:97;;;::::0;-1:-1:-1;;;3237:97:45;;29447:2:48;3237:97:45::1;::::0;::::1;29429:21:48::0;29486:2;29466:18;;;29459:30;29525:29;29505:18;;;29498:57;29572:18;;3237:97:45::1;29245:351:48::0;3237:97:45::1;3372:7;3344:8;:24;;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;3389:27:45::1;::::0;::::1;:29:::0;;;:27:::1;:29;::::0;::::1;:::i;:::-;;;;;;3016:409:::0;;;:::o;1709:388:43:-;1813:13;312:1;284:13;:25;;;:29;:57;;;;-1:-1:-1;318:23:43;;;;;;317:24;284:57;276:90;;;;-1:-1:-1;;;276:90:43;;;;;;;:::i;:::-;1846:25:::1;::::0;::::1;::::0;:30;1838:62:::1;;;::::0;-1:-1:-1;;;1838:62:43;;29803:2:48;1838:62:43::1;::::0;::::1;29785:21:48::0;29842:2;29822:18;;;29815:30;-1:-1:-1;;;29861:18:48;;;29854:49;29920:18;;1838:62:43::1;29601:343:48::0;1838:62:43::1;1938:15;1910:25;::::0;::::1;:43:::0;1967:10;;1963:128:::1;;-1:-1:-1::0;1993:19:43::1;::::0;::::1;:28:::0;2065:15:::1;2035:27;::::0;;::::1;:45:::0;1709:388::o;5851:284:45:-;5999:4;5976:8;:19;;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;6017:10:45;;6013:116;;6065:6;6043:8;:18;;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;;6085:31:45;;;:33;;;:31;:33;;;:::i;3409:238:46:-;3557:7;3534:8;:19;;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;3592:14:46;;;;3574:66;;-1:-1:-1;;;;;3592:14:46;3621:9;3632:7;3574:46;:66::i;976:216:44:-;261:21;;1057:9;;261:25;;;;:49;;-1:-1:-1;291:19:44;;;;;;290:20;261:49;253:78;;;;-1:-1:-1;;;253:78:44;;23734:2:48;253:78:44;;;23716:21:48;23773:2;23753:18;;;23746:30;-1:-1:-1;;;23792:18:48;;;23785:46;23848:18;;253:78:44;23532:340:48;253:78:44;1086:18:::1;::::0;::::1;::::0;:23;1078:61:::1;;;::::0;-1:-1:-1;;;1078:61:44;;30151:2:48;1078:61:44::1;::::0;::::1;30133:21:48::0;30190:2;30170:18;;;30163:30;30229:27;30209:18;;;30202:55;30274:18;;1078:61:44::1;29949:349:48::0;1078:61:44::1;-1:-1:-1::0;1170:15:44::1;1149:18;::::0;;::::1;:36:::0;976:216::o;5544:133:45:-;5663:7;5631:8;:28;;;:39;;;;;;;:::i;818:216:5:-;968:58;;-1:-1:-1;;;;;21496:32:48;;968:58:5;;;21478:51:48;21545:18;;;21538:34;;;941:86:5;;961:5;;-1:-1:-1;;;991:23:5;21451:18:48;;968:58:5;21304:274:48;19675:170:37;19734:7;929:10:12;19811:16:37;19826:1;19811:12;:16;:::i;:::-;19770:67;;30508:2:48;30504:15;;;;-1:-1:-1;;30500:53:48;19770:67:37;;;30488:66:48;19801:27:37;30570:12:48;;;30563:28;30607:12;;;30600:28;;;30644:12;;19770:67:37;;;;;;;;;;;;19760:78;;;;;;19753:85;;19675:170;;;:::o;3868:717:5:-;4298:23;4324:69;4352:4;4324:69;;;;;;;;;;;;;;;;;4332:5;-1:-1:-1;;;;;4324:27:5;;;:69;;;;;:::i;:::-;4407:17;;4298:95;;-1:-1:-1;4407:21:5;4403:176;;4502:10;4491:30;;;;;;;;;;;;:::i;:::-;4483:85;;;;-1:-1:-1;;;4483:85:5;;31119:2:48;4483:85:5;;;31101:21:48;31158:2;31138:18;;;31131:30;31197:34;31177:18;;;31170:62;-1:-1:-1;;;31248:18:48;;;31241:40;31298:19;;4483:85:5;30917:406:48;1104:111:0;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1176:32:0::1;929:10:12::0;1176:18:0::1;:32::i;1970:109:2:-:0;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1772:1:2::1;2050:7;:22:::0;1970:109::o;3872:223:11:-;4005:12;4036:52;4058:6;4066:4;4072:1;4075:12;4005;-1:-1:-1;;;;;1476:19:11;;;5239:60;;;;-1:-1:-1;;;5239:60:11;;31937:2:48;5239:60:11;;;31919:21:48;31976:2;31956:18;;;31949:30;32015:31;31995:18;;;31988:59;32064:18;;5239:60:11;31735:353:48;5239:60:11;5311:12;5325:23;5352:6;-1:-1:-1;;;;;5352:11:11;5371:5;5378:4;5352:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5310:73;;;;5400:51;5417:7;5426:10;5438:12;5400:16;:51::i;:::-;5393:58;4959:499;-1:-1:-1;;;;;;;4959:499:11:o;6622:742::-;6768:12;6796:7;6792:566;;;-1:-1:-1;6826:10:11;6819:17;;6792:566;6937:17;;:21;6933:415;;7181:10;7175:17;7241:15;7228:10;7224:2;7220:19;7213:44;6933:415;7320:12;7313:20;;-1:-1:-1;;;7313:20:11;;;;;;;;:::i;14:248:48:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:48;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:48:o;267:127::-;328:10;323:3;319:20;316:1;309:31;359:4;356:1;349:15;383:4;380:1;373:15;399:275;470:2;464:9;535:2;516:13;;-1:-1:-1;;512:27:48;500:40;;570:18;555:34;;591:22;;;552:62;549:88;;;617:18;;:::i;:::-;653:2;646:22;399:275;;-1:-1:-1;399:275:48:o;679:183::-;739:4;772:18;764:6;761:30;758:56;;;794:18;;:::i;:::-;-1:-1:-1;839:1:48;835:14;851:4;831:25;;679:183::o;867:173::-;935:20;;-1:-1:-1;;;;;984:31:48;;974:42;;964:70;;1030:1;1027;1020:12;964:70;867:173;;;:::o;1045:668::-;1099:5;1152:3;1145:4;1137:6;1133:17;1129:27;1119:55;;1170:1;1167;1160:12;1119:55;1206:6;1193:20;1232:4;1256:60;1272:43;1312:2;1272:43;:::i;:::-;1256:60;:::i;:::-;1350:15;;;1436:1;1432:10;;;;1420:23;;1416:32;;;1381:12;;;;1460:15;;;1457:35;;;1488:1;1485;1478:12;1457:35;1524:2;1516:6;1512:15;1536:148;1552:6;1547:3;1544:15;1536:148;;;1618:23;1637:3;1618:23;:::i;:::-;1606:36;;1662:12;;;;1569;;1536:148;;;-1:-1:-1;1702:5:48;1045:668;-1:-1:-1;;;;;;1045:668:48:o;1718:118::-;1804:5;1797:13;1790:21;1783:5;1780:32;1770:60;;1826:1;1823;1816:12;1841:862;1983:6;1991;1999;2007;2015;2068:3;2056:9;2047:7;2043:23;2039:33;2036:53;;;2085:1;2082;2075:12;2036:53;2121:9;2108:23;2098:33;;2178:2;2167:9;2163:18;2150:32;2140:42;;2233:2;2222:9;2218:18;2205:32;2256:18;2297:2;2289:6;2286:14;2283:34;;;2313:1;2310;2303:12;2283:34;2336:61;2389:7;2380:6;2369:9;2365:22;2336:61;:::i;:::-;2326:71;;2450:2;2439:9;2435:18;2422:32;2406:48;;2479:2;2469:8;2466:16;2463:36;;;2495:1;2492;2485:12;2463:36;;2518:63;2573:7;2562:8;2551:9;2547:24;2518:63;:::i;:::-;2508:73;;;2631:3;2620:9;2616:19;2603:33;2645:28;2667:5;2645:28;:::i;:::-;2692:5;2682:15;;;1841:862;;;;;;;;:::o;2708:452::-;2791:6;2799;2807;2815;2868:3;2856:9;2847:7;2843:23;2839:33;2836:53;;;2885:1;2882;2875:12;2836:53;2921:9;2908:23;2898:33;;2978:2;2967:9;2963:18;2950:32;2940:42;;3001:38;3035:2;3024:9;3020:18;3001:38;:::i;:::-;2991:48;;3089:2;3078:9;3074:18;3061:32;3102:28;3124:5;3102:28;:::i;:::-;2708:452;;;;-1:-1:-1;2708:452:48;;-1:-1:-1;;2708:452:48:o;4664:322::-;4741:6;4749;4757;4810:2;4798:9;4789:7;4785:23;4781:32;4778:52;;;4826:1;4823;4816:12;4778:52;4862:9;4849:23;4839:33;;4919:2;4908:9;4904:18;4891:32;4881:42;;4942:38;4976:2;4965:9;4961:18;4942:38;:::i;:::-;4932:48;;4664:322;;;;;:::o;5635:180::-;5694:6;5747:2;5735:9;5726:7;5722:23;5718:32;5715:52;;;5763:1;5760;5753:12;5715:52;-1:-1:-1;5786:23:48;;5635:180;-1:-1:-1;5635:180:48:o;6641:1502::-;6811:6;6819;6827;6835;6843;6896:3;6884:9;6875:7;6871:23;6867:33;6864:53;;;6913:1;6910;6903:12;6864:53;6949:9;6936:23;6926:33;;6978:2;7027;7016:9;7012:18;6999:32;6989:42;;7082:2;7071:9;7067:18;7054:32;7105:18;7146:2;7138:6;7135:14;7132:34;;;7162:1;7159;7152:12;7132:34;7185:61;7238:7;7229:6;7218:9;7214:22;7185:61;:::i;:::-;7175:71;;7299:2;7288:9;7284:18;7271:32;7255:48;;7328:2;7318:8;7315:16;7312:36;;;7344:1;7341;7334:12;7312:36;7367:63;7422:7;7411:8;7400:9;7396:24;7367:63;:::i;:::-;7357:73;;7483:3;7472:9;7468:19;7455:33;7439:49;;7513:2;7503:8;7500:16;7497:36;;;7529:1;7526;7519:12;7497:36;-1:-1:-1;7552:24:48;;7607:4;7599:13;;7595:27;-1:-1:-1;7585:55:48;;7636:1;7633;7626:12;7585:55;7672:2;7659:16;7695:60;7711:43;7751:2;7711:43;:::i;7695:60::-;7789:15;;;7871:1;7867:10;;;;7859:19;;7855:28;;;7820:12;;;;7895:19;;;7892:39;;;7927:1;7924;7917:12;7892:39;7951:11;;;;7971:142;7987:6;7982:3;7979:15;7971:142;;;8053:17;;8041:30;;8004:12;;;;8091;;;;7971:142;;;8132:5;8122:15;;;;;;;6641:1502;;;;;;;;:::o;8148:484::-;8250:6;8258;8266;8319:2;8307:9;8298:7;8294:23;8290:32;8287:52;;;8335:1;8332;8325:12;8287:52;8371:9;8358:23;8348:33;;8428:2;8417:9;8413:18;8400:32;8390:42;;8483:2;8472:9;8468:18;8455:32;8510:18;8502:6;8499:30;8496:50;;;8542:1;8539;8532:12;8496:50;8565:61;8618:7;8609:6;8598:9;8594:22;8565:61;:::i;:::-;8555:71;;;8148:484;;;;;:::o;9481:732::-;9617:6;9625;9633;9641;9694:3;9682:9;9673:7;9669:23;9665:33;9662:53;;;9711:1;9708;9701:12;9662:53;9747:9;9734:23;9724:33;;9804:2;9793:9;9789:18;9776:32;9766:42;;9859:2;9848:9;9844:18;9831:32;9882:18;9923:2;9915:6;9912:14;9909:34;;;9939:1;9936;9929:12;9909:34;9962:61;10015:7;10006:6;9995:9;9991:22;9962:61;:::i;:::-;9952:71;;10076:2;10065:9;10061:18;10048:32;10032:48;;10105:2;10095:8;10092:16;10089:36;;;10121:1;10118;10111:12;10089:36;;10144:63;10199:7;10188:8;10177:9;10173:24;10144:63;:::i;:::-;10134:73;;;9481:732;;;;;;;:::o;10400:186::-;10459:6;10512:2;10500:9;10491:7;10487:23;10483:32;10480:52;;;10528:1;10525;10518:12;10480:52;10551:29;10570:9;10551:29;:::i;10591:691::-;10720:6;10728;10736;10744;10752;10760;10813:3;10801:9;10792:7;10788:23;10784:33;10781:53;;;10830:1;10827;10820:12;10781:53;10866:9;10853:23;10843:33;;10923:2;10912:9;10908:18;10895:32;10885:42;;10974:2;10963:9;10959:18;10946:32;10936:42;;11025:2;11014:9;11010:18;10997:32;10987:42;;11076:3;11065:9;11061:19;11048:33;11038:43;;11132:3;11121:9;11117:19;11104:33;11160:18;11152:6;11149:30;11146:50;;;11192:1;11189;11182:12;11146:50;11215:61;11268:7;11259:6;11248:9;11244:22;11215:61;:::i;:::-;11205:71;;;10591:691;;;;;;;;:::o;11287:254::-;11355:6;11363;11416:2;11404:9;11395:7;11391:23;11387:32;11384:52;;;11432:1;11429;11422:12;11384:52;11455:29;11474:9;11455:29;:::i;:::-;11445:39;11531:2;11516:18;;;;11503:32;;-1:-1:-1;;;11287:254:48:o;11546:391::-;11632:6;11640;11648;11656;11709:3;11697:9;11688:7;11684:23;11680:33;11677:53;;;11726:1;11723;11716:12;11677:53;11762:9;11749:23;11739:33;;11819:2;11808:9;11804:18;11791:32;11781:42;;11842:38;11876:2;11865:9;11861:18;11842:38;:::i;:::-;11546:391;;;;-1:-1:-1;11832:48:48;;11927:2;11912:18;11899:32;;-1:-1:-1;;11546:391:48:o;12301:355::-;12503:2;12485:21;;;12542:2;12522:18;;;12515:30;12581:33;12576:2;12561:18;;12554:61;12647:2;12632:18;;12301:355::o;13371:127::-;13432:10;13427:3;13423:20;13420:1;13413:31;13463:4;13460:1;13453:15;13487:4;13484:1;13477:15;13503:127;13564:10;13559:3;13555:20;13552:1;13545:31;13595:4;13592:1;13585:15;13619:4;13616:1;13609:15;13635:135;13674:3;13695:17;;;13692:43;;13715:18;;:::i;:::-;-1:-1:-1;13762:1:48;13751:13;;13635:135::o;13775:128::-;13842:9;;;13863:11;;;13860:37;;;13877:18;;:::i;13908:125::-;13973:9;;;13994:10;;;13991:36;;;14007:18;;:::i;16152:658::-;16323:2;16375:21;;;16445:13;;16348:18;;;16467:22;;;16294:4;;16323:2;16546:15;;;;16520:2;16505:18;;;16294:4;16589:195;16603:6;16600:1;16597:13;16589:195;;;16668:13;;-1:-1:-1;;;;;16664:39:48;16652:52;;16759:15;;;;16724:12;;;;16700:1;16618:9;16589:195;;;-1:-1:-1;16801:3:48;;16152:658;-1:-1:-1;;;;;;16152:658:48:o;17829:355::-;18031:2;18013:21;;;18070:2;18050:18;;;18043:30;18109:33;18104:2;18089:18;;18082:61;18175:2;18160:18;;17829:355::o;18189:335::-;18391:2;18373:21;;;18430:2;18410:18;;;18403:30;-1:-1:-1;;;18464:2:48;18449:18;;18442:41;18515:2;18500:18;;18189:335::o;18529:168::-;18569:7;18635:1;18631;18627:6;18623:14;18620:1;18617:21;18612:1;18605:9;18598:17;18594:45;18591:71;;;18642:18;;:::i;:::-;-1:-1:-1;18682:9:48;;18529:168::o;18702:217::-;18742:1;18768;18758:132;;18812:10;18807:3;18803:20;18800:1;18793:31;18847:4;18844:1;18837:15;18875:4;18872:1;18865:15;18758:132;-1:-1:-1;18904:9:48;;18702:217::o;21990:344::-;22192:2;22174:21;;;22231:2;22211:18;;;22204:30;-1:-1:-1;;;22265:2:48;22250:18;;22243:50;22325:2;22310:18;;21990:344::o;22339:339::-;22541:2;22523:21;;;22580:2;22560:18;;;22553:30;-1:-1:-1;;;22614:2:48;22599:18;;22592:45;22669:2;22654:18;;22339:339::o;22683:136::-;22722:3;22750:5;22740:39;;22759:18;;:::i;:::-;-1:-1:-1;;;22795:18:48;;22683:136::o;27412:407::-;27614:2;27596:21;;;27653:2;27633:18;;;27626:30;27692:34;27687:2;27672:18;;27665:62;-1:-1:-1;;;27758:2:48;27743:18;;27736:41;27809:3;27794:19;;27412:407::o;30667:245::-;30734:6;30787:2;30775:9;30766:7;30762:23;30758:32;30755:52;;;30803:1;30800;30793:12;30755:52;30835:9;30829:16;30854:28;30876:5;30854:28;:::i;32093:250::-;32178:1;32188:113;32202:6;32199:1;32196:13;32188:113;;;32278:11;;;32272:18;32259:11;;;32252:39;32224:2;32217:10;32188:113;;;-1:-1:-1;;32335:1:48;32317:16;;32310:27;32093:250::o;32348:287::-;32477:3;32515:6;32509:13;32531:66;32590:6;32585:3;32578:4;32570:6;32566:17;32531:66;:::i;:::-;32613:16;;;;;32348:287;-1:-1:-1;;32348:287:48:o;32640:396::-;32789:2;32778:9;32771:21;32752:4;32821:6;32815:13;32864:6;32859:2;32848:9;32844:18;32837:34;32880:79;32952:6;32947:2;32936:9;32932:18;32927:2;32919:6;32915:15;32880:79;:::i;:::-;33020:2;32999:15;-1:-1:-1;;32995:29:48;32980:45;;;;33027:2;32976:54;;32640:396;-1:-1:-1;;32640:396:48:o", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mgp\",\"type\":\"uint256\"}],\"name\":\"AddedCollaborator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"observers\",\"type\":\"address[]\"}],\"name\":\"AddedObservers\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"}],\"name\":\"ApprovedCollaborator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"}],\"name\":\"ApprovedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revertedBudget\",\"type\":\"uint256\"}],\"name\":\"CanceledPackage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"observerBudget\",\"type\":\"uint256\"}],\"name\":\"CreatedPackage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"}],\"name\":\"CreatedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"budgetLeft\",\"type\":\"uint256\"}],\"name\":\"FinishedPackage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budgetLeft\",\"type\":\"uint256\"}],\"name\":\"FinishedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mgp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"}],\"name\":\"PaidCollaboratorRewards\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"PaidObserverFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId_\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId_\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator_\",\"type\":\"address\"}],\"name\":\"RemovedCollaborator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"observers\",\"type\":\"address[]\"}],\"name\":\"RemovedObservers\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"}],\"name\":\"StartedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldTreasury\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"UpdatedTreasury\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"PCT_PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_mgp\",\"type\":\"uint256\"}],\"name\":\"addCollaborator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"}],\"name\":\"addObservers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"}],\"name\":\"approveCollaborator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_collaborators\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"_workStarted\",\"type\":\"bool\"}],\"name\":\"cancelPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_observerBudget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_collaboratorsLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"}],\"name\":\"createPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"budget_\",\"type\":\"uint256\"}],\"name\":\"createProject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_collaborators\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_scores\",\"type\":\"uint256[]\"}],\"name\":\"finishPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"}],\"name\":\"finishProject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"}],\"name\":\"getCollaboratorData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"mgp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeCreated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeMgpApproved\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeMgpPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeBonusPaid\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isRemoved\",\"type\":\"bool\"}],\"internalType\":\"structCollaborator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"}],\"name\":\"getCollaboratorRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_observer\",\"type\":\"address\"}],\"name\":\"getObserverData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"timeCreated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timePaid\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isRemoved\",\"type\":\"bool\"}],\"internalType\":\"structObserver\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_observer\",\"type\":\"address\"}],\"name\":\"getObserverFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"}],\"name\":\"getPackageData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetAllocated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetObservers\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetObserversPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bonusPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collaboratorsPaidBonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeCreated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeFinished\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalObservers\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalCollaborators\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collaboratorsLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"approvedCollaborators\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeCanceled\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"internalType\":\"structPackage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"}],\"name\":\"getProjectData\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetAllocated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeCreated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeFinished\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalPackages\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalFinishedPackages\",\"type\":\"uint256\"}],\"internalType\":\"structProject\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_shouldPayMgp\",\"type\":\"bool\"}],\"name\":\"removeCollaborator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"}],\"name\":\"removeObservers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"}],\"name\":\"selfRemove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_observersIn\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_observersOut\",\"type\":\"address[]\"}],\"name\":\"updateObservers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury_\",\"type\":\"address\"}],\"name\":\"updateTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b5061398f806100206000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806371af530b116100de578063be06555e11610097578063e1d8451411610071578063e1d8451414610519578063e82d657214610523578063ec104ff114610536578063f2fde38b1461054957600080fd5b8063be06555e146104e0578063c4d66de8146104f3578063dcce114e1461050657600080fd5b806371af530b146104625780637cbe62c6146104755780637f51bb1f1461049657806385ceab29146104a95780638da5cb5b146104bc578063b2b57114146104cd57600080fd5b80632926aa80116101305780632926aa80146103785780633a7efc841461038b57806358ff3e471461039e578063590ab7db146103f857806361d027b31461042f578063715018a61461045a57600080fd5b806303a1fc2214610178578063085f8a9c1461018d5780630eae9d88146101a057806320000478146101b35780632008002e1461028557806323d683e7146102f0575b600080fd5b61018b610186366004613192565b61055c565b005b61018b61019b3660046132bb565b610661565b61018b6101ae366004613347565b610889565b6101c66101c1366004613192565b6109f1565b60405161027c9190815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018080830151908201526101a080830151908201526101c080830151908201526101e0918201511515918101919091526102000190565b60405180910390f35b61029861029336600461338f565b610b4a565b60405161027c9190600060e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015292915050565b6103036102fe3660046133c4565b610c12565b60405161027c919081516001600160a01b0390811682526020808401519091169082015260408083015190820152606080830151908201526080808301519082015260a0828101519082015260c0808301519082015260e0808301519082015261010091820151918101919091526101200190565b61018b6103863660046133dd565b610cf8565b61018b6103993660046134cf565b611041565b6103e36103ac36600461338f565b6000928352609b602090815260408085209385529281528284206001600160a01b0392909216845252902080546001909101549091565b6040805192835260208301919091520161027c565b61040b61040636600461338f565b6111a4565b6040805182518152602080840151908201529181015115159082015260600161027c565b609754610442906001600160a01b031681565b6040516001600160a01b03909116815260200161027c565b61018b611222565b61018b61047036600461351f565b611236565b61048861048336600461338f565b61146b565b60405190815260200161027c565b61018b6104a4366004613596565b6114ef565b61018b6104b73660046133c4565b6115aa565b6033546001600160a01b0316610442565b61018b6104db3660046135b1565b611666565b61018b6104ee3660046134cf565b611843565b61018b610501366004613596565b61188c565b61018b61051436600461338f565b611a0e565b610488620f424081565b61018b61053136600461361d565b611aff565b61018b610544366004613647565b611c12565b61018b610557366004613596565b611d5b565b6000828152609a60209081526040808320848452825280832033845290915290205460ff16156105d35760405162461bcd60e51b815260206004820152601e60248201527f636f6c6c61626f7261746f7220617070726f76656420616c726561647921000060448201526064015b60405180910390fd5b6000828152609b60209081526040808320848452825280832033845290915290206105fd81611dd4565b80546000848152609960209081526040808320868452909152812061062492909190611e1b565b604051338152829084907f1810672a3dad8f995260ba0777de0e36f462980ce02a3951804f83aac9c2d455906020015b60405180910390a3505050565b60008581526098602052604090205485906001600160a01b031633146106995760405162461bcd60e51b81526004016105ca90613684565b60008681526099602090815260408083208884529091529020600b8101548551146107065760405162461bcd60e51b815260206004820152601c60248201527f696e76616c696420636f6c6c61626f7261746f7273206c656e6774680000000060448201526064016105ca565b80600a015484511461075a5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206f6273657276657273206c656e677468000000000000000060448201526064016105ca565b61076381611e7d565b82156107f25760005b85518110156107ad5761079b888888848151811061078c5761078c6136bb565b60200260200101516000611eb7565b806107a5816136e7565b91505061076c565b5060005b84518110156107f0576107de88888784815181106107d1576107d16136bb565b602002602001015161203e565b806107e8816136e7565b9150506107b1565b505b6005810154600282015482546000929161080b91613700565b6108159190613713565b90508160040154826003015461082b9190613700565b6108359082613713565b60008981526098602052604090209091506108509082612115565b8087897f56829e4c362b83a2633cd58ab80f95a4c661582416ca0dd74cf6844198ef939060405160405180910390a45050505050505050565b60008481526098602052604090205484906001600160a01b031633146108c15760405162461bcd60e51b81526004016105ca90613684565b6000858152609a6020908152604080832087845282528083206001600160a01b038716845290915290205460ff161561093c5760405162461bcd60e51b815260206004820152601e60248201527f636f6c6c61626f7261746f7220617070726f76656420616c726561647921000060448201526064016105ca565b6000858152609b6020908152604080832087845282528083206001600160a01b038716845290915290208215610979576109798686866000611eb7565b61098281611dd4565b8054600087815260996020908152604080832089845290915290206109a8918590611e1b565b6040516001600160a01b0385168152859087907f1810672a3dad8f995260ba0777de0e36f462980ce02a3951804f83aac9c2d455906020015b60405180910390a3505050505050565b610a736040518061020001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b506000828152609960209081526040808320848452825291829020825161020081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b820154610160820152600c820154610180820152600d8201546101a0820152600e8201546101c0820152600f9091015460ff1615156101e08201525b92915050565b610b8c6040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b506000838152609b6020908152604080832085845282528083206001600160a01b0385168452825291829020825160e081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a082015260069091015460ff16151560c08201525b9392505050565b610c7360405180610120016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060009081526098602090815260409182902082516101208101845281546001600160a01b039081168252600183015416928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260089091015461010082015290565b60008581526098602052604090205485906001600160a01b03163314610d305760405162461bcd60e51b81526004016105ca90613684565b60008681526099602090815260408083208884529091529020600b810154855114610d9d5760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420636f6c6c61626f7261746f7273206c69737400000000000060448201526064016105ca565b8251855114610dee5760405162461bcd60e51b815260206004820152601760248201527f61727261797327206c656e677468206d69736d6174636800000000000000000060448201526064016105ca565b80600a0154845114610e3b5760405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a59081bd89cd95c9d995c9cc81b1a5cdd60521b60448201526064016105ca565b6000610e4682612149565b6000898152609860205260409020909150610e61908261222f565b60008260050154118015610e76575060008651115b15610f75576000805b8551811015610f20576000868281518110610e9c57610e9c6136bb565b602002602001015111610ee75760405162461bcd60e51b8152602060048201526013602482015272696e76616c696420626f6e75732073636f726560681b60448201526064016105ca565b858181518110610ef957610ef96136bb565b602002602001015182610f0c9190613713565b915080610f18816136e7565b915050610e7f565b50620f42408114610f735760405162461bcd60e51b815260206004820152601c60248201527f696e636f727265637420746f74616c20626f6e75732073636f7265730000000060448201526064016105ca565b505b60005b8651811015610fd157610fbf8989898481518110610f9857610f986136bb565b6020026020010151888581518110610fb257610fb26136bb565b6020026020010151611eb7565b80610fc9816136e7565b915050610f78565b5060005b855181101561100757610ff589898884815181106107d1576107d16136bb565b80610fff816136e7565b915050610fd5565b508087897fca0673658d6abd07a7992b1c692276e95e5693b83c44ebcbc0f5661add8f274f60405160405180910390a45050505050505050565b60008381526098602052604090205483906001600160a01b031633146110795760405162461bcd60e51b81526004016105ca90613684565b60008251116110c35760405162461bcd60e51b8152602060048201526016602482015275656d707479206f62736572766572732061727261792160501b60448201526064016105ca565b60005b8251811015611140576000858152609c602090815260408083208784529091528120845161112e9290869085908110611101576111016136bb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020612261565b80611138816136e7565b9150506110c6565b50815160008581526099602090815260408083208784529091529020611165916122c8565b82847f85572f85b2bc590a66fd61ccb26b098a3e1e5be48c230a5cc1f4c1d23603d1e1846040516111969190613726565b60405180910390a350505050565b6111ca604051806060016040528060008152602001600081526020016000151581525090565b506000928352609c602090815260408085209385529281528284206001600160a01b03929092168452908152918190208151606081018352815481526001820154938101939093526002015460ff1615159082015290565b61122a61230c565b6112346000612366565b565b60008481526098602052604090205484906001600160a01b0316331461126e5760405162461bcd60e51b81526004016105ca90613684565b60008351118061127f575060008251115b6112cb5760405162461bcd60e51b815260206004820152601760248201527f656d707479206f6273657276657273206172726179732100000000000000000060448201526064016105ca565b8251156113ae5760005b835181101561134f576000868152609c602090815260408083208884529091528120855161133d9290879085908110611310576113106136bb565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206123b8565b80611347816136e7565b9150506112d5565b5082516000868152609960209081526040808320888452909152902061137491612405565b83857fb1cc0cc3834b00e41fce4d1b26e0683b2457f753ec2683b88651d001476a6e38856040516113a59190613726565b60405180910390a35b8151156114645760005b8251811015611405576000868152609c60209081526040808320888452909152812084516113f39290869085908110611101576111016136bb565b806113fd816136e7565b9150506113b8565b5081516000868152609960209081526040808320888452909152902061142a916122c8565b83857f85572f85b2bc590a66fd61ccb26b098a3e1e5be48c230a5cc1f4c1d23603d1e18460405161145b9190613726565b60405180910390a35b5050505050565b6000838152609c6020908152604080832085845282528083206001600160a01b0385168452909152812060018101541515806114a657508054155b806114b55750600281015460ff165b156114c4576000915050610c0b565b600085815260996020908152604080832087845290915290206114e690612497565b95945050505050565b6114f761230c565b6001600160a01b0381166115485760405162461bcd60e51b8152602060048201526018602482015277696e76616c6964207472656173757279206164647265737360401b60448201526064016105ca565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f2ac12ebf7dfd56173c73b2e43941f0faed1c3f7fb6f959191a4ab4bdd3d32e2191015b60405180910390a15050565b60008181526098602052604090205481906001600160a01b031633146115e25760405162461bcd60e51b81526004016105ca90613684565b6002606554036116045760405162461bcd60e51b81526004016105ca90613773565b60026065556000828152609860205260408120611620906124e9565b9050827f57854ae7fa7dd108a735bb91879e7ef3ba109e004981ca9d6df5f72510ddb7318260405161165491815260200190565b60405180910390a25050600160655550565b60008681526098602052604090205486906001600160a01b0316331461169e5760405162461bcd60e51b81526004016105ca90613684565b85600081116116bf5760405162461bcd60e51b81526004016105ca906137aa565b6002606554036116e15760405162461bcd60e51b81526004016105ca90613773565b600260655560008881526098602052604081209086611700898b613713565b61170a9190613713565b905061171682826125d8565b60006117238b60006126bc565b60008c8152609960209081526040808320848452909152902090915061174c818c8b8d8c61272b565b611789336097546001600160a01b031660646117698760056137cf565b61177391906137ee565b60018801546001600160a01b03169291906127b3565b8651156117eb57600089116117e05760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206f627365727665727320627564676574000000000000000060448201526064016105ca565b6117eb8c838961281e565b604080518c8152602081018c90529081018a905282908d907f078c5efce40e0c0891ebda17cfbf5d7cdd9d5eb4afb16375d39b8243451871e29060600160405180910390a35050600160655550505050505050505050565b60008381526098602052604090205483906001600160a01b0316331461187b5760405162461bcd60e51b81526004016105ca90613684565b61188684848461281e565b50505050565b600054610100900460ff16158080156118ac5750600054600160ff909116105b806118c65750303b1580156118c6575060005460ff166001145b6119295760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105ca565b6000805460ff19166001179055801561194c576000805461ff0019166101001790555b611954612989565b61195c6129b8565b6001600160a01b0382166119ad5760405162461bcd60e51b8152602060048201526018602482015277696e76616c6964207472656173757279206164647265737360401b60448201526064016105ca565b609780546001600160a01b0319166001600160a01b0384161790558015611a0a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161159e565b5050565b60008381526098602052604090205483906001600160a01b03163314611a465760405162461bcd60e51b81526004016105ca90613684565b6000848152609a6020908152604080832086845282528083206001600160a01b038616808552908352818420805460ff19166001179055878452609b835281842087855283528184209084529091529020611aa0906129e7565b60008481526099602090815260408083208684529091529020611ac290612a79565b6040516001600160a01b0383168152839085907f89d75bad6a27d516d326126cd95a5626e99ce9548579494bb6d51f59b9c8878390602001611196565b8060008111611b205760405162461bcd60e51b81526004016105ca906137aa565b600260655403611b425760405162461bcd60e51b81526004016105ca90613773565b60026065556001600160a01b038316611b955760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b60448201526064016105ca565b6000611b9f612ab1565b6000818152609860205260409020909150611bbb908585612b19565b807fe13f31eeb084676e55593cb99c5bef76fadde467d9bc2653f56a4c9c3f3302c633604080516001600160a01b0392831681529188166020830152810186905260600160405180910390a2505060016065555050565b60008481526098602052604090205484906001600160a01b03163314611c4a5760405162461bcd60e51b81526004016105ca90613684565b8160008111611c6b5760405162461bcd60e51b81526004016105ca906137aa565b6001600160a01b038416611cc15760405162461bcd60e51b815260206004820152601e60248201527f636f6c6c61626f7261746f7227732061646472657373206973207a65726f000060448201526064016105ca565b6000868152609b6020908152604080832088845282528083206001600160a01b03881684529091529020611cf59084612b61565b60008681526099602090815260408083208884529091529020611d189084612bd9565b604080516001600160a01b038616815260208101859052869188917f8aa39f8fa6c78a00b31a805b7955eb3e38d4cb7bd4d87c84655269141bd8477e91016109e1565b611d6361230c565b6001600160a01b038116611dc85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ca565b611dd181612366565b50565b8060008160020154118015611dee5750600681015460ff16155b611e0a5760405162461bcd60e51b81526004016105ca90613810565b50600601805460ff19166001179055565b600f830154839060ff16611e415760405162461bcd60e51b81526004016105ca9061383e565b82611e605781846001016000828254611e5a9190613700565b90915550505b600b84018054906000611e7283613867565b919050555050505050565b600f810154819060ff16611ea35760405162461bcd60e51b81526004016105ca9061383e565b5042600e820155600f01805460ff19169055565b6000848152609b6020908152604080832086845282528083206001600160a01b0386168452825280832087845260998352818420878552909252822060058101549192909115801590611f0a5750600084115b15611f6357600b8201546007830154611f24906001613713565b14611f4c57620f4240848360050154611f3d91906137cf565b611f4791906137ee565b611f60565b81600601548260050154611f609190613700565b90505b6000878152609b6020908152604080832089845282528083206001600160a01b03891684529091529020611f979082612ceb565b825460008881526099602090815260408083208a84529091529020611fbc9183612d84565b611fe585828560000154611fd09190613713565b60008a81526098602052604090209190612dce565b8254604080516001600160a01b038816815260208101929092528101829052869088907f53aa87b28abc70f0fb4d2402a35d5e4d91386b5b045ad43d598a715982e32d209060600160405180910390a350505050505050565b6000838152609c6020908152604080832085845282528083206001600160a01b0385168452909152902061207190612e00565b6000838152609960209081526040808320858452909152812061209390612497565b600085815260996020908152604080832087845290915290209091506120b99082612eb2565b60008481526098602052604090206120d2908383612dce565b604080516001600160a01b038416815260208101839052849186917ff791dbe60269baac78be1afe586f70aa816e7a19b3ff88e228ca638e41142dae9101611196565b808260030160008282546121299190613700565b909155505060078201805490600061214083613867565b91905055505050565b600f810154600090829060ff166121725760405162461bcd60e51b81526004016105ca9061383e565b82600d015483600b0154146121c95760405162461bcd60e51b815260206004820152601d60248201527f756e617070726f76656420636f6c6c61626f7261746f7273206c65667400000060448201526064016105ca565b600183015483546121da9190613700565b915082600a01546000036121fa5760038301546121f79083613713565b91505b82600b01546000036122185760058301546122159083613713565b91505b50426009830155600f909101805460ff1916905590565b801561224f57808260030160008282546122499190613700565b90915550505b600882018054906000612140836136e7565b80548190158015906122785750600281015460ff16155b6122b75760405162461bcd60e51b815260206004820152601060248201526f37379039bab1b41037b139b2b93b32b960811b60448201526064016105ca565b50600201805460ff19166001179055565b600f820154829060ff166122ee5760405162461bcd60e51b81526004016105ca9061383e565b8183600a0160008282546123029190613700565b9091555050505050565b6033546001600160a01b031633146112345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ca565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8054156124005760405162461bcd60e51b81526020600482015260166024820152751bd89cd95c9d995c88185b1c9958591e48185919195960521b60448201526064016105ca565b429055565b600f820154829060ff1661242b5760405162461bcd60e51b81526004016105ca9061383e565b600a8284600a015461243d9190613713565b11156124835760405162461bcd60e51b81526020600482015260156024820152741b585e081bd89cd95c9d995c9cc81c995858da1959605a1b60448201526064016105ca565b8183600a0160008282546123029190613713565b600080826004015483600301546124ae9190613700565b9050600083600a015484600301546124c691906137ee565b90506124d38160026137cf565b82106124df57806124e1565b815b949350505050565b6000816006015460001461253f5760405162461bcd60e51b815260206004820152601860248201527f616c72656164792066696e69736865642070726f6a656374000000000000000060448201526064016105ca565b81600801548260070154146125965760405162461bcd60e51b815260206004820152601860248201527f756e66696e6973686564207061636b61676573206c656674000000000000000060448201526064016105ca565b426006830155600382015460028301546000916125b291613700565b90508015610b445782546001840154610b44916001600160a01b03918216911683612ec6565b6006820154156126205760405162461bcd60e51b81526020600482015260136024820152721c1c9bda9958dd081a5cc8199a5b9a5cda1959606a1b60448201526064016105ca565b8082600301546126309190613713565b826002015410156126835760405162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f7567682070726f6a65637420627564676574206c656674000060448201526064016105ca565b808260030160008282546126979190613713565b9250508190555060018260070160008282546126b39190613713565b90915550505050565b60006126c782612ef6565b600084815260996020908152604080832084845290915290206008015490915015610b445760405162461bcd60e51b8152602060048201526014602482015273191d5c1b1a58d85d19481c1858dad859d9481a5960621b60448201526064016105ca565b80600010801561273c5750600a8111155b6127885760405162461bcd60e51b815260206004820152601d60248201527f696e636f727265637420636f6c6c61626f7261746f7273206c696d697400000060448201526064016105ca565b92845560038401919091556005830155600c820155426008820155600f01805460ff19166001179055565b6040516001600160a01b03808516602483015283166044820152606481018290526118869085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612f4e565b60008151116128685760405162461bcd60e51b8152602060048201526016602482015275656d707479206f62736572766572732061727261792160501b60448201526064016105ca565b60005b81518110156129335760006001600160a01b0316828281518110612891576128916136bb565b60200260200101516001600160a01b0316036128ef5760405162461bcd60e51b815260206004820152601860248201527f7a65726f206f627365727665722773206164647265737321000000000000000060448201526064016105ca565b6000848152609c60209081526040808320868452909152812083516129219290859085908110611310576113106136bb565b8061292b816136e7565b91505061286b565b5080516000848152609960209081526040808320868452909152902061295891612405565b81837fb1cc0cc3834b00e41fce4d1b26e0683b2457f753ec2683b88651d001476a6e38836040516106549190613726565b600054610100900460ff166129b05760405162461bcd60e51b81526004016105ca9061387e565b611234613020565b600054610100900460ff166129df5760405162461bcd60e51b81526004016105ca9061387e565b611234613050565b8060008160020154118015612a015750600681015460ff16155b612a1d5760405162461bcd60e51b81526004016105ca90613810565b600382015415612a6f5760405162461bcd60e51b815260206004820152601d60248201527f636f6c6c61626f7261746f7220616c726561647920617070726f76656400000060448201526064016105ca565b5042600390910155565b600f810154819060ff16612a9f5760405162461bcd60e51b81526004016105ca9061383e565b600d82018054906000612140836136e7565b6000612abd6000612ef6565b60008181526098602052604090206005015490915015612b165760405162461bcd60e51b8152602060048201526014602482015273191d5c1b1a58d85d19481c1c9bda9958dd081a5960621b60448201526064016105ca565b90565b82546001600160a01b03199081163390811785556001850180546001600160a01b03861693168317905560028501839055426005860155612b5c919030846127b3565b505050565b600682015460ff1680612b7657506002820154155b612bc25760405162461bcd60e51b815260206004820152601a60248201527f636f6c6c61626f7261746f7220616c726561647920616464656400000000000060448201526064016105ca565b815560068101805460ff1916905542600290910155565b600f820154829060ff16612bff5760405162461bcd60e51b81526004016105ca9061383e565b818360010154612c0f9190613713565b83541015612c5f5760405162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f756768207061636b61676520627564676574206c656674000060448201526064016105ca565b82600c015483600b015410612cb65760405162461bcd60e51b815260206004820152601b60248201527f636f6c6c61626f7261746f7273206c696d69742072656163686564000000000060448201526064016105ca565b81836001016000828254612cca9190613713565b9091555050600b83018054906000612ce1836136e7565b9190505550505050565b8160008160020154118015612d055750600681015460ff16155b612d215760405162461bcd60e51b81526004016105ca90613810565b600483015415612d695760405162461bcd60e51b81526020600482015260136024820152721c995dd85c9908185b1c9958591e481c185a59606a1b60448201526064016105ca565b4260048401558115612b5c5750600182015542600590910155565b81836002016000828254612d989190613713565b90915550508015612b5c5780836006016000828254612db79190613713565b9091555050600783018054906000612ce1836136e7565b80836004016000828254612de29190613713565b90915550506001830154612b5c906001600160a01b03168383612ec6565b8054819015801590612e175750600281015460ff16155b612e565760405162461bcd60e51b815260206004820152601060248201526f37379039bab1b41037b139b2b93b32b960811b60448201526064016105ca565b600182015415612ea85760405162461bcd60e51b815260206004820152601960248201527f6f627365727665722066656520616c726561647920706169640000000000000060448201526064016105ca565b5042600190910155565b808260040160008282546126b39190613713565b6040516001600160a01b038316602482015260448101829052612b5c90849063a9059cbb60e01b906064016127e7565b600033612f04600143613700565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b6000612fa3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661307e9092919063ffffffff16565b805190915015612b5c5780806020019051810190612fc191906138c9565b612b5c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105ca565b600054610100900460ff166130475760405162461bcd60e51b81526004016105ca9061387e565b61123433612366565b600054610100900460ff166130775760405162461bcd60e51b81526004016105ca9061387e565b6001606555565b60606124e18484600085856001600160a01b0385163b6130e05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105ca565b600080866001600160a01b031685876040516130fc919061390a565b60006040518083038185875af1925050503d8060008114613139576040519150601f19603f3d011682016040523d82523d6000602084013e61313e565b606091505b509150915061314e828286613159565b979650505050505050565b60608315613168575081610c0b565b8251156131785782518084602001fd5b8160405162461bcd60e51b81526004016105ca9190613926565b600080604083850312156131a557600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156131f3576131f36131b4565b604052919050565b600067ffffffffffffffff821115613215576132156131b4565b5060051b60200190565b80356001600160a01b038116811461323657600080fd5b919050565b600082601f83011261324c57600080fd5b8135602061326161325c836131fb565b6131ca565b82815260059290921b8401810191818101908684111561328057600080fd5b8286015b848110156132a2576132958161321f565b8352918301918301613284565b509695505050505050565b8015158114611dd157600080fd5b600080600080600060a086880312156132d357600080fd5b8535945060208601359350604086013567ffffffffffffffff808211156132f957600080fd5b61330589838a0161323b565b9450606088013591508082111561331b57600080fd5b506133288882890161323b565b9250506080860135613339816132ad565b809150509295509295909350565b6000806000806080858703121561335d57600080fd5b84359350602085013592506133746040860161321f565b91506060850135613384816132ad565b939692955090935050565b6000806000606084860312156133a457600080fd5b83359250602084013591506133bb6040850161321f565b90509250925092565b6000602082840312156133d657600080fd5b5035919050565b600080600080600060a086880312156133f557600080fd5b853594506020808701359450604087013567ffffffffffffffff8082111561341c57600080fd5b6134288a838b0161323b565b9550606089013591508082111561343e57600080fd5b61344a8a838b0161323b565b9450608089013591508082111561346057600080fd5b508701601f8101891361347257600080fd5b803561348061325c826131fb565b81815260059190911b8201830190838101908b83111561349f57600080fd5b928401925b828410156134bd578335825292840192908401906134a4565b80955050505050509295509295909350565b6000806000606084860312156134e457600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561350957600080fd5b6135158682870161323b565b9150509250925092565b6000806000806080858703121561353557600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561355b57600080fd5b6135678883890161323b565b9350606087013591508082111561357d57600080fd5b5061358a8782880161323b565b91505092959194509250565b6000602082840312156135a857600080fd5b610c0b8261321f565b60008060008060008060c087890312156135ca57600080fd5b863595506020870135945060408701359350606087013592506080870135915060a087013567ffffffffffffffff81111561360457600080fd5b61361089828a0161323b565b9150509295509295509295565b6000806040838503121561363057600080fd5b6136398361321f565b946020939093013593505050565b6000806000806080858703121561365d57600080fd5b84359350602085013592506136746040860161321f565b9396929550929360600135925050565b6020808252601f908201527f63616c6c6572206973206e6f742070726f6a65637420696e69746961746f7200604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016136f9576136f96136d1565b5060010190565b81810381811115610b4457610b446136d1565b80820180821115610b4457610b446136d1565b6020808252825182820181905260009190848201906040850190845b818110156137675783516001600160a01b031683529284019291840191600101613742565b50909695505050505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600b908201526a16995c9bc8185b5bdd5b9d60aa1b604082015260600190565b60008160001904831182151516156137e9576137e96136d1565b500290565b60008261380b57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526014908201527337379039bab1b41031b7b63630b137b930ba37b960611b604082015260600190565b6020808252600f908201526e6e6f2073756368207061636b61676560881b604082015260600190565b600081613876576138766136d1565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156138db57600080fd5b8151610c0b816132ad565b60005b838110156139015781810151838201526020016138e9565b50506000910152565b6000825161391c8184602087016138e6565b9190910192915050565b60208152600082518060208401526139458160408501602087016138e6565b601f01601f1916919091016040019291505056fea26469706673582212206fbfdd8250baaf0738cdc9fbe9dcc1cc69f53e27eb017c3706658ddfb1219f8d64736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106101735760003560e01c806371af530b116100de578063be06555e11610097578063e1d8451411610071578063e1d8451414610519578063e82d657214610523578063ec104ff114610536578063f2fde38b1461054957600080fd5b8063be06555e146104e0578063c4d66de8146104f3578063dcce114e1461050657600080fd5b806371af530b146104625780637cbe62c6146104755780637f51bb1f1461049657806385ceab29146104a95780638da5cb5b146104bc578063b2b57114146104cd57600080fd5b80632926aa80116101305780632926aa80146103785780633a7efc841461038b57806358ff3e471461039e578063590ab7db146103f857806361d027b31461042f578063715018a61461045a57600080fd5b806303a1fc2214610178578063085f8a9c1461018d5780630eae9d88146101a057806320000478146101b35780632008002e1461028557806323d683e7146102f0575b600080fd5b61018b610186366004613192565b61055c565b005b61018b61019b3660046132bb565b610661565b61018b6101ae366004613347565b610889565b6101c66101c1366004613192565b6109f1565b60405161027c9190815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018080830151908201526101a080830151908201526101c080830151908201526101e0918201511515918101919091526102000190565b60405180910390f35b61029861029336600461338f565b610b4a565b60405161027c9190600060e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015292915050565b6103036102fe3660046133c4565b610c12565b60405161027c919081516001600160a01b0390811682526020808401519091169082015260408083015190820152606080830151908201526080808301519082015260a0828101519082015260c0808301519082015260e0808301519082015261010091820151918101919091526101200190565b61018b6103863660046133dd565b610cf8565b61018b6103993660046134cf565b611041565b6103e36103ac36600461338f565b6000928352609b602090815260408085209385529281528284206001600160a01b0392909216845252902080546001909101549091565b6040805192835260208301919091520161027c565b61040b61040636600461338f565b6111a4565b6040805182518152602080840151908201529181015115159082015260600161027c565b609754610442906001600160a01b031681565b6040516001600160a01b03909116815260200161027c565b61018b611222565b61018b61047036600461351f565b611236565b61048861048336600461338f565b61146b565b60405190815260200161027c565b61018b6104a4366004613596565b6114ef565b61018b6104b73660046133c4565b6115aa565b6033546001600160a01b0316610442565b61018b6104db3660046135b1565b611666565b61018b6104ee3660046134cf565b611843565b61018b610501366004613596565b61188c565b61018b61051436600461338f565b611a0e565b610488620f424081565b61018b61053136600461361d565b611aff565b61018b610544366004613647565b611c12565b61018b610557366004613596565b611d5b565b6000828152609a60209081526040808320848452825280832033845290915290205460ff16156105d35760405162461bcd60e51b815260206004820152601e60248201527f636f6c6c61626f7261746f7220617070726f76656420616c726561647921000060448201526064015b60405180910390fd5b6000828152609b60209081526040808320848452825280832033845290915290206105fd81611dd4565b80546000848152609960209081526040808320868452909152812061062492909190611e1b565b604051338152829084907f1810672a3dad8f995260ba0777de0e36f462980ce02a3951804f83aac9c2d455906020015b60405180910390a3505050565b60008581526098602052604090205485906001600160a01b031633146106995760405162461bcd60e51b81526004016105ca90613684565b60008681526099602090815260408083208884529091529020600b8101548551146107065760405162461bcd60e51b815260206004820152601c60248201527f696e76616c696420636f6c6c61626f7261746f7273206c656e6774680000000060448201526064016105ca565b80600a015484511461075a5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206f6273657276657273206c656e677468000000000000000060448201526064016105ca565b61076381611e7d565b82156107f25760005b85518110156107ad5761079b888888848151811061078c5761078c6136bb565b60200260200101516000611eb7565b806107a5816136e7565b91505061076c565b5060005b84518110156107f0576107de88888784815181106107d1576107d16136bb565b602002602001015161203e565b806107e8816136e7565b9150506107b1565b505b6005810154600282015482546000929161080b91613700565b6108159190613713565b90508160040154826003015461082b9190613700565b6108359082613713565b60008981526098602052604090209091506108509082612115565b8087897f56829e4c362b83a2633cd58ab80f95a4c661582416ca0dd74cf6844198ef939060405160405180910390a45050505050505050565b60008481526098602052604090205484906001600160a01b031633146108c15760405162461bcd60e51b81526004016105ca90613684565b6000858152609a6020908152604080832087845282528083206001600160a01b038716845290915290205460ff161561093c5760405162461bcd60e51b815260206004820152601e60248201527f636f6c6c61626f7261746f7220617070726f76656420616c726561647921000060448201526064016105ca565b6000858152609b6020908152604080832087845282528083206001600160a01b038716845290915290208215610979576109798686866000611eb7565b61098281611dd4565b8054600087815260996020908152604080832089845290915290206109a8918590611e1b565b6040516001600160a01b0385168152859087907f1810672a3dad8f995260ba0777de0e36f462980ce02a3951804f83aac9c2d455906020015b60405180910390a3505050505050565b610a736040518061020001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b506000828152609960209081526040808320848452825291829020825161020081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b820154610160820152600c820154610180820152600d8201546101a0820152600e8201546101c0820152600f9091015460ff1615156101e08201525b92915050565b610b8c6040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b506000838152609b6020908152604080832085845282528083206001600160a01b0385168452825291829020825160e081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a082015260069091015460ff16151560c08201525b9392505050565b610c7360405180610120016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060009081526098602090815260409182902082516101208101845281546001600160a01b039081168252600183015416928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260089091015461010082015290565b60008581526098602052604090205485906001600160a01b03163314610d305760405162461bcd60e51b81526004016105ca90613684565b60008681526099602090815260408083208884529091529020600b810154855114610d9d5760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420636f6c6c61626f7261746f7273206c69737400000000000060448201526064016105ca565b8251855114610dee5760405162461bcd60e51b815260206004820152601760248201527f61727261797327206c656e677468206d69736d6174636800000000000000000060448201526064016105ca565b80600a0154845114610e3b5760405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a59081bd89cd95c9d995c9cc81b1a5cdd60521b60448201526064016105ca565b6000610e4682612149565b6000898152609860205260409020909150610e61908261222f565b60008260050154118015610e76575060008651115b15610f75576000805b8551811015610f20576000868281518110610e9c57610e9c6136bb565b602002602001015111610ee75760405162461bcd60e51b8152602060048201526013602482015272696e76616c696420626f6e75732073636f726560681b60448201526064016105ca565b858181518110610ef957610ef96136bb565b602002602001015182610f0c9190613713565b915080610f18816136e7565b915050610e7f565b50620f42408114610f735760405162461bcd60e51b815260206004820152601c60248201527f696e636f727265637420746f74616c20626f6e75732073636f7265730000000060448201526064016105ca565b505b60005b8651811015610fd157610fbf8989898481518110610f9857610f986136bb565b6020026020010151888581518110610fb257610fb26136bb565b6020026020010151611eb7565b80610fc9816136e7565b915050610f78565b5060005b855181101561100757610ff589898884815181106107d1576107d16136bb565b80610fff816136e7565b915050610fd5565b508087897fca0673658d6abd07a7992b1c692276e95e5693b83c44ebcbc0f5661add8f274f60405160405180910390a45050505050505050565b60008381526098602052604090205483906001600160a01b031633146110795760405162461bcd60e51b81526004016105ca90613684565b60008251116110c35760405162461bcd60e51b8152602060048201526016602482015275656d707479206f62736572766572732061727261792160501b60448201526064016105ca565b60005b8251811015611140576000858152609c602090815260408083208784529091528120845161112e9290869085908110611101576111016136bb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020612261565b80611138816136e7565b9150506110c6565b50815160008581526099602090815260408083208784529091529020611165916122c8565b82847f85572f85b2bc590a66fd61ccb26b098a3e1e5be48c230a5cc1f4c1d23603d1e1846040516111969190613726565b60405180910390a350505050565b6111ca604051806060016040528060008152602001600081526020016000151581525090565b506000928352609c602090815260408085209385529281528284206001600160a01b03929092168452908152918190208151606081018352815481526001820154938101939093526002015460ff1615159082015290565b61122a61230c565b6112346000612366565b565b60008481526098602052604090205484906001600160a01b0316331461126e5760405162461bcd60e51b81526004016105ca90613684565b60008351118061127f575060008251115b6112cb5760405162461bcd60e51b815260206004820152601760248201527f656d707479206f6273657276657273206172726179732100000000000000000060448201526064016105ca565b8251156113ae5760005b835181101561134f576000868152609c602090815260408083208884529091528120855161133d9290879085908110611310576113106136bb565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206123b8565b80611347816136e7565b9150506112d5565b5082516000868152609960209081526040808320888452909152902061137491612405565b83857fb1cc0cc3834b00e41fce4d1b26e0683b2457f753ec2683b88651d001476a6e38856040516113a59190613726565b60405180910390a35b8151156114645760005b8251811015611405576000868152609c60209081526040808320888452909152812084516113f39290869085908110611101576111016136bb565b806113fd816136e7565b9150506113b8565b5081516000868152609960209081526040808320888452909152902061142a916122c8565b83857f85572f85b2bc590a66fd61ccb26b098a3e1e5be48c230a5cc1f4c1d23603d1e18460405161145b9190613726565b60405180910390a35b5050505050565b6000838152609c6020908152604080832085845282528083206001600160a01b0385168452909152812060018101541515806114a657508054155b806114b55750600281015460ff165b156114c4576000915050610c0b565b600085815260996020908152604080832087845290915290206114e690612497565b95945050505050565b6114f761230c565b6001600160a01b0381166115485760405162461bcd60e51b8152602060048201526018602482015277696e76616c6964207472656173757279206164647265737360401b60448201526064016105ca565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f2ac12ebf7dfd56173c73b2e43941f0faed1c3f7fb6f959191a4ab4bdd3d32e2191015b60405180910390a15050565b60008181526098602052604090205481906001600160a01b031633146115e25760405162461bcd60e51b81526004016105ca90613684565b6002606554036116045760405162461bcd60e51b81526004016105ca90613773565b60026065556000828152609860205260408120611620906124e9565b9050827f57854ae7fa7dd108a735bb91879e7ef3ba109e004981ca9d6df5f72510ddb7318260405161165491815260200190565b60405180910390a25050600160655550565b60008681526098602052604090205486906001600160a01b0316331461169e5760405162461bcd60e51b81526004016105ca90613684565b85600081116116bf5760405162461bcd60e51b81526004016105ca906137aa565b6002606554036116e15760405162461bcd60e51b81526004016105ca90613773565b600260655560008881526098602052604081209086611700898b613713565b61170a9190613713565b905061171682826125d8565b60006117238b60006126bc565b60008c8152609960209081526040808320848452909152902090915061174c818c8b8d8c61272b565b611789336097546001600160a01b031660646117698760056137cf565b61177391906137ee565b60018801546001600160a01b03169291906127b3565b8651156117eb57600089116117e05760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206f627365727665727320627564676574000000000000000060448201526064016105ca565b6117eb8c838961281e565b604080518c8152602081018c90529081018a905282908d907f078c5efce40e0c0891ebda17cfbf5d7cdd9d5eb4afb16375d39b8243451871e29060600160405180910390a35050600160655550505050505050505050565b60008381526098602052604090205483906001600160a01b0316331461187b5760405162461bcd60e51b81526004016105ca90613684565b61188684848461281e565b50505050565b600054610100900460ff16158080156118ac5750600054600160ff909116105b806118c65750303b1580156118c6575060005460ff166001145b6119295760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105ca565b6000805460ff19166001179055801561194c576000805461ff0019166101001790555b611954612989565b61195c6129b8565b6001600160a01b0382166119ad5760405162461bcd60e51b8152602060048201526018602482015277696e76616c6964207472656173757279206164647265737360401b60448201526064016105ca565b609780546001600160a01b0319166001600160a01b0384161790558015611a0a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161159e565b5050565b60008381526098602052604090205483906001600160a01b03163314611a465760405162461bcd60e51b81526004016105ca90613684565b6000848152609a6020908152604080832086845282528083206001600160a01b038616808552908352818420805460ff19166001179055878452609b835281842087855283528184209084529091529020611aa0906129e7565b60008481526099602090815260408083208684529091529020611ac290612a79565b6040516001600160a01b0383168152839085907f89d75bad6a27d516d326126cd95a5626e99ce9548579494bb6d51f59b9c8878390602001611196565b8060008111611b205760405162461bcd60e51b81526004016105ca906137aa565b600260655403611b425760405162461bcd60e51b81526004016105ca90613773565b60026065556001600160a01b038316611b955760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b60448201526064016105ca565b6000611b9f612ab1565b6000818152609860205260409020909150611bbb908585612b19565b807fe13f31eeb084676e55593cb99c5bef76fadde467d9bc2653f56a4c9c3f3302c633604080516001600160a01b0392831681529188166020830152810186905260600160405180910390a2505060016065555050565b60008481526098602052604090205484906001600160a01b03163314611c4a5760405162461bcd60e51b81526004016105ca90613684565b8160008111611c6b5760405162461bcd60e51b81526004016105ca906137aa565b6001600160a01b038416611cc15760405162461bcd60e51b815260206004820152601e60248201527f636f6c6c61626f7261746f7227732061646472657373206973207a65726f000060448201526064016105ca565b6000868152609b6020908152604080832088845282528083206001600160a01b03881684529091529020611cf59084612b61565b60008681526099602090815260408083208884529091529020611d189084612bd9565b604080516001600160a01b038616815260208101859052869188917f8aa39f8fa6c78a00b31a805b7955eb3e38d4cb7bd4d87c84655269141bd8477e91016109e1565b611d6361230c565b6001600160a01b038116611dc85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ca565b611dd181612366565b50565b8060008160020154118015611dee5750600681015460ff16155b611e0a5760405162461bcd60e51b81526004016105ca90613810565b50600601805460ff19166001179055565b600f830154839060ff16611e415760405162461bcd60e51b81526004016105ca9061383e565b82611e605781846001016000828254611e5a9190613700565b90915550505b600b84018054906000611e7283613867565b919050555050505050565b600f810154819060ff16611ea35760405162461bcd60e51b81526004016105ca9061383e565b5042600e820155600f01805460ff19169055565b6000848152609b6020908152604080832086845282528083206001600160a01b0386168452825280832087845260998352818420878552909252822060058101549192909115801590611f0a5750600084115b15611f6357600b8201546007830154611f24906001613713565b14611f4c57620f4240848360050154611f3d91906137cf565b611f4791906137ee565b611f60565b81600601548260050154611f609190613700565b90505b6000878152609b6020908152604080832089845282528083206001600160a01b03891684529091529020611f979082612ceb565b825460008881526099602090815260408083208a84529091529020611fbc9183612d84565b611fe585828560000154611fd09190613713565b60008a81526098602052604090209190612dce565b8254604080516001600160a01b038816815260208101929092528101829052869088907f53aa87b28abc70f0fb4d2402a35d5e4d91386b5b045ad43d598a715982e32d209060600160405180910390a350505050505050565b6000838152609c6020908152604080832085845282528083206001600160a01b0385168452909152902061207190612e00565b6000838152609960209081526040808320858452909152812061209390612497565b600085815260996020908152604080832087845290915290209091506120b99082612eb2565b60008481526098602052604090206120d2908383612dce565b604080516001600160a01b038416815260208101839052849186917ff791dbe60269baac78be1afe586f70aa816e7a19b3ff88e228ca638e41142dae9101611196565b808260030160008282546121299190613700565b909155505060078201805490600061214083613867565b91905055505050565b600f810154600090829060ff166121725760405162461bcd60e51b81526004016105ca9061383e565b82600d015483600b0154146121c95760405162461bcd60e51b815260206004820152601d60248201527f756e617070726f76656420636f6c6c61626f7261746f7273206c65667400000060448201526064016105ca565b600183015483546121da9190613700565b915082600a01546000036121fa5760038301546121f79083613713565b91505b82600b01546000036122185760058301546122159083613713565b91505b50426009830155600f909101805460ff1916905590565b801561224f57808260030160008282546122499190613700565b90915550505b600882018054906000612140836136e7565b80548190158015906122785750600281015460ff16155b6122b75760405162461bcd60e51b815260206004820152601060248201526f37379039bab1b41037b139b2b93b32b960811b60448201526064016105ca565b50600201805460ff19166001179055565b600f820154829060ff166122ee5760405162461bcd60e51b81526004016105ca9061383e565b8183600a0160008282546123029190613700565b9091555050505050565b6033546001600160a01b031633146112345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ca565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8054156124005760405162461bcd60e51b81526020600482015260166024820152751bd89cd95c9d995c88185b1c9958591e48185919195960521b60448201526064016105ca565b429055565b600f820154829060ff1661242b5760405162461bcd60e51b81526004016105ca9061383e565b600a8284600a015461243d9190613713565b11156124835760405162461bcd60e51b81526020600482015260156024820152741b585e081bd89cd95c9d995c9cc81c995858da1959605a1b60448201526064016105ca565b8183600a0160008282546123029190613713565b600080826004015483600301546124ae9190613700565b9050600083600a015484600301546124c691906137ee565b90506124d38160026137cf565b82106124df57806124e1565b815b949350505050565b6000816006015460001461253f5760405162461bcd60e51b815260206004820152601860248201527f616c72656164792066696e69736865642070726f6a656374000000000000000060448201526064016105ca565b81600801548260070154146125965760405162461bcd60e51b815260206004820152601860248201527f756e66696e6973686564207061636b61676573206c656674000000000000000060448201526064016105ca565b426006830155600382015460028301546000916125b291613700565b90508015610b445782546001840154610b44916001600160a01b03918216911683612ec6565b6006820154156126205760405162461bcd60e51b81526020600482015260136024820152721c1c9bda9958dd081a5cc8199a5b9a5cda1959606a1b60448201526064016105ca565b8082600301546126309190613713565b826002015410156126835760405162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f7567682070726f6a65637420627564676574206c656674000060448201526064016105ca565b808260030160008282546126979190613713565b9250508190555060018260070160008282546126b39190613713565b90915550505050565b60006126c782612ef6565b600084815260996020908152604080832084845290915290206008015490915015610b445760405162461bcd60e51b8152602060048201526014602482015273191d5c1b1a58d85d19481c1858dad859d9481a5960621b60448201526064016105ca565b80600010801561273c5750600a8111155b6127885760405162461bcd60e51b815260206004820152601d60248201527f696e636f727265637420636f6c6c61626f7261746f7273206c696d697400000060448201526064016105ca565b92845560038401919091556005830155600c820155426008820155600f01805460ff19166001179055565b6040516001600160a01b03808516602483015283166044820152606481018290526118869085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612f4e565b60008151116128685760405162461bcd60e51b8152602060048201526016602482015275656d707479206f62736572766572732061727261792160501b60448201526064016105ca565b60005b81518110156129335760006001600160a01b0316828281518110612891576128916136bb565b60200260200101516001600160a01b0316036128ef5760405162461bcd60e51b815260206004820152601860248201527f7a65726f206f627365727665722773206164647265737321000000000000000060448201526064016105ca565b6000848152609c60209081526040808320868452909152812083516129219290859085908110611310576113106136bb565b8061292b816136e7565b91505061286b565b5080516000848152609960209081526040808320868452909152902061295891612405565b81837fb1cc0cc3834b00e41fce4d1b26e0683b2457f753ec2683b88651d001476a6e38836040516106549190613726565b600054610100900460ff166129b05760405162461bcd60e51b81526004016105ca9061387e565b611234613020565b600054610100900460ff166129df5760405162461bcd60e51b81526004016105ca9061387e565b611234613050565b8060008160020154118015612a015750600681015460ff16155b612a1d5760405162461bcd60e51b81526004016105ca90613810565b600382015415612a6f5760405162461bcd60e51b815260206004820152601d60248201527f636f6c6c61626f7261746f7220616c726561647920617070726f76656400000060448201526064016105ca565b5042600390910155565b600f810154819060ff16612a9f5760405162461bcd60e51b81526004016105ca9061383e565b600d82018054906000612140836136e7565b6000612abd6000612ef6565b60008181526098602052604090206005015490915015612b165760405162461bcd60e51b8152602060048201526014602482015273191d5c1b1a58d85d19481c1c9bda9958dd081a5960621b60448201526064016105ca565b90565b82546001600160a01b03199081163390811785556001850180546001600160a01b03861693168317905560028501839055426005860155612b5c919030846127b3565b505050565b600682015460ff1680612b7657506002820154155b612bc25760405162461bcd60e51b815260206004820152601a60248201527f636f6c6c61626f7261746f7220616c726561647920616464656400000000000060448201526064016105ca565b815560068101805460ff1916905542600290910155565b600f820154829060ff16612bff5760405162461bcd60e51b81526004016105ca9061383e565b818360010154612c0f9190613713565b83541015612c5f5760405162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f756768207061636b61676520627564676574206c656674000060448201526064016105ca565b82600c015483600b015410612cb65760405162461bcd60e51b815260206004820152601b60248201527f636f6c6c61626f7261746f7273206c696d69742072656163686564000000000060448201526064016105ca565b81836001016000828254612cca9190613713565b9091555050600b83018054906000612ce1836136e7565b9190505550505050565b8160008160020154118015612d055750600681015460ff16155b612d215760405162461bcd60e51b81526004016105ca90613810565b600483015415612d695760405162461bcd60e51b81526020600482015260136024820152721c995dd85c9908185b1c9958591e481c185a59606a1b60448201526064016105ca565b4260048401558115612b5c5750600182015542600590910155565b81836002016000828254612d989190613713565b90915550508015612b5c5780836006016000828254612db79190613713565b9091555050600783018054906000612ce1836136e7565b80836004016000828254612de29190613713565b90915550506001830154612b5c906001600160a01b03168383612ec6565b8054819015801590612e175750600281015460ff16155b612e565760405162461bcd60e51b815260206004820152601060248201526f37379039bab1b41037b139b2b93b32b960811b60448201526064016105ca565b600182015415612ea85760405162461bcd60e51b815260206004820152601960248201527f6f627365727665722066656520616c726561647920706169640000000000000060448201526064016105ca565b5042600190910155565b808260040160008282546126b39190613713565b6040516001600160a01b038316602482015260448101829052612b5c90849063a9059cbb60e01b906064016127e7565b600033612f04600143613700565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b6000612fa3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661307e9092919063ffffffff16565b805190915015612b5c5780806020019051810190612fc191906138c9565b612b5c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105ca565b600054610100900460ff166130475760405162461bcd60e51b81526004016105ca9061387e565b61123433612366565b600054610100900460ff166130775760405162461bcd60e51b81526004016105ca9061387e565b6001606555565b60606124e18484600085856001600160a01b0385163b6130e05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105ca565b600080866001600160a01b031685876040516130fc919061390a565b60006040518083038185875af1925050503d8060008114613139576040519150601f19603f3d011682016040523d82523d6000602084013e61313e565b606091505b509150915061314e828286613159565b979650505050505050565b60608315613168575081610c0b565b8251156131785782518084602001fd5b8160405162461bcd60e51b81526004016105ca9190613926565b600080604083850312156131a557600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156131f3576131f36131b4565b604052919050565b600067ffffffffffffffff821115613215576132156131b4565b5060051b60200190565b80356001600160a01b038116811461323657600080fd5b919050565b600082601f83011261324c57600080fd5b8135602061326161325c836131fb565b6131ca565b82815260059290921b8401810191818101908684111561328057600080fd5b8286015b848110156132a2576132958161321f565b8352918301918301613284565b509695505050505050565b8015158114611dd157600080fd5b600080600080600060a086880312156132d357600080fd5b8535945060208601359350604086013567ffffffffffffffff808211156132f957600080fd5b61330589838a0161323b565b9450606088013591508082111561331b57600080fd5b506133288882890161323b565b9250506080860135613339816132ad565b809150509295509295909350565b6000806000806080858703121561335d57600080fd5b84359350602085013592506133746040860161321f565b91506060850135613384816132ad565b939692955090935050565b6000806000606084860312156133a457600080fd5b83359250602084013591506133bb6040850161321f565b90509250925092565b6000602082840312156133d657600080fd5b5035919050565b600080600080600060a086880312156133f557600080fd5b853594506020808701359450604087013567ffffffffffffffff8082111561341c57600080fd5b6134288a838b0161323b565b9550606089013591508082111561343e57600080fd5b61344a8a838b0161323b565b9450608089013591508082111561346057600080fd5b508701601f8101891361347257600080fd5b803561348061325c826131fb565b81815260059190911b8201830190838101908b83111561349f57600080fd5b928401925b828410156134bd578335825292840192908401906134a4565b80955050505050509295509295909350565b6000806000606084860312156134e457600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561350957600080fd5b6135158682870161323b565b9150509250925092565b6000806000806080858703121561353557600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561355b57600080fd5b6135678883890161323b565b9350606087013591508082111561357d57600080fd5b5061358a8782880161323b565b91505092959194509250565b6000602082840312156135a857600080fd5b610c0b8261321f565b60008060008060008060c087890312156135ca57600080fd5b863595506020870135945060408701359350606087013592506080870135915060a087013567ffffffffffffffff81111561360457600080fd5b61361089828a0161323b565b9150509295509295509295565b6000806040838503121561363057600080fd5b6136398361321f565b946020939093013593505050565b6000806000806080858703121561365d57600080fd5b84359350602085013592506136746040860161321f565b9396929550929360600135925050565b6020808252601f908201527f63616c6c6572206973206e6f742070726f6a65637420696e69746961746f7200604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016136f9576136f96136d1565b5060010190565b81810381811115610b4457610b446136d1565b80820180821115610b4457610b446136d1565b6020808252825182820181905260009190848201906040850190845b818110156137675783516001600160a01b031683529284019291840191600101613742565b50909695505050505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600b908201526a16995c9bc8185b5bdd5b9d60aa1b604082015260600190565b60008160001904831182151516156137e9576137e96136d1565b500290565b60008261380b57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526014908201527337379039bab1b41031b7b63630b137b930ba37b960611b604082015260600190565b6020808252600f908201526e6e6f2073756368207061636b61676560881b604082015260600190565b600081613876576138766136d1565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156138db57600080fd5b8151610c0b816132ad565b60005b838110156139015781810151838201526020016138e9565b50506000910152565b6000825161391c8184602087016138e6565b9190910192915050565b60208152600082518060208401526139458160408501602087016138e6565b601f01601f1916919091016040019291505056fea26469706673582212206fbfdd8250baaf0738cdc9fbe9dcc1cc69f53e27eb017c3706658ddfb1219f8d64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/TokenFactory.sol:TokenFactory": {"srcmap": "619:2543:38:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "619:2543:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1524:293;;;;;;:::i;:::-;;:::i;:::-;;2071:101:0;;;:::i;2751:409:38:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2170:32:48;;;2152:51;;2140:2;2125:18;2751:409:38;;;;;;;1441:85:0;1513:6;;-1:-1:-1;;;;;1513:6:0;1441:85;;776:26:38;;;;;-1:-1:-1;;;;;776:26:38;;;934:35;;;;;-1:-1:-1;;;;;934:35:38;;;1112:254;;;;;;:::i;:::-;;:::i;2108:290::-;;;;;;:::i;:::-;;:::i;2321:198:0:-;;;;;;:::i;:::-;;:::i;1524:293:38:-;1334:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;1607:26:38;::::1;1599:71;;;::::0;-1:-1:-1;;;1599:71:38;;3530:2:48;1599:71:38::1;::::0;::::1;3512:21:48::0;;;3549:18;;;3542:30;3608:34;3588:18;;;3581:62;3660:18;;1599:71:38::1;;;;;;;;;1705:11;::::0;;-1:-1:-1;;;;;1726:26:38;;::::1;-1:-1:-1::0;;;;;;1726:26:38;::::1;::::0;::::1;::::0;;;1767:43:::1;::::0;1705:11;::::1;::::0;1726:26;1705:11;;1767:43:::1;::::0;1680:22:::1;::::0;1767:43:::1;1589:228;1524:293:::0;:::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;2751:409:38:-;2879:11;;2852:7;;-1:-1:-1;;;;;2879:11:38;2871:70;;;;-1:-1:-1;;;2871:70:38;;3891:2:48;2871:70:38;;;3873:21:48;;;3910:18;;;3903:30;3969:34;3949:18;;;3942:62;4021:18;;2871:70:38;3689:356:48;2871:70:38;3001:17;;2951:15;;2980:40;;-1:-1:-1;;;;;3001:17:38;2980:12;:40::i;:::-;3047:11;;3031:50;;-1:-1:-1;;;3031:50:38;;2951:70;;-1:-1:-1;;;;;;3031:15:38;;;;;;:50;;3047:11;;3060:5;;3067:7;;3076:4;;3031:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3097:26:38;;-1:-1:-1;;;;;3097:26:38;;;-1:-1:-1;3097:26:38;;-1:-1:-1;3097:26:38;;;3148:4;2751:409;-1:-1:-1;;;;2751:409:38:o;1112:254::-;3111:19:1;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:1;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:1;1476:19:11;:23;;;3219:66:1;;-1:-1:-1;3268:12:1;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:1;;5330:2:48;3157:201:1;;;5312:21:48;5369:2;5349:18;;;5342:30;5408:34;5388:18;;;5381:62;-1:-1:-1;;;5459:18:48;;;5452:44;5513:19;;3157:201:1;5128:410:48;3157:201:1;3368:12;:16;;-1:-1:-1;;3368:16:1;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:1;;;;;3394:65;1185:16:38::1;:14;:16::i;:::-;1220:68;-1:-1:-1::0;;;;;1220:38:38;::::1;-1:-1:-1::0;;;1220:38:38::1;:68::i;:::-;1212:106;;;::::0;-1:-1:-1;;;1212:106:38;;5745:2:48;1212:106:38::1;::::0;::::1;5727:21:48::0;5784:2;5764:18;;;5757:30;5823:27;5803:18;;;5796:55;5868:18;;1212:106:38::1;5543:349:48::0;1212:106:38::1;1328:17;:31:::0;;-1:-1:-1;;;;;;1328:31:38::1;-1:-1:-1::0;;;;;1328:31:38;::::1;;::::0;;3479:99:1;;;;3529:5;3513:21;;-1:-1:-1;;3513:21:1;;;3553:14;;-1:-1:-1;6049:36:48;;3553:14:1;;6037:2:48;6022:18;3553:14:1;;;;;;;3479:99;3101:483;1112:254:38;:::o;2108:290::-;2243:14;2299:10;2311:12;2325:5;2332:7;2286:54;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;2269:72;;2378:12;2370:6;-1:-1:-1;;;;;2356:35:38;;;;;;;;;;;2108:290;;;;;:::o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;6856:2:48;2401:73:0::1;::::0;::::1;6838:21:48::0;6895:2;6875:18;;;6868:30;6934:34;6914:18;;;6907:62;-1:-1:-1;;;6985:18:48;;;6978:36;7031:19;;2401:73:0::1;6654:402:48::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;:::-;2321:198:::0;:::o;1599:130::-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;7263:2:48;1654:68:0;;;7245:21:48;;;7282:18;;;7275:30;7341:34;7321:18;;;7314:62;7393:18;;1654:68:0;7061:356:48;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;973:558:18:-;1030:16;1141:4;1135:11;-1:-1:-1;;;1166:3:18;1159:79;1284:14;1278:4;1274:25;1267:4;1262:3;1258:14;1251:49;-1:-1:-1;;;1329:4:18;1324:3;1320:14;1313:90;1443:4;1438:3;1435:1;1428:20;1416:32;-1:-1:-1;;;;;;;1475:22:18;;1467:57;;;;-1:-1:-1;;;1467:57:18;;7624:2:48;1467:57:18;;;7606:21:48;7663:2;7643:18;;;7636:30;-1:-1:-1;;;7682:18:48;;;7675:52;7744:18;;1467:57:18;7422:346:48;1467:57:18;973:558;;;:::o;1003:95:0:-;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1065:26:0::1;:24;:26::i;1366:274:14:-:0;1453:4;1560:23;1575:7;1560:14;:23::i;:::-;:73;;;;;1587:46;1612:7;1621:11;1587:24;:46::i;:::-;1553:80;1366:274;-1:-1:-1;;;1366:274:14:o;1104:111:0:-;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1176:32:0::1;929:10:12::0;1176:18:0::1;:32::i;726:422:14:-:0;790:4;997:71;1022:7;-1:-1:-1;;;997:24:14;:71::i;:::-;:144;;;;-1:-1:-1;1085:56:14;1110:7;-1:-1:-1;;;;;;1085:24:14;:56::i;:::-;1084:57;997:144;978:163;726:422;-1:-1:-1;;726:422:14:o;4256:649::-;4418:82;;;-1:-1:-1;;;;;;8347:33:48;;4418:82:14;;;;8329:52:48;;;;4418:82:14;;;;;;;;;;8302:18:48;;;;4418:82:14;;;;;;;;;-1:-1:-1;;;;;4418:82:14;-1:-1:-1;;;4418:82:14;;;4708:20;;4349:4;;4418:82;4349:4;;;;;;4418:82;4349:4;;4708:20;4673:7;4666:5;4655:86;4644:97;;4768:16;4754:30;;4818:4;4812:11;4797:26;;4850:7;:29;;;;;4875:4;4861:10;:18;;4850:29;:48;;;;;4897:1;4883:11;:15;4850:48;4843:55;4256:649;-1:-1:-1;;;;;;;4256:649:14:o;-1:-1:-1:-;;;;;;;;:::o;14:131:48:-;-1:-1:-1;;;;;89:31:48;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;402:127::-;463:10;458:3;454:20;451:1;444:31;494:4;491:1;484:15;518:4;515:1;508:15;534:719;577:5;630:3;623:4;615:6;611:17;607:27;597:55;;648:1;645;638:12;597:55;684:6;671:20;710:18;747:2;743;740:10;737:36;;;753:18;;:::i;:::-;828:2;822:9;796:2;882:13;;-1:-1:-1;;878:22:48;;;902:2;874:31;870:40;858:53;;;926:18;;;946:22;;;923:46;920:72;;;972:18;;:::i;:::-;1012:10;1008:2;1001:22;1047:2;1039:6;1032:18;1093:3;1086:4;1081:2;1073:6;1069:15;1065:26;1062:35;1059:55;;;1110:1;1107;1100:12;1059:55;1174:2;1167:4;1159:6;1155:17;1148:4;1140:6;1136:17;1123:54;1221:1;1214:4;1209:2;1201:6;1197:15;1193:26;1186:37;1241:6;1232:15;;;;;;534:719;;;;:::o;1258:743::-;1365:6;1373;1381;1434:2;1422:9;1413:7;1409:23;1405:32;1402:52;;;1450:1;1447;1440:12;1402:52;1490:9;1477:23;1519:18;1560:2;1552:6;1549:14;1546:34;;;1576:1;1573;1566:12;1546:34;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1702:2;1691:9;1687:18;1674:32;1658:48;;1731:2;1721:8;1718:16;1715:36;;;1747:1;1744;1737:12;1715:36;1770:52;1814:7;1803:8;1792:9;1788:24;1770:52;:::i;:::-;1760:62;;1875:2;1864:9;1860:18;1847:32;1831:48;;1904:2;1894:8;1891:16;1888:36;;;1920:1;1917;1910:12;1888:36;;1943:52;1987:7;1976:8;1965:9;1961:24;1943:52;:::i;:::-;1933:62;;;1258:743;;;;;:::o;2712:611::-;2809:6;2817;2825;2878:2;2866:9;2857:7;2853:23;2849:32;2846:52;;;2894:1;2891;2884:12;2846:52;2930:9;2917:23;2907:33;;2991:2;2980:9;2976:18;2963:32;3014:18;3055:2;3047:6;3044:14;3041:34;;;3071:1;3068;3061:12;4050:423;4092:3;4130:5;4124:12;4157:6;4152:3;4145:19;4182:1;4192:162;4206:6;4203:1;4200:13;4192:162;;;4268:4;4324:13;;;4320:22;;4314:29;4296:11;;;4292:20;;4285:59;4221:12;4192:162;;;4196:3;4399:1;4392:4;4383:6;4378:3;4374:16;4370:27;4363:38;4462:4;4455:2;4451:7;4446:2;4438:6;4434:15;4430:29;4425:3;4421:39;4417:50;4410:57;;;4050:423;;;;:::o;4478:645::-;-1:-1:-1;;;;;4751:32:48;;4733:51;;4820:3;4815:2;4800:18;;4793:31;;;-1:-1:-1;;4847:46:48;;4873:19;;4865:6;4847:46;:::i;:::-;4941:9;4933:6;4929:22;4924:2;4913:9;4909:18;4902:50;4975:33;5001:6;4993;4975:33;:::i;:::-;4961:47;;5056:9;5048:6;5044:22;5039:2;5028:9;5024:18;5017:50;5084:33;5110:6;5102;5084:33;:::i;6096:553::-;6378:1;6374;6369:3;6365:11;6361:19;6353:6;6349:32;6338:9;6331:51;6418:6;6413:2;6402:9;6398:18;6391:34;6461:3;6456:2;6445:9;6441:18;6434:31;6312:4;6488:46;6529:3;6518:9;6514:19;6506:6;6488:46;:::i;:::-;6582:9;6574:6;6570:22;6565:2;6554:9;6550:18;6543:50;6610:33;6636:6;6628;6610:33;:::i;7773:407::-;7975:2;7957:21;;;8014:2;7994:18;;;7987:30;8053:34;8048:2;8033:18;;8026:62;-1:-1:-1;;;8119:2:48;8104:18;;8097:41;8170:3;8155:19;;7773:407::o", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"}],\"name\":\"DeployedNFT\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"DeployedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\":\"oldLearnToEarn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newLearnToEarn\",\"type\":\"address\"}],\"name\":\"SetLearnToEarn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"name\":\"deployNFT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"deployToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractINFTReward\",\"name\":\"_nftRewared\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"learnToEarn\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[{\"internalType\":\"address\",\"name\":\"_learnToEarn\",\"type\":\"address\"}],\"name\":\"setLearnToEarn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"templateNFTReward\",\"outputs\":[{\"internalType\":\"contractINFTReward\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50611a28806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200009f5760003560e01c8063a4e8aaae116200006e578063a4e8aaae146200010c578063c455ed401462000120578063c4d66de81462000134578063da68ed12146200014b578063f2fde38b146200016257600080fd5b80633025928f14620000a4578063715018a614620000bd5780637309fe2214620000c75780638da5cb5b14620000fa575b600080fd5b620000bb620000b5366004620008d1565b62000179565b005b620000bb62000231565b620000de620000d83660046200099c565b62000249565b6040516001600160a01b03909116815260200160405180910390f35b6033546001600160a01b0316620000de565b606554620000de906001600160a01b031681565b606654620000de906001600160a01b031681565b620000bb62000145366004620008d1565b6200036b565b620000de6200015c36600462000a2e565b6200050b565b620000bb62000173366004620008d1565b6200058c565b620001836200060b565b6001600160a01b038116620001df5760405162461bcd60e51b815260206004820181905260248201527f6c6561726e546f4561726e2061646472657373206973206e6f742076616c696460448201526064015b60405180910390fd5b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f448700cd409e255b87a8a438a7cd86b88452daafacabc31ab74b8da7b039a47890600090a35050565b6200023b6200060b565b62000247600062000667565b565b6065546000906001600160a01b0316620002a65760405162461bcd60e51b815260206004820181905260248201527f4c6561726e546f4561726e2061646472657373206973206e6f742076616c69646044820152606401620001d6565b606654600090620002c0906001600160a01b0316620006b9565b606554604051635f1e6f6d60e01b81529192506001600160a01b0380841692635f1e6f6d92620002fb92169089908990899060040162000aac565b600060405180830381600087803b1580156200031657600080fd5b505af11580156200032b573d6000803e3d6000fd5b50506040516001600160a01b03841692507ff784f9219f2a6abce53e3cbad9cdb6703c11c16fe0fb6e2525b74f9a04fed14c9150600090a2949350505050565b600054610100900460ff16158080156200038c5750600054600160ff909116105b80620003a85750303b158015620003a8575060005460ff166001145b6200040d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620001d6565b6000805460ff19166001179055801562000431576000805461ff0019166101001790555b6200043b62000758565b620004576001600160a01b03831663357c172f60e01b6200078c565b620004a55760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964204e46545265776172642061646472657373000000000000006044820152606401620001d6565b606680546001600160a01b0319166001600160a01b038416179055801562000507576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000338484846040516200051f90620008ad565b6200052e949392919062000afc565b604051809103906000f0801580156200054b573d6000803e3d6000fd5b50905083816001600160a01b03167f9d4a605126592dbb92f903ac98e8c937282fbe6325f14bf4d5eacf3544edc35c60405160405180910390a39392505050565b620005966200060b565b6001600160a01b038116620005fd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620001d6565b620006088162000667565b50565b6033546001600160a01b03163314620002475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001d6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528260601b60148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09150506001600160a01b038116620007535760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401620001d6565b919050565b600054610100900460ff16620007825760405162461bcd60e51b8152600401620001d69062000b39565b62000247620007b4565b60006200079983620007e9565b8015620007ad5750620007ad838362000822565b9392505050565b600054610100900460ff16620007de5760405162461bcd60e51b8152600401620001d69062000b39565b620002473362000667565b6000620007fe826301ffc9a760e01b62000822565b80156200081c57506200081a826001600160e01b031962000822565b155b92915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d9150600051905082801562000895575060208210155b8015620008a25750600081115b979650505050505050565b610e6e8062000b8583390190565b6001600160a01b03811681146200060857600080fd5b600060208284031215620008e457600080fd5b8135620007ad81620008bb565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200091957600080fd5b813567ffffffffffffffff80821115620009375762000937620008f1565b604051601f8301601f19908116603f01168101908282118183101715620009625762000962620008f1565b816040528381528660208588010111156200097c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215620009b257600080fd5b833567ffffffffffffffff80821115620009cb57600080fd5b620009d98783880162000907565b94506020860135915080821115620009f057600080fd5b620009fe8783880162000907565b9350604086013591508082111562000a1557600080fd5b5062000a248682870162000907565b9150509250925092565b60008060006060848603121562000a4457600080fd5b83359250602084013567ffffffffffffffff80821115620009f057600080fd5b6000815180845260005b8181101562000a8c5760208185018101518683018201520162000a6e565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038516815260806020820181905260009062000ad29083018662000a64565b828103604084015262000ae6818662000a64565b90508281036060840152620008a2818562000a64565b60018060a01b038516815283602082015260806040820152600062000b25608083018562000a64565b8281036060840152620008a2818562000a64565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe60806040523480156200001157600080fd5b5060405162000e6e38038062000e6e833981016040819052620000349162000224565b8181600362000044838262000346565b50600462000053828262000346565b5050506200006884846200007260201b60201c565b505050506200043a565b6001600160a01b038216620000cd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000e1919062000412565b90915550506001600160a01b038216600090815260208190526040812080548392906200011090849062000412565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200018757600080fd5b81516001600160401b0380821115620001a457620001a46200015f565b604051601f8301601f19908116603f01168101908282118183101715620001cf57620001cf6200015f565b81604052838152602092508683858801011115620001ec57600080fd5b600091505b83821015620002105785820183015181830184015290820190620001f1565b600093810190920192909252949350505050565b600080600080608085870312156200023b57600080fd5b84516001600160a01b03811681146200025357600080fd5b6020860151604087015191955093506001600160401b03808211156200027857600080fd5b620002868883890162000175565b935060608701519150808211156200029d57600080fd5b50620002ac8782880162000175565b91505092959194509250565b600181811c90821680620002cd57607f821691505b602082108103620002ee57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200015a57600081815260208120601f850160051c810160208610156200031d5750805b601f850160051c820191505b818110156200033e5782815560010162000329565b505050505050565b81516001600160401b038111156200036257620003626200015f565b6200037a81620003738454620002b8565b84620002f4565b602080601f831160018114620003b25760008415620003995750858301515b600019600386901b1c1916600185901b1785556200033e565b600085815260208120601f198616915b82811015620003e357888601518255948401946001909101908401620003c2565b5085821015620004025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200043457634e487b7160e01b600052601160045260246000fd5b92915050565b610a24806200044a6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806342966c681161007157806342966c681461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061083a565b60405180910390f35b6100ea6100e53660046108a4565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046108ce565b61026c565b604051601281526020016100ce565b6100ea61013c3660046108a4565b610290565b61015461014f36600461090a565b6102b2565b005b6100fe610164366004610923565b6001600160a01b031660009081526020819052604090205490565b6100c16102bf565b6100ea6101953660046108a4565b6102ce565b6100ea6101a83660046108a4565b61034e565b6100fe6101bb366004610945565b61035c565b6060600380546101cf90610978565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610978565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610387565b60019150505b92915050565b60003361027a8582856104ac565b610285858585610526565b506001949350505050565b6000336102608185856102a3838361035c565b6102ad91906109c8565b610387565b6102bc33826106f4565b50565b6060600480546101cf90610978565b600033816102dc828661035c565b9050838110156103415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102858286868403610387565b600033610260818585610526565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103e95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610338565b6001600160a01b03821661044a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610338565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104b8848461035c565b9050600019811461052057818110156105135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610338565b6105208484848403610387565b50505050565b6001600160a01b03831661058a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610338565b6001600160a01b0382166105ec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610338565b6001600160a01b038316600090815260208190526040902054818110156106645760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610338565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061069b9084906109c8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106e791815260200190565b60405180910390a3610520565b6001600160a01b0382166107545760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610338565b6001600160a01b038216600090815260208190526040902054818110156107c85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610338565b6001600160a01b03831660009081526020819052604081208383039055600280548492906107f79084906109db565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161049f565b600060208083528351808285015260005b818110156108675785810183015185820160400152820161084b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461089f57600080fd5b919050565b600080604083850312156108b757600080fd5b6108c083610888565b946020939093013593505050565b6000806000606084860312156108e357600080fd5b6108ec84610888565b92506108fa60208501610888565b9150604084013590509250925092565b60006020828403121561091c57600080fd5b5035919050565b60006020828403121561093557600080fd5b61093e82610888565b9392505050565b6000806040838503121561095857600080fd5b61096183610888565b915061096f60208401610888565b90509250929050565b600181811c9082168061098c57607f821691505b6020821081036109ac57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610266576102666109b2565b81810381811115610266576102666109b256fea26469706673582212206f580637e2726840ddefd5197269032aa3ba94a5d49ec58f0f176cc76bec3ecd64736f6c63430008100033a2646970667358221220a2972ed69cd8a17cd17a6f8d32a9251583a42610dac37f45a11a5acd0f363cf764736f6c63430008100033", "bin-runtime": "60806040523480156200001157600080fd5b50600436106200009f5760003560e01c8063a4e8aaae116200006e578063a4e8aaae146200010c578063c455ed401462000120578063c4d66de81462000134578063da68ed12146200014b578063f2fde38b146200016257600080fd5b80633025928f14620000a4578063715018a614620000bd5780637309fe2214620000c75780638da5cb5b14620000fa575b600080fd5b620000bb620000b5366004620008d1565b62000179565b005b620000bb62000231565b620000de620000d83660046200099c565b62000249565b6040516001600160a01b03909116815260200160405180910390f35b6033546001600160a01b0316620000de565b606554620000de906001600160a01b031681565b606654620000de906001600160a01b031681565b620000bb62000145366004620008d1565b6200036b565b620000de6200015c36600462000a2e565b6200050b565b620000bb62000173366004620008d1565b6200058c565b620001836200060b565b6001600160a01b038116620001df5760405162461bcd60e51b815260206004820181905260248201527f6c6561726e546f4561726e2061646472657373206973206e6f742076616c696460448201526064015b60405180910390fd5b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f448700cd409e255b87a8a438a7cd86b88452daafacabc31ab74b8da7b039a47890600090a35050565b6200023b6200060b565b62000247600062000667565b565b6065546000906001600160a01b0316620002a65760405162461bcd60e51b815260206004820181905260248201527f4c6561726e546f4561726e2061646472657373206973206e6f742076616c69646044820152606401620001d6565b606654600090620002c0906001600160a01b0316620006b9565b606554604051635f1e6f6d60e01b81529192506001600160a01b0380841692635f1e6f6d92620002fb92169089908990899060040162000aac565b600060405180830381600087803b1580156200031657600080fd5b505af11580156200032b573d6000803e3d6000fd5b50506040516001600160a01b03841692507ff784f9219f2a6abce53e3cbad9cdb6703c11c16fe0fb6e2525b74f9a04fed14c9150600090a2949350505050565b600054610100900460ff16158080156200038c5750600054600160ff909116105b80620003a85750303b158015620003a8575060005460ff166001145b6200040d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620001d6565b6000805460ff19166001179055801562000431576000805461ff0019166101001790555b6200043b62000758565b620004576001600160a01b03831663357c172f60e01b6200078c565b620004a55760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964204e46545265776172642061646472657373000000000000006044820152606401620001d6565b606680546001600160a01b0319166001600160a01b038416179055801562000507576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000338484846040516200051f90620008ad565b6200052e949392919062000afc565b604051809103906000f0801580156200054b573d6000803e3d6000fd5b50905083816001600160a01b03167f9d4a605126592dbb92f903ac98e8c937282fbe6325f14bf4d5eacf3544edc35c60405160405180910390a39392505050565b620005966200060b565b6001600160a01b038116620005fd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620001d6565b620006088162000667565b50565b6033546001600160a01b03163314620002475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001d6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528260601b60148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09150506001600160a01b038116620007535760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401620001d6565b919050565b600054610100900460ff16620007825760405162461bcd60e51b8152600401620001d69062000b39565b62000247620007b4565b60006200079983620007e9565b8015620007ad5750620007ad838362000822565b9392505050565b600054610100900460ff16620007de5760405162461bcd60e51b8152600401620001d69062000b39565b620002473362000667565b6000620007fe826301ffc9a760e01b62000822565b80156200081c57506200081a826001600160e01b031962000822565b155b92915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d9150600051905082801562000895575060208210155b8015620008a25750600081115b979650505050505050565b610e6e8062000b8583390190565b6001600160a01b03811681146200060857600080fd5b600060208284031215620008e457600080fd5b8135620007ad81620008bb565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200091957600080fd5b813567ffffffffffffffff80821115620009375762000937620008f1565b604051601f8301601f19908116603f01168101908282118183101715620009625762000962620008f1565b816040528381528660208588010111156200097c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215620009b257600080fd5b833567ffffffffffffffff80821115620009cb57600080fd5b620009d98783880162000907565b94506020860135915080821115620009f057600080fd5b620009fe8783880162000907565b9350604086013591508082111562000a1557600080fd5b5062000a248682870162000907565b9150509250925092565b60008060006060848603121562000a4457600080fd5b83359250602084013567ffffffffffffffff80821115620009f057600080fd5b6000815180845260005b8181101562000a8c5760208185018101518683018201520162000a6e565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038516815260806020820181905260009062000ad29083018662000a64565b828103604084015262000ae6818662000a64565b90508281036060840152620008a2818562000a64565b60018060a01b038516815283602082015260806040820152600062000b25608083018562000a64565b8281036060840152620008a2818562000a64565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe60806040523480156200001157600080fd5b5060405162000e6e38038062000e6e833981016040819052620000349162000224565b8181600362000044838262000346565b50600462000053828262000346565b5050506200006884846200007260201b60201c565b505050506200043a565b6001600160a01b038216620000cd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000e1919062000412565b90915550506001600160a01b038216600090815260208190526040812080548392906200011090849062000412565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200018757600080fd5b81516001600160401b0380821115620001a457620001a46200015f565b604051601f8301601f19908116603f01168101908282118183101715620001cf57620001cf6200015f565b81604052838152602092508683858801011115620001ec57600080fd5b600091505b83821015620002105785820183015181830184015290820190620001f1565b600093810190920192909252949350505050565b600080600080608085870312156200023b57600080fd5b84516001600160a01b03811681146200025357600080fd5b6020860151604087015191955093506001600160401b03808211156200027857600080fd5b620002868883890162000175565b935060608701519150808211156200029d57600080fd5b50620002ac8782880162000175565b91505092959194509250565b600181811c90821680620002cd57607f821691505b602082108103620002ee57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200015a57600081815260208120601f850160051c810160208610156200031d5750805b601f850160051c820191505b818110156200033e5782815560010162000329565b505050505050565b81516001600160401b038111156200036257620003626200015f565b6200037a81620003738454620002b8565b84620002f4565b602080601f831160018114620003b25760008415620003995750858301515b600019600386901b1c1916600185901b1785556200033e565b600085815260208120601f198616915b82811015620003e357888601518255948401946001909101908401620003c2565b5085821015620004025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200043457634e487b7160e01b600052601160045260246000fd5b92915050565b610a24806200044a6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806342966c681161007157806342966c681461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061083a565b60405180910390f35b6100ea6100e53660046108a4565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046108ce565b61026c565b604051601281526020016100ce565b6100ea61013c3660046108a4565b610290565b61015461014f36600461090a565b6102b2565b005b6100fe610164366004610923565b6001600160a01b031660009081526020819052604090205490565b6100c16102bf565b6100ea6101953660046108a4565b6102ce565b6100ea6101a83660046108a4565b61034e565b6100fe6101bb366004610945565b61035c565b6060600380546101cf90610978565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610978565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610387565b60019150505b92915050565b60003361027a8582856104ac565b610285858585610526565b506001949350505050565b6000336102608185856102a3838361035c565b6102ad91906109c8565b610387565b6102bc33826106f4565b50565b6060600480546101cf90610978565b600033816102dc828661035c565b9050838110156103415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102858286868403610387565b600033610260818585610526565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103e95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610338565b6001600160a01b03821661044a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610338565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104b8848461035c565b9050600019811461052057818110156105135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610338565b6105208484848403610387565b50505050565b6001600160a01b03831661058a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610338565b6001600160a01b0382166105ec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610338565b6001600160a01b038316600090815260208190526040902054818110156106645760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610338565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061069b9084906109c8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106e791815260200190565b60405180910390a3610520565b6001600160a01b0382166107545760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610338565b6001600160a01b038216600090815260208190526040902054818110156107c85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610338565b6001600160a01b03831660009081526020819052604081208383039055600280548492906107f79084906109db565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161049f565b600060208083528351808285015260005b818110156108675785810183015185820160400152820161084b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461089f57600080fd5b919050565b600080604083850312156108b757600080fd5b6108c083610888565b946020939093013593505050565b6000806000606084860312156108e357600080fd5b6108ec84610888565b92506108fa60208501610888565b9150604084013590509250925092565b60006020828403121561091c57600080fd5b5035919050565b60006020828403121561093557600080fd5b61093e82610888565b9392505050565b6000806040838503121561095857600080fd5b61096183610888565b915061096f60208401610888565b90509250929050565b600181811c9082168061098c57607f821691505b6020821081036109ac57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610266576102666109b2565b81810381811115610266576102666109b256fea26469706673582212206f580637e2726840ddefd5197269032aa3ba94a5d49ec58f0f176cc76bec3ecd64736f6c63430008100033a2646970667358221220a2972ed69cd8a17cd17a6f8d32a9251583a42610dac37f45a11a5acd0f363cf764736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/ILearnToEarn.sol:ILearnToEarn": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"}],\"name\":\"AddedBudget\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"learner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rewardAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"nftIds\",\"type\":\"uint256[]\"}],\"name\":\"ClaimedReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"learner\",\"type\":\"address\"}],\"name\":\"CompletedCourse\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timeStarted\",\"type\":\"uint256\"}],\"name\":\"CreatedCourse\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"RemovedCourse\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawnBudget\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_budget\",\"type\":\"uint256\"}],\"name\":\"addBudget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_learner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_timeStarted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeCompleted\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_nftIds\",\"type\":\"uint256[]\"}],\"name\":\"completeCourse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rewardAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeEndBonus\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isUsingDuration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_isBonusToken\",\"type\":\"bool\"}],\"name\":\"createCourse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"}],\"name\":\"withdrawBudget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/INFTReward.sol:INFTReward": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_learnToEarn\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/IReBakedDAO.sol:IReBakedDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mgp\",\"type\":\"uint256\"}],\"name\":\"AddedCollaborator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"observers\",\"type\":\"address[]\"}],\"name\":\"AddedObservers\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"}],\"name\":\"ApprovedCollaborator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"}],\"name\":\"ApprovedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revertedBudget\",\"type\":\"uint256\"}],\"name\":\"CanceledPackage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"observerBudget\",\"type\":\"uint256\"}],\"name\":\"CreatedPackage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"}],\"name\":\"CreatedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"budgetLeft\",\"type\":\"uint256\"}],\"name\":\"FinishedPackage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budgetLeft\",\"type\":\"uint256\"}],\"name\":\"FinishedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mgp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"}],\"name\":\"PaidCollaboratorRewards\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"PaidObserverFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId_\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId_\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator_\",\"type\":\"address\"}],\"name\":\"RemovedCollaborator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"observers\",\"type\":\"address[]\"}],\"name\":\"RemovedObservers\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"}],\"name\":\"StartedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldTreasury\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"UpdatedTreasury\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_mgp\",\"type\":\"uint256\"}],\"name\":\"addCollaborator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"}],\"name\":\"addObservers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"}],\"name\":\"approveCollaborator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_collaborators\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"_workStarted\",\"type\":\"bool\"}],\"name\":\"cancelPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_observerBudget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_collaboratorsLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"}],\"name\":\"createPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"budget_\",\"type\":\"uint256\"}],\"name\":\"createProject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_collaborators\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_scores\",\"type\":\"uint256[]\"}],\"name\":\"finishPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"}],\"name\":\"finishProject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_shouldPayMgp\",\"type\":\"bool\"}],\"name\":\"removeCollaborator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"}],\"name\":\"removeObservers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"}],\"name\":\"selfRemove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_observersIn\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_observersOut\",\"type\":\"address[]\"}],\"name\":\"updateObservers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury_\",\"type\":\"address\"}],\"name\":\"updateTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/ITokenFactory.sol:ITokenFactory": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"}],\"name\":\"DeployedNFT\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"DeployedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldLearnToEarn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newLearnToEarn\",\"type\":\"address\"}],\"name\":\"SetLearnToEarn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"name\":\"deployNFT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"deployToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/CollaboratorLibrary.sol:CollaboratorLibrary": {"srcmap": "103:1996:43:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;103:1996:43;;;;;;;;;;;;;;;;;", "srcmap-runtime": "103:1996:43:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069b082de11cf28234a75c60fa34e73e90f09ac864a4cea3c8f02e6487b74fbee64736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069b082de11cf28234a75c60fa34e73e90f09ac864a4cea3c8f02e6487b74fbee64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/ObserverLibrary.sol:ObserverLibrary": {"srcmap": "99:1095:44:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;99:1095:44;;;;;;;;;;;;;;;;;", "srcmap-runtime": "99:1095:44:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fcf98ba60cba496f298757d1221a007194c155ebe10ac664b5f478f71b4031f164736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fcf98ba60cba496f298757d1221a007194c155ebe10ac664b5f478f71b4031f164736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/PackageLibrary.sol:PackageLibrary": {"srcmap": "98:6039:45:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;98:6039:45;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:6039:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;127:46;;171:2;127:46;;;;;168:25:48;;;156:2;141:18;127:46:45;;;;;;", "abi": "[{\"inputs\":[],\"name\":\"MAX_COLLABORATORS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_OBSERVERS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "6091610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c8063eb892b10146042578063ec120a00146042575b600080fd5b6049600a81565b60405190815260200160405180910390f3fea26469706673582212205aa3ccd4d106552c101c6170f4ef264bf9581ec19c3a7b940a42126181fa5c0864736f6c63430008100033", "bin-runtime": "7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c8063eb892b10146042578063ec120a00146042575b600080fd5b6049600a81565b60405190815260200160405180910390f3fea26469706673582212205aa3ccd4d106552c101c6170f4ef264bf9581ec19c3a7b940a42126181fa5c0864736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/ProjectLibrary.sol:ProjectLibrary": {"srcmap": "301:3348:46:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;301:3348:46;;;;;;;;;;;;;;;;;", "srcmap-runtime": "301:3348:46:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220776f6f4b6e258f8a33e3e90f3615192c43f9043b376b39164c3f06963a7e2a3b64736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220776f6f4b6e258f8a33e3e90f3615192c43f9043b376b39164c3f06963a7e2a3b64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}}} \ No newline at end of file diff --git a/crytic-export/7b56c664f87a319177abdc204d9723d0.json b/crytic-export/7b56c664f87a319177abdc204d9723d0.json new file mode 100644 index 0000000..a77c7a3 --- /dev/null +++ b/crytic-export/7b56c664f87a319177abdc204d9723d0.json @@ -0,0 +1 @@ +{"sources": {"/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ExplorationExample.sol": {"AST": {"absolutePath": "contracts/ExplorationExample.sol", "exportedSymbols": {"ExplorationExample": [22]}, "id": 23, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:0"}, {"abstract": false, "baseContracts": [], "canonicalName": "ExplorationExample", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 22, "linearizedBaseContracts": [22], "name": "ExplorationExample", "nameLocation": "66:18:0", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 3, "mutability": "mutable", "name": "value", "nameLocation": "107:5:0", "nodeType": "VariableDeclaration", "scope": 22, "src": "91:21:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "91:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 12, "nodeType": "Block", "src": "165:34:0", "statements": [{"expression": {"id": 10, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3, "src": "175:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9, "name": "_newValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5, "src": "183:9:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "175:17:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 11, "nodeType": "ExpressionStatement", "src": "175:17:0"}]}, "functionSelector": "55241077", "id": 13, "implemented": true, "kind": "function", "modifiers": [], "name": "setValue", "nameLocation": "128:8:0", "nodeType": "FunctionDefinition", "parameters": {"id": 6, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5, "mutability": "mutable", "name": "_newValue", "nameLocation": "145:9:0", "nodeType": "VariableDeclaration", "scope": 13, "src": "137:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "137:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "136:19:0"}, "returnParameters": {"id": 7, "nodeType": "ParameterList", "parameters": [], "src": "165:0:0"}, "scope": 22, "src": "119:80:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 20, "nodeType": "Block", "src": "257:29:0", "statements": [{"expression": {"id": 18, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3, "src": "274:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 17, "id": 19, "nodeType": "Return", "src": "267:12:0"}]}, "functionSelector": "20965255", "id": 21, "implemented": true, "kind": "function", "modifiers": [], "name": "getValue", "nameLocation": "214:8:0", "nodeType": "FunctionDefinition", "parameters": {"id": 14, "nodeType": "ParameterList", "parameters": [], "src": "222:2:0"}, "returnParameters": {"id": 17, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 16, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 21, "src": "248:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 15, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "248:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "247:9:0"}, "scope": 22, "src": "205:81:0", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 23, "src": "57:231:0", "usedErrors": []}], "src": "32:256:0"}}}, "sourceList": ["/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ExplorationExample.sol"], "contracts": {"/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ExplorationExample.sol:ExplorationExample": {"srcmap": "57:231:0:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "57:231:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;205:81;248:7;274:5;205:81;;160:25:1;;;148:2;133:18;205:81:0;;;;;;;119:80;;;;;;:::i;:::-;175:5;:17;119:80;;;196:180:1;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o", "abi": "[{\"inputs\":[],\"name\":\"getValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newValue\",\"type\":\"uint256\"}],\"name\":\"setValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "6080604052348015600f57600080fd5b5060ac8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063209652551460375780635524107714604c575b600080fd5b60005460405190815260200160405180910390f35b605c6057366004605e565b600055565b005b600060208284031215606f57600080fd5b503591905056fea2646970667358221220bf6d0a79fa093eeff3c92dd6641d0ebab42ce7252bc8cdf3abb7ea720c86bfcf64736f6c63430008100033", "bin-runtime": "6080604052348015600f57600080fd5b506004361060325760003560e01c8063209652551460375780635524107714604c575b600080fd5b60005460405190815260200160405180910390f35b605c6057366004605e565b600055565b005b600060208284031215606f57600080fd5b503591905056fea2646970667358221220bf6d0a79fa093eeff3c92dd6641d0ebab42ce7252bc8cdf3abb7ea720c86bfcf64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}}} \ No newline at end of file diff --git a/scripts/deploy.js b/scripts/deploy.js index 55b9eab..b2ee660 100644 --- a/scripts/deploy.js +++ b/scripts/deploy.js @@ -1,4 +1,4 @@ -const { ethers, upgrades } = require("hardhat"); +const { ethers, upgrades, run } = require("hardhat"); const fs = require("fs"); async function main() { @@ -59,9 +59,9 @@ async function main() { // await reBakedDAO.deployed(); // Upgrading - const reBakedDAO = await upgrades.upgradeProxy("0x42472dB3d10d5AA6dE423F876CA555f803eF8ADD", ReBakedDAO); + // const reBakedDAO = await upgrades.upgradeProxy("0x42472dB3d10d5AA6dE423F876CA555f803eF8ADD", ReBakedDAO); - console.log("ReBakedDAO deployed to:", reBakedDAO.address); + // console.log("ReBakedDAO deployed to:", reBakedDAO.address); // const tx = await tokenFactory.setReBakedDao(reBakedDAO.address); // await tx.wait(); @@ -75,6 +75,18 @@ async function main() { // "ReBakedDAO": reBakedDAO.address, // }; // fs.writeFileSync("contracts.json", JSON.stringify(contractAddresses)); + + // const USDC = await ethers.getContractFactory('IOUToken'); + // const usdc = await USDC.deploy(deployer.address, ethers.utils.parseUnits('10000'), 'USDC', 'USDC'); + // await usdc.deployed(); + + // console.log(usdc.address); + + await run('verify:verify', { + address: "0x1F3C3321d6fb4b376809d13E1d935A7542e2a23c", + constructorArguments: [deployer.address, ethers.utils.parseUnits('10000'), 'USDC', 'USDC'] + }) + } // We recommend this pattern to be able to use async/await everywhere From cd799fb84180ed5d6d32e458b96e6624cd5d43d2 Mon Sep 17 00:00:00 2001 From: phongho01 Date: Mon, 24 Apr 2023 14:36:11 +0700 Subject: [PATCH 07/13] remove unused files --- crytic-export/3ef46554809429534217e8863dee321b.json | 1 - crytic-export/7b56c664f87a319177abdc204d9723d0.json | 1 - 2 files changed, 2 deletions(-) delete mode 100644 crytic-export/3ef46554809429534217e8863dee321b.json delete mode 100644 crytic-export/7b56c664f87a319177abdc204d9723d0.json diff --git a/crytic-export/3ef46554809429534217e8863dee321b.json b/crytic-export/3ef46554809429534217e8863dee321b.json deleted file mode 100644 index 83441d7..0000000 --- a/crytic-export/3ef46554809429534217e8863dee321b.json +++ /dev/null @@ -1 +0,0 @@ -{"sources": {"/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "ContextUpgradeable": [2219], "Initializable": [282], "OwnableUpgradeable": [131]}, "id": 132, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "102:23:0"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "file": "../utils/ContextUpgradeable.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 132, "sourceUnit": 2220, "src": "127:41:0", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../proxy/utils/Initializable.sol", "id": 3, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 132, "sourceUnit": 283, "src": "169:42:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 5, "name": "Initializable", "nameLocations": ["748:13:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 282, "src": "748:13:0"}, "id": 6, "nodeType": "InheritanceSpecifier", "src": "748:13:0"}, {"baseName": {"id": 7, "name": "ContextUpgradeable", "nameLocations": ["763:18:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 2219, "src": "763:18:0"}, "id": 8, "nodeType": "InheritanceSpecifier", "src": "763:18:0"}], "canonicalName": "OwnableUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 4, "nodeType": "StructuredDocumentation", "src": "213:494:0", "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."}, "fullyImplemented": true, "id": 131, "linearizedBaseContracts": [131, 2219, 282], "name": "OwnableUpgradeable", "nameLocation": "726:18:0", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 10, "mutability": "mutable", "name": "_owner", "nameLocation": "804:6:0", "nodeType": "VariableDeclaration", "scope": 131, "src": "788:22:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9, "name": "address", "nodeType": "ElementaryTypeName", "src": "788:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "private"}, {"anonymous": false, "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "id": 16, "name": "OwnershipTransferred", "nameLocation": "823:20:0", "nodeType": "EventDefinition", "parameters": {"id": 15, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 12, "indexed": true, "mutability": "mutable", "name": "previousOwner", "nameLocation": "860:13:0", "nodeType": "VariableDeclaration", "scope": 16, "src": "844:29:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 11, "name": "address", "nodeType": "ElementaryTypeName", "src": "844:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 14, "indexed": true, "mutability": "mutable", "name": "newOwner", "nameLocation": "891:8:0", "nodeType": "VariableDeclaration", "scope": 16, "src": "875:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 13, "name": "address", "nodeType": "ElementaryTypeName", "src": "875:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "843:57:0"}, "src": "817:84:0"}, {"body": {"id": 25, "nodeType": "Block", "src": "1055:43:0", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 22, "name": "__Ownable_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "1065:24:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 23, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1065:26:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 24, "nodeType": "ExpressionStatement", "src": "1065:26:0"}]}, "documentation": {"id": 17, "nodeType": "StructuredDocumentation", "src": "907:91:0", "text": " @dev Initializes the contract setting the deployer as the initial owner."}, "id": 26, "implemented": true, "kind": "function", "modifiers": [{"id": 20, "kind": "modifierInvocation", "modifierName": {"id": 19, "name": "onlyInitializing", "nameLocations": ["1038:16:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "1038:16:0"}, "nodeType": "ModifierInvocation", "src": "1038:16:0"}], "name": "__Ownable_init", "nameLocation": "1012:14:0", "nodeType": "FunctionDefinition", "parameters": {"id": 18, "nodeType": "ParameterList", "parameters": [], "src": "1026:2:0"}, "returnParameters": {"id": 21, "nodeType": "ParameterList", "parameters": [], "src": "1055:0:0"}, "scope": 131, "src": "1003:95:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 36, "nodeType": "Block", "src": "1166:49:0", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 32, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "1195:10:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 33, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1195:12:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 31, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, "src": "1176:18:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 34, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1176:32:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 35, "nodeType": "ExpressionStatement", "src": "1176:32:0"}]}, "id": 37, "implemented": true, "kind": "function", "modifiers": [{"id": 29, "kind": "modifierInvocation", "modifierName": {"id": 28, "name": "onlyInitializing", "nameLocations": ["1149:16:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "1149:16:0"}, "nodeType": "ModifierInvocation", "src": "1149:16:0"}], "name": "__Ownable_init_unchained", "nameLocation": "1113:24:0", "nodeType": "FunctionDefinition", "parameters": {"id": 27, "nodeType": "ParameterList", "parameters": [], "src": "1137:2:0"}, "returnParameters": {"id": 30, "nodeType": "ParameterList", "parameters": [], "src": "1166:0:0"}, "scope": 131, "src": "1104:111:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 44, "nodeType": "Block", "src": "1324:41:0", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 40, "name": "_checkOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 68, "src": "1334:11:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$__$", "typeString": "function () view"}}, "id": 41, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1334:13:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 42, "nodeType": "ExpressionStatement", "src": "1334:13:0"}, {"id": 43, "nodeType": "PlaceholderStatement", "src": "1357:1:0"}]}, "documentation": {"id": 38, "nodeType": "StructuredDocumentation", "src": "1221:77:0", "text": " @dev Throws if called by any account other than the owner."}, "id": 45, "name": "onlyOwner", "nameLocation": "1312:9:0", "nodeType": "ModifierDefinition", "parameters": {"id": 39, "nodeType": "ParameterList", "parameters": [], "src": "1321:2:0"}, "src": "1303:62:0", "virtual": false, "visibility": "internal"}, {"body": {"id": 53, "nodeType": "Block", "src": "1496:30:0", "statements": [{"expression": {"id": 51, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10, "src": "1513:6:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 50, "id": 52, "nodeType": "Return", "src": "1506:13:0"}]}, "documentation": {"id": 46, "nodeType": "StructuredDocumentation", "src": "1371:65:0", "text": " @dev Returns the address of the current owner."}, "functionSelector": "8da5cb5b", "id": 54, "implemented": true, "kind": "function", "modifiers": [], "name": "owner", "nameLocation": "1450:5:0", "nodeType": "FunctionDefinition", "parameters": {"id": 47, "nodeType": "ParameterList", "parameters": [], "src": "1455:2:0"}, "returnParameters": {"id": 50, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 49, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 54, "src": "1487:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 48, "name": "address", "nodeType": "ElementaryTypeName", "src": "1487:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1486:9:0"}, "scope": 131, "src": "1441:85:0", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 67, "nodeType": "Block", "src": "1644:85:0", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 63, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 59, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 54, "src": "1662:5:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 60, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1662:7:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 61, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "1673:10:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 62, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1673:12:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1662:23:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", "id": 64, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1687:34:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", "typeString": "literal_string \"Ownable: caller is not the owner\""}, "value": "Ownable: caller is not the owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", "typeString": "literal_string \"Ownable: caller is not the owner\""}], "id": 58, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1654:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 65, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1654:68:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 66, "nodeType": "ExpressionStatement", "src": "1654:68:0"}]}, "documentation": {"id": 55, "nodeType": "StructuredDocumentation", "src": "1532:62:0", "text": " @dev Throws if the sender is not the owner."}, "id": 68, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOwner", "nameLocation": "1608:11:0", "nodeType": "FunctionDefinition", "parameters": {"id": 56, "nodeType": "ParameterList", "parameters": [], "src": "1619:2:0"}, "returnParameters": {"id": 57, "nodeType": "ParameterList", "parameters": [], "src": "1644:0:0"}, "scope": 131, "src": "1599:130:0", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 81, "nodeType": "Block", "src": "2125:47:0", "statements": [{"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 77, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2162:1:0", "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": 76, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2154:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 75, "name": "address", "nodeType": "ElementaryTypeName", "src": "2154:7:0", "typeDescriptions": {}}}, "id": 78, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2154:10:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 74, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, "src": "2135:18:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 79, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2135:30:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 80, "nodeType": "ExpressionStatement", "src": "2135:30:0"}]}, "documentation": {"id": 69, "nodeType": "StructuredDocumentation", "src": "1735:331:0", "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."}, "functionSelector": "715018a6", "id": 82, "implemented": true, "kind": "function", "modifiers": [{"id": 72, "kind": "modifierInvocation", "modifierName": {"id": 71, "name": "onlyOwner", "nameLocations": ["2115:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 45, "src": "2115:9:0"}, "nodeType": "ModifierInvocation", "src": "2115:9:0"}], "name": "renounceOwnership", "nameLocation": "2080:17:0", "nodeType": "FunctionDefinition", "parameters": {"id": 70, "nodeType": "ParameterList", "parameters": [], "src": "2097:2:0"}, "returnParameters": {"id": 73, "nodeType": "ParameterList", "parameters": [], "src": "2125:0:0"}, "scope": 131, "src": "2071:101:0", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 104, "nodeType": "Block", "src": "2391:128:0", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 96, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 91, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85, "src": "2409:8:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 94, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2429:1:0", "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": 93, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2421:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 92, "name": "address", "nodeType": "ElementaryTypeName", "src": "2421:7:0", "typeDescriptions": {}}}, "id": 95, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2421:10:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2409:22:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", "id": 97, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2433:40:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", "typeString": "literal_string \"Ownable: new owner is the zero address\""}, "value": "Ownable: new owner is the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", "typeString": "literal_string \"Ownable: new owner is the zero address\""}], "id": 90, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2401:7:0", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 98, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2401:73:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 99, "nodeType": "ExpressionStatement", "src": "2401:73:0"}, {"expression": {"arguments": [{"id": 101, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85, "src": "2503:8:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 100, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 125, "src": "2484:18:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 102, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2484:28:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 103, "nodeType": "ExpressionStatement", "src": "2484:28:0"}]}, "documentation": {"id": 83, "nodeType": "StructuredDocumentation", "src": "2178:138:0", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."}, "functionSelector": "f2fde38b", "id": 105, "implemented": true, "kind": "function", "modifiers": [{"id": 88, "kind": "modifierInvocation", "modifierName": {"id": 87, "name": "onlyOwner", "nameLocations": ["2381:9:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 45, "src": "2381:9:0"}, "nodeType": "ModifierInvocation", "src": "2381:9:0"}], "name": "transferOwnership", "nameLocation": "2330:17:0", "nodeType": "FunctionDefinition", "parameters": {"id": 86, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 85, "mutability": "mutable", "name": "newOwner", "nameLocation": "2356:8:0", "nodeType": "VariableDeclaration", "scope": 105, "src": "2348:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 84, "name": "address", "nodeType": "ElementaryTypeName", "src": "2348:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2347:18:0"}, "returnParameters": {"id": 89, "nodeType": "ParameterList", "parameters": [], "src": "2391:0:0"}, "scope": 131, "src": "2321:198:0", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 124, "nodeType": "Block", "src": "2736:124:0", "statements": [{"assignments": [112], "declarations": [{"constant": false, "id": 112, "mutability": "mutable", "name": "oldOwner", "nameLocation": "2754:8:0", "nodeType": "VariableDeclaration", "scope": 124, "src": "2746:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 111, "name": "address", "nodeType": "ElementaryTypeName", "src": "2746:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 114, "initialValue": {"id": 113, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10, "src": "2765:6:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2746:25:0"}, {"expression": {"id": 117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 115, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10, "src": "2781:6:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 116, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "2790:8:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2781:17:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 118, "nodeType": "ExpressionStatement", "src": "2781:17:0"}, {"eventCall": {"arguments": [{"id": 120, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 112, "src": "2834:8:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 121, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108, "src": "2844:8:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 119, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16, "src": "2813:20:0", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 122, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2813:40:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 123, "nodeType": "EmitStatement", "src": "2808:45:0"}]}, "documentation": {"id": 106, "nodeType": "StructuredDocumentation", "src": "2525:143:0", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."}, "id": 125, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOwnership", "nameLocation": "2682:18:0", "nodeType": "FunctionDefinition", "parameters": {"id": 109, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 108, "mutability": "mutable", "name": "newOwner", "nameLocation": "2709:8:0", "nodeType": "VariableDeclaration", "scope": 125, "src": "2701:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 107, "name": "address", "nodeType": "ElementaryTypeName", "src": "2701:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2700:18:0"}, "returnParameters": {"id": 110, "nodeType": "ParameterList", "parameters": [], "src": "2736:0:0"}, "scope": 131, "src": "2673:187:0", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 126, "nodeType": "StructuredDocumentation", "src": "2866:254:0", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 130, "mutability": "mutable", "name": "__gap", "nameLocation": "3145:5:0", "nodeType": "VariableDeclaration", "scope": 131, "src": "3125:25:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage", "typeString": "uint256[49]"}, "typeName": {"baseType": {"id": 127, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3125:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 129, "length": {"hexValue": "3439", "id": 128, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3133:2:0", "typeDescriptions": {"typeIdentifier": "t_rational_49_by_1", "typeString": "int_const 49"}, "value": "49"}, "nodeType": "ArrayTypeName", "src": "3125:11:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage_ptr", "typeString": "uint256[49]"}}, "visibility": "private"}], "scope": 132, "src": "708:2445:0", "usedErrors": []}], "src": "102:3052:0"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "Initializable": [282]}, "id": 283, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 133, "literals": ["solidity", "^", "0.8", ".2"], "nodeType": "PragmaDirective", "src": "113:23:1"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "file": "../../utils/AddressUpgradeable.sol", "id": 134, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 283, "sourceUnit": 2178, "src": "138:44:1", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [], "canonicalName": "Initializable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 135, "nodeType": "StructuredDocumentation", "src": "184:2198:1", "text": " @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="}, "fullyImplemented": true, "id": 282, "linearizedBaseContracts": [282], "name": "Initializable", "nameLocation": "2401:13:1", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "documentation": {"id": 136, "nodeType": "StructuredDocumentation", "src": "2421:109:1", "text": " @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"}, "id": 138, "mutability": "mutable", "name": "_initialized", "nameLocation": "2549:12:1", "nodeType": "VariableDeclaration", "scope": 282, "src": "2535:26:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 137, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2535:5:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "private"}, {"constant": false, "documentation": {"id": 139, "nodeType": "StructuredDocumentation", "src": "2568:91:1", "text": " @dev Indicates that the contract is in the process of being initialized."}, "id": 141, "mutability": "mutable", "name": "_initializing", "nameLocation": "2677:13:1", "nodeType": "VariableDeclaration", "scope": 282, "src": "2664:26:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 140, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2664:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "private"}, {"anonymous": false, "documentation": {"id": 142, "nodeType": "StructuredDocumentation", "src": "2697:90:1", "text": " @dev Triggered when the contract has been initialized or reinitialized."}, "eventSelector": "7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498", "id": 146, "name": "Initialized", "nameLocation": "2798:11:1", "nodeType": "EventDefinition", "parameters": {"id": 145, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 144, "indexed": false, "mutability": "mutable", "name": "version", "nameLocation": "2816:7:1", "nodeType": "VariableDeclaration", "scope": 146, "src": "2810:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 143, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2810:5:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "2809:15:1"}, "src": "2792:33:1"}, {"body": {"id": 201, "nodeType": "Block", "src": "3101:483:1", "statements": [{"assignments": [150], "declarations": [{"constant": false, "id": 150, "mutability": "mutable", "name": "isTopLevelCall", "nameLocation": "3116:14:1", "nodeType": "VariableDeclaration", "scope": 201, "src": "3111:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 149, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3111:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 153, "initialValue": {"id": 152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3133:14:1", "subExpression": {"id": 151, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "3134:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "3111:36:1"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 155, "name": "isTopLevelCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "3179:14:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 158, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 156, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "3197:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"hexValue": "31", "id": 157, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3212:1:1", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3197:16:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3179:34:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 160, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3178:36:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 168, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3219:45:1", "subExpression": {"arguments": [{"arguments": [{"id": 165, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3258:4:1", "typeDescriptions": {"typeIdentifier": "t_contract$_Initializable_$282", "typeString": "contract Initializable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_Initializable_$282", "typeString": "contract Initializable"}], "id": 164, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3250:7:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 163, "name": "address", "nodeType": "ElementaryTypeName", "src": "3250:7:1", "typeDescriptions": {}}}, "id": 166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3250:13:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 161, "name": "AddressUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2177, "src": "3220:18:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$2177_$", "typeString": "type(library AddressUpgradeable)"}}, "id": 162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3239:10:1", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 1952, "src": "3220:29:1", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 167, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3220:44:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 171, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 169, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "3268:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "31", "id": 170, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3284:1:1", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3268:17:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3219:66:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 173, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3218:68:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3178:108:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564", "id": 175, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3300:48:1", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}, "value": "Initializable: contract is already initialized"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}], "id": 154, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3157:7:1", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 176, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3157:201:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 177, "nodeType": "ExpressionStatement", "src": "3157:201:1"}, {"expression": {"id": 180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 178, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "3368:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "31", "id": 179, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3383:1:1", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3368:16:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "id": 181, "nodeType": "ExpressionStatement", "src": "3368:16:1"}, {"condition": {"id": 182, "name": "isTopLevelCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "3398:14:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 188, "nodeType": "IfStatement", "src": "3394:65:1", "trueBody": {"id": 187, "nodeType": "Block", "src": "3414:45:1", "statements": [{"expression": {"id": 185, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 183, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "3428:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 184, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3444:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "3428:20:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 186, "nodeType": "ExpressionStatement", "src": "3428:20:1"}]}}, {"id": 189, "nodeType": "PlaceholderStatement", "src": "3468:1:1"}, {"condition": {"id": 190, "name": "isTopLevelCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "3483:14:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 200, "nodeType": "IfStatement", "src": "3479:99:1", "trueBody": {"id": 199, "nodeType": "Block", "src": "3499:79:1", "statements": [{"expression": {"id": 193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 191, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "3513:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 192, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3529:5:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "3513:21:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 194, "nodeType": "ExpressionStatement", "src": "3513:21:1"}, {"eventCall": {"arguments": [{"hexValue": "31", "id": 196, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3565:1:1", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 195, "name": "Initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 146, "src": "3553:11:1", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)"}}, "id": 197, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3553:14:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 198, "nodeType": "EmitStatement", "src": "3548:19:1"}]}}]}, "documentation": {"id": 147, "nodeType": "StructuredDocumentation", "src": "2831:242:1", "text": " @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`."}, "id": 202, "name": "initializer", "nameLocation": "3087:11:1", "nodeType": "ModifierDefinition", "parameters": {"id": 148, "nodeType": "ParameterList", "parameters": [], "src": "3098:2:1"}, "src": "3078:506:1", "virtual": false, "visibility": "internal"}, {"body": {"id": 234, "nodeType": "Block", "src": "4399:255:1", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "4417:14:1", "subExpression": {"id": 208, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "4418:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 210, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "4435:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 211, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 205, "src": "4450:7:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "4435:22:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4417:40:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564", "id": 214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4459:48:1", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}, "value": "Initializable: contract is already initialized"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759", "typeString": "literal_string \"Initializable: contract is already initialized\""}], "id": 207, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4409:7:1", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 215, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4409:99:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 216, "nodeType": "ExpressionStatement", "src": "4409:99:1"}, {"expression": {"id": 219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 217, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "4518:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 218, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 205, "src": "4533:7:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "4518:22:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "id": 220, "nodeType": "ExpressionStatement", "src": "4518:22:1"}, {"expression": {"id": 223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 221, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "4550:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 222, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4566:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "4550:20:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 224, "nodeType": "ExpressionStatement", "src": "4550:20:1"}, {"id": 225, "nodeType": "PlaceholderStatement", "src": "4580:1:1"}, {"expression": {"id": 228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 226, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "4591:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 227, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4607:5:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "4591:21:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 229, "nodeType": "ExpressionStatement", "src": "4591:21:1"}, {"eventCall": {"arguments": [{"id": 231, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 205, "src": "4639:7:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 230, "name": "Initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 146, "src": "4627:11:1", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)"}}, "id": 232, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4627:20:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 233, "nodeType": "EmitStatement", "src": "4622:25:1"}]}, "documentation": {"id": 203, "nodeType": "StructuredDocumentation", "src": "3590:766:1", "text": " @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\n initialization step. This is essential to configure modules that are added through upgrades and that require\n initialization.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator."}, "id": 235, "name": "reinitializer", "nameLocation": "4370:13:1", "nodeType": "ModifierDefinition", "parameters": {"id": 206, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 205, "mutability": "mutable", "name": "version", "nameLocation": "4390:7:1", "nodeType": "VariableDeclaration", "scope": 235, "src": "4384:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 204, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4384:5:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "4383:15:1"}, "src": "4361:293:1", "virtual": false, "visibility": "internal"}, {"body": {"id": 244, "nodeType": "Block", "src": "4892:97:1", "statements": [{"expression": {"arguments": [{"id": 239, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "4910:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67", "id": 240, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4925:45:1", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b", "typeString": "literal_string \"Initializable: contract is not initializing\""}, "value": "Initializable: contract is not initializing"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b", "typeString": "literal_string \"Initializable: contract is not initializing\""}], "id": 238, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4902:7:1", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 241, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4902:69:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 242, "nodeType": "ExpressionStatement", "src": "4902:69:1"}, {"id": 243, "nodeType": "PlaceholderStatement", "src": "4981:1:1"}]}, "documentation": {"id": 236, "nodeType": "StructuredDocumentation", "src": "4660:199:1", "text": " @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."}, "id": 245, "name": "onlyInitializing", "nameLocation": "4873:16:1", "nodeType": "ModifierDefinition", "parameters": {"id": 237, "nodeType": "ParameterList", "parameters": [], "src": "4889:2:1"}, "src": "4864:125:1", "virtual": false, "visibility": "internal"}, {"body": {"id": 280, "nodeType": "Block", "src": "5437:230:1", "statements": [{"expression": {"arguments": [{"id": 251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "5455:14:1", "subExpression": {"id": 250, "name": "_initializing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 141, "src": "5456:13:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67", "id": 252, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5471:41:1", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a", "typeString": "literal_string \"Initializable: contract is initializing\""}, "value": "Initializable: contract is initializing"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a", "typeString": "literal_string \"Initializable: contract is initializing\""}], "id": 249, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5447:7:1", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 253, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5447:66:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 254, "nodeType": "ExpressionStatement", "src": "5447:66:1"}, {"condition": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 255, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "5527:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"arguments": [{"id": 258, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5547:5:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 257, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5547:5:1", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}], "id": 256, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "5542:4:1", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5542:11:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint8", "typeString": "type(uint8)"}}, "id": 260, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5554:3:1", "memberName": "max", "nodeType": "MemberAccess", "src": "5542:15:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "5527:30:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 279, "nodeType": "IfStatement", "src": "5523:138:1", "trueBody": {"id": 278, "nodeType": "Block", "src": "5559:102:1", "statements": [{"expression": {"id": 268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 262, "name": "_initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 138, "src": "5573:12:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"arguments": [{"id": 265, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5593:5:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 264, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5593:5:1", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}], "id": 263, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "5588:4:1", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 266, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5588:11:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint8", "typeString": "type(uint8)"}}, "id": 267, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5600:3:1", "memberName": "max", "nodeType": "MemberAccess", "src": "5588:15:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "5573:30:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "id": 269, "nodeType": "ExpressionStatement", "src": "5573:30:1"}, {"eventCall": {"arguments": [{"expression": {"arguments": [{"id": 273, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5639:5:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 272, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5639:5:1", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}], "id": 271, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "5634:4:1", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 274, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5634:11:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint8", "typeString": "type(uint8)"}}, "id": 275, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5646:3:1", "memberName": "max", "nodeType": "MemberAccess", "src": "5634:15:1", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 270, "name": "Initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 146, "src": "5622:11:1", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)"}}, "id": 276, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5622:28:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 277, "nodeType": "EmitStatement", "src": "5617:33:1"}]}}]}, "documentation": {"id": 246, "nodeType": "StructuredDocumentation", "src": "4995:388:1", "text": " @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies."}, "id": 281, "implemented": true, "kind": "function", "modifiers": [], "name": "_disableInitializers", "nameLocation": "5397:20:1", "nodeType": "FunctionDefinition", "parameters": {"id": 247, "nodeType": "ParameterList", "parameters": [], "src": "5417:2:1"}, "returnParameters": {"id": 248, "nodeType": "ParameterList", "parameters": [], "src": "5437:0:1"}, "scope": 282, "src": "5388:279:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}], "scope": 283, "src": "2383:3286:1", "usedErrors": []}], "src": "113:5557:1"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "Initializable": [282], "ReentrancyGuardUpgradeable": [341]}, "id": 342, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 284, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "97:23:2"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../proxy/utils/Initializable.sol", "id": 285, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 342, "sourceUnit": 283, "src": "121:42:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 287, "name": "Initializable", "nameLocations": ["964:13:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 282, "src": "964:13:2"}, "id": 288, "nodeType": "InheritanceSpecifier", "src": "964:13:2"}], "canonicalName": "ReentrancyGuardUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 286, "nodeType": "StructuredDocumentation", "src": "165:750:2", "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 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": 341, "linearizedBaseContracts": [341, 282], "name": "ReentrancyGuardUpgradeable", "nameLocation": "934:26:2", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 291, "mutability": "constant", "name": "_NOT_ENTERED", "nameLocation": "1757:12:2", "nodeType": "VariableDeclaration", "scope": 341, "src": "1732:41:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 289, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1732:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31", "id": 290, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1772:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "visibility": "private"}, {"constant": true, "id": 294, "mutability": "constant", "name": "_ENTERED", "nameLocation": "1804:8:2", "nodeType": "VariableDeclaration", "scope": 341, "src": "1779:37:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 292, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1779:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "32", "id": 293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1815:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "visibility": "private"}, {"constant": false, "id": 296, "mutability": "mutable", "name": "_status", "nameLocation": "1839:7:2", "nodeType": "VariableDeclaration", "scope": 341, "src": "1823:23:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 295, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1823:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 304, "nodeType": "Block", "src": "1913:51:2", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 301, "name": "__ReentrancyGuard_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 315, "src": "1923:32:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 302, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1923:34:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 303, "nodeType": "ExpressionStatement", "src": "1923:34:2"}]}, "id": 305, "implemented": true, "kind": "function", "modifiers": [{"id": 299, "kind": "modifierInvocation", "modifierName": {"id": 298, "name": "onlyInitializing", "nameLocations": ["1896:16:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "1896:16:2"}, "nodeType": "ModifierInvocation", "src": "1896:16:2"}], "name": "__ReentrancyGuard_init", "nameLocation": "1862:22:2", "nodeType": "FunctionDefinition", "parameters": {"id": 297, "nodeType": "ParameterList", "parameters": [], "src": "1884:2:2"}, "returnParameters": {"id": 300, "nodeType": "ParameterList", "parameters": [], "src": "1913:0:2"}, "scope": 341, "src": "1853:111:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 314, "nodeType": "Block", "src": "2040:39:2", "statements": [{"expression": {"id": 312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 310, "name": "_status", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 296, "src": "2050:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 311, "name": "_NOT_ENTERED", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 291, "src": "2060:12:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2050:22:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 313, "nodeType": "ExpressionStatement", "src": "2050:22:2"}]}, "id": 315, "implemented": true, "kind": "function", "modifiers": [{"id": 308, "kind": "modifierInvocation", "modifierName": {"id": 307, "name": "onlyInitializing", "nameLocations": ["2023:16:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "2023:16:2"}, "nodeType": "ModifierInvocation", "src": "2023:16:2"}], "name": "__ReentrancyGuard_init_unchained", "nameLocation": "1979:32:2", "nodeType": "FunctionDefinition", "parameters": {"id": 306, "nodeType": "ParameterList", "parameters": [], "src": "2011:2:2"}, "returnParameters": {"id": 309, "nodeType": "ParameterList", "parameters": [], "src": "2040:0:2"}, "scope": 341, "src": "1970:109:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 334, "nodeType": "Block", "src": "2480:421:2", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 319, "name": "_status", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 296, "src": "2569:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 320, "name": "_ENTERED", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 294, "src": "2580:8:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2569:19:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c", "id": 322, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2590:33:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619", "typeString": "literal_string \"ReentrancyGuard: reentrant call\""}, "value": "ReentrancyGuard: reentrant call"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619", "typeString": "literal_string \"ReentrancyGuard: reentrant call\""}], "id": 318, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2561:7:2", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 323, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2561:63:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 324, "nodeType": "ExpressionStatement", "src": "2561:63:2"}, {"expression": {"id": 327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 325, "name": "_status", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 296, "src": "2699:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 326, "name": "_ENTERED", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 294, "src": "2709:8:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2699:18:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 328, "nodeType": "ExpressionStatement", "src": "2699:18:2"}, {"id": 329, "nodeType": "PlaceholderStatement", "src": "2728:1:2"}, {"expression": {"id": 332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 330, "name": "_status", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 296, "src": "2872:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 331, "name": "_NOT_ENTERED", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 291, "src": "2882:12:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2872:22:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 333, "nodeType": "ExpressionStatement", "src": "2872:22:2"}]}, "documentation": {"id": 316, "nodeType": "StructuredDocumentation", "src": "2085:366:2", "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": 335, "name": "nonReentrant", "nameLocation": "2465:12:2", "nodeType": "ModifierDefinition", "parameters": {"id": 317, "nodeType": "ParameterList", "parameters": [], "src": "2477:2:2"}, "src": "2456:445:2", "virtual": false, "visibility": "internal"}, {"constant": false, "documentation": {"id": 336, "nodeType": "StructuredDocumentation", "src": "2907:254:2", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 340, "mutability": "mutable", "name": "__gap", "nameLocation": "3186:5:2", "nodeType": "VariableDeclaration", "scope": 341, "src": "3166:25:2", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage", "typeString": "uint256[49]"}, "typeName": {"baseType": {"id": 337, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3166:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 339, "length": {"hexValue": "3439", "id": 338, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3174:2:2", "typeDescriptions": {"typeIdentifier": "t_rational_49_by_1", "typeString": "int_const 49"}, "value": "49"}, "nodeType": "ArrayTypeName", "src": "3166:11:2", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage_ptr", "typeString": "uint256[49]"}}, "visibility": "private"}], "scope": 342, "src": "916:2278:2", "usedErrors": []}], "src": "97:3098:2"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", "exportedSymbols": {"IERC20Upgradeable": [419]}, "id": 420, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 343, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:3"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20Upgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 344, "nodeType": "StructuredDocumentation", "src": "131:70:3", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 419, "linearizedBaseContracts": [419], "name": "IERC20Upgradeable", "nameLocation": "212:17:3", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 345, "nodeType": "StructuredDocumentation", "src": "236: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."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 353, "name": "Transfer", "nameLocation": "405:8:3", "nodeType": "EventDefinition", "parameters": {"id": 352, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 347, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "430:4:3", "nodeType": "VariableDeclaration", "scope": 353, "src": "414:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 346, "name": "address", "nodeType": "ElementaryTypeName", "src": "414:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 349, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "452:2:3", "nodeType": "VariableDeclaration", "scope": 353, "src": "436:18:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 348, "name": "address", "nodeType": "ElementaryTypeName", "src": "436:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 351, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "464:5:3", "nodeType": "VariableDeclaration", "scope": 353, "src": "456:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 350, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "456:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "413:57:3"}, "src": "399:72:3"}, {"anonymous": false, "documentation": {"id": 354, "nodeType": "StructuredDocumentation", "src": "477: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": 362, "name": "Approval", "nameLocation": "636:8:3", "nodeType": "EventDefinition", "parameters": {"id": 361, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 356, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "661:5:3", "nodeType": "VariableDeclaration", "scope": 362, "src": "645:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 355, "name": "address", "nodeType": "ElementaryTypeName", "src": "645:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 358, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "684:7:3", "nodeType": "VariableDeclaration", "scope": 362, "src": "668:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 357, "name": "address", "nodeType": "ElementaryTypeName", "src": "668:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 360, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "701:5:3", "nodeType": "VariableDeclaration", "scope": 362, "src": "693:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 359, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "693:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "644:63:3"}, "src": "630:78:3"}, {"documentation": {"id": 363, "nodeType": "StructuredDocumentation", "src": "714:66:3", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 368, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "794:11:3", "nodeType": "FunctionDefinition", "parameters": {"id": 364, "nodeType": "ParameterList", "parameters": [], "src": "805:2:3"}, "returnParameters": {"id": 367, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 366, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 368, "src": "831:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 365, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "831:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "830:9:3"}, "scope": 419, "src": "785:55:3", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 369, "nodeType": "StructuredDocumentation", "src": "846:72:3", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 376, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "932:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 372, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 371, "mutability": "mutable", "name": "account", "nameLocation": "950:7:3", "nodeType": "VariableDeclaration", "scope": 376, "src": "942:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 370, "name": "address", "nodeType": "ElementaryTypeName", "src": "942:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "941:17:3"}, "returnParameters": {"id": 375, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 374, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 376, "src": "982:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 373, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "982:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "981:9:3"}, "scope": 419, "src": "923:68:3", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 377, "nodeType": "StructuredDocumentation", "src": "997:202:3", "text": " @dev Moves `amount` 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": 386, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1213:8:3", "nodeType": "FunctionDefinition", "parameters": {"id": 382, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 379, "mutability": "mutable", "name": "to", "nameLocation": "1230:2:3", "nodeType": "VariableDeclaration", "scope": 386, "src": "1222:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 378, "name": "address", "nodeType": "ElementaryTypeName", "src": "1222:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 381, "mutability": "mutable", "name": "amount", "nameLocation": "1242:6:3", "nodeType": "VariableDeclaration", "scope": 386, "src": "1234:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 380, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1234:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1221:28:3"}, "returnParameters": {"id": 385, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 384, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 386, "src": "1268:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 383, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1268:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1267:6:3"}, "scope": 419, "src": "1204:70:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 387, "nodeType": "StructuredDocumentation", "src": "1280: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": 396, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1558:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 392, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 389, "mutability": "mutable", "name": "owner", "nameLocation": "1576:5:3", "nodeType": "VariableDeclaration", "scope": 396, "src": "1568:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 388, "name": "address", "nodeType": "ElementaryTypeName", "src": "1568:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 391, "mutability": "mutable", "name": "spender", "nameLocation": "1591:7:3", "nodeType": "VariableDeclaration", "scope": 396, "src": "1583:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 390, "name": "address", "nodeType": "ElementaryTypeName", "src": "1583:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1567:32:3"}, "returnParameters": {"id": 395, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 394, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 396, "src": "1623:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 393, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1623:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1622:9:3"}, "scope": 419, "src": "1549:83:3", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 397, "nodeType": "StructuredDocumentation", "src": "1638:642:3", "text": " @dev Sets `amount` as the allowance of `spender` over the 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": 406, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2294:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 402, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 399, "mutability": "mutable", "name": "spender", "nameLocation": "2310:7:3", "nodeType": "VariableDeclaration", "scope": 406, "src": "2302:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 398, "name": "address", "nodeType": "ElementaryTypeName", "src": "2302:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 401, "mutability": "mutable", "name": "amount", "nameLocation": "2327:6:3", "nodeType": "VariableDeclaration", "scope": 406, "src": "2319:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 400, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2319:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2301:33:3"}, "returnParameters": {"id": 405, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 404, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 406, "src": "2353:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 403, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2353:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2352:6:3"}, "scope": 419, "src": "2285:74:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 407, "nodeType": "StructuredDocumentation", "src": "2365:287:3", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` 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": 418, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2666:12:3", "nodeType": "FunctionDefinition", "parameters": {"id": 414, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 409, "mutability": "mutable", "name": "from", "nameLocation": "2696:4:3", "nodeType": "VariableDeclaration", "scope": 418, "src": "2688:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 408, "name": "address", "nodeType": "ElementaryTypeName", "src": "2688:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 411, "mutability": "mutable", "name": "to", "nameLocation": "2718:2:3", "nodeType": "VariableDeclaration", "scope": 418, "src": "2710:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 410, "name": "address", "nodeType": "ElementaryTypeName", "src": "2710:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 413, "mutability": "mutable", "name": "amount", "nameLocation": "2738:6:3", "nodeType": "VariableDeclaration", "scope": 418, "src": "2730:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 412, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2730:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2678:72:3"}, "returnParameters": {"id": 417, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 416, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 418, "src": "2769:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 415, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2769:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2768:6:3"}, "scope": 419, "src": "2657:118:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 420, "src": "202:2575:3", "usedErrors": []}], "src": "106:2672:3"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", "exportedSymbols": {"IERC20PermitUpgradeable": [455]}, "id": 456, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 421, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "114:23:4"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20PermitUpgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 422, "nodeType": "StructuredDocumentation", "src": "139:480:4", "text": " @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."}, "fullyImplemented": false, "id": 455, "linearizedBaseContracts": [455], "name": "IERC20PermitUpgradeable", "nameLocation": "630:23:4", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 423, "nodeType": "StructuredDocumentation", "src": "660:792:4", "text": " @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."}, "functionSelector": "d505accf", "id": 440, "implemented": false, "kind": "function", "modifiers": [], "name": "permit", "nameLocation": "1466:6:4", "nodeType": "FunctionDefinition", "parameters": {"id": 438, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 425, "mutability": "mutable", "name": "owner", "nameLocation": "1490:5:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1482:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 424, "name": "address", "nodeType": "ElementaryTypeName", "src": "1482:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 427, "mutability": "mutable", "name": "spender", "nameLocation": "1513:7:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1505:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 426, "name": "address", "nodeType": "ElementaryTypeName", "src": "1505:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 429, "mutability": "mutable", "name": "value", "nameLocation": "1538:5:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1530:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 428, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1530:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 431, "mutability": "mutable", "name": "deadline", "nameLocation": "1561:8:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1553:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 430, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1553:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 433, "mutability": "mutable", "name": "v", "nameLocation": "1585:1:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1579:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 432, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1579:5:4", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}, {"constant": false, "id": 435, "mutability": "mutable", "name": "r", "nameLocation": "1604:1:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1596:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 434, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1596:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 437, "mutability": "mutable", "name": "s", "nameLocation": "1623:1:4", "nodeType": "VariableDeclaration", "scope": 440, "src": "1615:9:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 436, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1615:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "1472:158:4"}, "returnParameters": {"id": 439, "nodeType": "ParameterList", "parameters": [], "src": "1639:0:4"}, "scope": 455, "src": "1457:183:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 441, "nodeType": "StructuredDocumentation", "src": "1646:294:4", "text": " @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."}, "functionSelector": "7ecebe00", "id": 448, "implemented": false, "kind": "function", "modifiers": [], "name": "nonces", "nameLocation": "1954:6:4", "nodeType": "FunctionDefinition", "parameters": {"id": 444, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 443, "mutability": "mutable", "name": "owner", "nameLocation": "1969:5:4", "nodeType": "VariableDeclaration", "scope": 448, "src": "1961:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 442, "name": "address", "nodeType": "ElementaryTypeName", "src": "1961:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1960:15:4"}, "returnParameters": {"id": 447, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 446, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 448, "src": "1999:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 445, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1999:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1998:9:4"}, "scope": 455, "src": "1945:63:4", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 449, "nodeType": "StructuredDocumentation", "src": "2014:128:4", "text": " @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."}, "functionSelector": "3644e515", "id": 454, "implemented": false, "kind": "function", "modifiers": [], "name": "DOMAIN_SEPARATOR", "nameLocation": "2209:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 450, "nodeType": "ParameterList", "parameters": [], "src": "2225:2:4"}, "returnParameters": {"id": 453, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 452, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 454, "src": "2251:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 451, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2251:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2250:9:4"}, "scope": 455, "src": "2200:60:4", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 456, "src": "620:1642:4", "usedErrors": []}], "src": "114:2149:4"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "IERC20PermitUpgradeable": [455], "IERC20Upgradeable": [419], "SafeERC20Upgradeable": [736]}, "id": 737, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 457, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "115:23:5"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", "file": "../IERC20Upgradeable.sol", "id": 458, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 737, "sourceUnit": 420, "src": "140:34:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", "file": "../extensions/draft-IERC20PermitUpgradeable.sol", "id": 459, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 737, "sourceUnit": 456, "src": "175:57:5", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "file": "../../../utils/AddressUpgradeable.sol", "id": 460, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 737, "sourceUnit": 2178, "src": "233:47:5", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "SafeERC20Upgradeable", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 461, "nodeType": "StructuredDocumentation", "src": "282:457:5", "text": " @title SafeERC20\n @dev Wrappers around ERC20 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": 736, "linearizedBaseContracts": [736], "name": "SafeERC20Upgradeable", "nameLocation": "748:20:5", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 464, "libraryName": {"id": 462, "name": "AddressUpgradeable", "nameLocations": ["781:18:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 2177, "src": "781:18:5"}, "nodeType": "UsingForDirective", "src": "775:37:5", "typeName": {"id": 463, "name": "address", "nodeType": "ElementaryTypeName", "src": "804:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, {"body": {"id": 486, "nodeType": "Block", "src": "931:103:5", "statements": [{"expression": {"arguments": [{"id": 475, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 467, "src": "961:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, {"arguments": [{"expression": {"expression": {"id": 478, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 467, "src": "991:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "997:8:5", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 386, "src": "991:14:5", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1006:8:5", "memberName": "selector", "nodeType": "MemberAccess", "src": "991:23:5", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"id": 481, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 469, "src": "1016:2:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 482, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 471, "src": "1020:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 476, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "968:3:5", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 477, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "972:18:5", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "968:22:5", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 483, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "968:58:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 474, "name": "_callOptionalReturn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "941:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (contract IERC20Upgradeable,bytes memory)"}}, "id": 484, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "941:86:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 485, "nodeType": "ExpressionStatement", "src": "941:86:5"}]}, "id": 487, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransfer", "nameLocation": "827:12:5", "nodeType": "FunctionDefinition", "parameters": {"id": 472, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 467, "mutability": "mutable", "name": "token", "nameLocation": "867:5:5", "nodeType": "VariableDeclaration", "scope": 487, "src": "849:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, "typeName": {"id": 466, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 465, "name": "IERC20Upgradeable", "nameLocations": ["849:17:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "849:17:5"}, "referencedDeclaration": 419, "src": "849:17:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 469, "mutability": "mutable", "name": "to", "nameLocation": "890:2:5", "nodeType": "VariableDeclaration", "scope": 487, "src": "882:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 468, "name": "address", "nodeType": "ElementaryTypeName", "src": "882:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 471, "mutability": "mutable", "name": "value", "nameLocation": "910:5:5", "nodeType": "VariableDeclaration", "scope": 487, "src": "902:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 470, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "902:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "839:82:5"}, "returnParameters": {"id": 473, "nodeType": "ParameterList", "parameters": [], "src": "931:0:5"}, "scope": 736, "src": "818:216:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 512, "nodeType": "Block", "src": "1179:113:5", "statements": [{"expression": {"arguments": [{"id": 500, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 490, "src": "1209:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, {"arguments": [{"expression": {"expression": {"id": 503, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 490, "src": "1239:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1245:12:5", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 418, "src": "1239: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": 505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1258:8:5", "memberName": "selector", "nodeType": "MemberAccess", "src": "1239:27:5", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"id": 506, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 492, "src": "1268:4:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 507, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 494, "src": "1274:2:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 508, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 496, "src": "1278:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 501, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1216:3:5", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 502, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1220:18:5", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "1216:22:5", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 509, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1216:68:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 499, "name": "_callOptionalReturn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "1189:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (contract IERC20Upgradeable,bytes memory)"}}, "id": 510, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1189:96:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 511, "nodeType": "ExpressionStatement", "src": "1189:96:5"}]}, "id": 513, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "1049:16:5", "nodeType": "FunctionDefinition", "parameters": {"id": 497, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 490, "mutability": "mutable", "name": "token", "nameLocation": "1093:5:5", "nodeType": "VariableDeclaration", "scope": 513, "src": "1075:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, "typeName": {"id": 489, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 488, "name": "IERC20Upgradeable", "nameLocations": ["1075:17:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "1075:17:5"}, "referencedDeclaration": 419, "src": "1075:17:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 492, "mutability": "mutable", "name": "from", "nameLocation": "1116:4:5", "nodeType": "VariableDeclaration", "scope": 513, "src": "1108:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 491, "name": "address", "nodeType": "ElementaryTypeName", "src": "1108:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 494, "mutability": "mutable", "name": "to", "nameLocation": "1138:2:5", "nodeType": "VariableDeclaration", "scope": 513, "src": "1130:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 493, "name": "address", "nodeType": "ElementaryTypeName", "src": "1130:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 496, "mutability": "mutable", "name": "value", "nameLocation": "1158:5:5", "nodeType": "VariableDeclaration", "scope": 513, "src": "1150:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 495, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1150:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1065:104:5"}, "returnParameters": {"id": 498, "nodeType": "ParameterList", "parameters": [], "src": "1179:0:5"}, "scope": 736, "src": "1040:252:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 556, "nodeType": "Block", "src": "1669:497:5", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 527, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 525, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 521, "src": "1918:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 526, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1927:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1918:10:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 528, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1917:12:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"id": 533, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1958:4:5", "typeDescriptions": {"typeIdentifier": "t_contract$_SafeERC20Upgradeable_$736", "typeString": "library SafeERC20Upgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_SafeERC20Upgradeable_$736", "typeString": "library SafeERC20Upgradeable"}], "id": 532, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1950:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 531, "name": "address", "nodeType": "ElementaryTypeName", "src": "1950:7:5", "typeDescriptions": {}}}, "id": 534, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1950:13:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 535, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 519, "src": "1965:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 529, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 517, "src": "1934:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 530, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1940:9:5", "memberName": "allowance", "nodeType": "MemberAccess", "referencedDeclaration": 396, "src": "1934:15:5", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)"}}, "id": 536, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1934:39:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 537, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1977:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1934:44:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 539, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1933:46:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1917:62:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365", "id": 541, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1993:56:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25", "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}, "value": "SafeERC20: approve from non-zero to non-zero allowance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25", "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}], "id": 524, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1896:7:5", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1896:163:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 543, "nodeType": "ExpressionStatement", "src": "1896:163:5"}, {"expression": {"arguments": [{"id": 545, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 517, "src": "2089:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, {"arguments": [{"expression": {"expression": {"id": 548, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 517, "src": "2119:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 549, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2125:7:5", "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 406, "src": "2119:13:5", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2133:8:5", "memberName": "selector", "nodeType": "MemberAccess", "src": "2119:22:5", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"id": 551, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 519, "src": "2143:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 552, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 521, "src": "2152:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 546, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2096:3:5", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 547, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2100:18:5", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "2096:22:5", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 553, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2096:62:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 544, "name": "_callOptionalReturn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2069:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (contract IERC20Upgradeable,bytes memory)"}}, "id": 554, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2069:90:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 555, "nodeType": "ExpressionStatement", "src": "2069:90:5"}]}, "documentation": {"id": 514, "nodeType": "StructuredDocumentation", "src": "1298:249:5", "text": " @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."}, "id": 557, "implemented": true, "kind": "function", "modifiers": [], "name": "safeApprove", "nameLocation": "1561:11:5", "nodeType": "FunctionDefinition", "parameters": {"id": 522, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 517, "mutability": "mutable", "name": "token", "nameLocation": "1600:5:5", "nodeType": "VariableDeclaration", "scope": 557, "src": "1582:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, "typeName": {"id": 516, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 515, "name": "IERC20Upgradeable", "nameLocations": ["1582:17:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "1582:17:5"}, "referencedDeclaration": 419, "src": "1582:17:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 519, "mutability": "mutable", "name": "spender", "nameLocation": "1623:7:5", "nodeType": "VariableDeclaration", "scope": 557, "src": "1615:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 518, "name": "address", "nodeType": "ElementaryTypeName", "src": "1615:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 521, "mutability": "mutable", "name": "value", "nameLocation": "1648:5:5", "nodeType": "VariableDeclaration", "scope": 557, "src": "1640:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 520, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1640:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1572:87:5"}, "returnParameters": {"id": 523, "nodeType": "ParameterList", "parameters": [], "src": "1669:0:5"}, "scope": 736, "src": "1552:614:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 592, "nodeType": "Block", "src": "2299:194:5", "statements": [{"assignments": [568], "declarations": [{"constant": false, "id": 568, "mutability": "mutable", "name": "newAllowance", "nameLocation": "2317:12:5", "nodeType": "VariableDeclaration", "scope": 592, "src": "2309:20:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 567, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2309:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 579, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 578, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"id": 573, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2356:4:5", "typeDescriptions": {"typeIdentifier": "t_contract$_SafeERC20Upgradeable_$736", "typeString": "library SafeERC20Upgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_SafeERC20Upgradeable_$736", "typeString": "library SafeERC20Upgradeable"}], "id": 572, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2348:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 571, "name": "address", "nodeType": "ElementaryTypeName", "src": "2348:7:5", "typeDescriptions": {}}}, "id": 574, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2348:13:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 575, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 562, "src": "2363:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 569, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 560, "src": "2332:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2338:9:5", "memberName": "allowance", "nodeType": "MemberAccess", "referencedDeclaration": 396, "src": "2332:15:5", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)"}}, "id": 576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2332:39:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 577, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 564, "src": "2374:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2332:47:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2309:70:5"}, {"expression": {"arguments": [{"id": 581, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 560, "src": "2409:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, {"arguments": [{"expression": {"expression": {"id": 584, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 560, "src": "2439:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 585, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2445:7:5", "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 406, "src": "2439:13:5", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2453:8:5", "memberName": "selector", "nodeType": "MemberAccess", "src": "2439:22:5", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"id": 587, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 562, "src": "2463:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 588, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 568, "src": "2472:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 582, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2416:3:5", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 583, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2420:18:5", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "2416:22:5", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2416:69:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 580, "name": "_callOptionalReturn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2389:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (contract IERC20Upgradeable,bytes memory)"}}, "id": 590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2389:97:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 591, "nodeType": "ExpressionStatement", "src": "2389:97:5"}]}, "id": 593, "implemented": true, "kind": "function", "modifiers": [], "name": "safeIncreaseAllowance", "nameLocation": "2181:21:5", "nodeType": "FunctionDefinition", "parameters": {"id": 565, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 560, "mutability": "mutable", "name": "token", "nameLocation": "2230:5:5", "nodeType": "VariableDeclaration", "scope": 593, "src": "2212:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, "typeName": {"id": 559, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 558, "name": "IERC20Upgradeable", "nameLocations": ["2212:17:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "2212:17:5"}, "referencedDeclaration": 419, "src": "2212:17:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 562, "mutability": "mutable", "name": "spender", "nameLocation": "2253:7:5", "nodeType": "VariableDeclaration", "scope": 593, "src": "2245:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 561, "name": "address", "nodeType": "ElementaryTypeName", "src": "2245:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 564, "mutability": "mutable", "name": "value", "nameLocation": "2278:5:5", "nodeType": "VariableDeclaration", "scope": 593, "src": "2270:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 563, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2270:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2202:87:5"}, "returnParameters": {"id": 566, "nodeType": "ParameterList", "parameters": [], "src": "2299:0:5"}, "scope": 736, "src": "2172:321:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 640, "nodeType": "Block", "src": "2626:370:5", "statements": [{"id": 639, "nodeType": "UncheckedBlock", "src": "2636:354:5", "statements": [{"assignments": [604], "declarations": [{"constant": false, "id": 604, "mutability": "mutable", "name": "oldAllowance", "nameLocation": "2668:12:5", "nodeType": "VariableDeclaration", "scope": 639, "src": "2660:20:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 603, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2660:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 613, "initialValue": {"arguments": [{"arguments": [{"id": 609, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2707:4:5", "typeDescriptions": {"typeIdentifier": "t_contract$_SafeERC20Upgradeable_$736", "typeString": "library SafeERC20Upgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_SafeERC20Upgradeable_$736", "typeString": "library SafeERC20Upgradeable"}], "id": 608, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2699:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 607, "name": "address", "nodeType": "ElementaryTypeName", "src": "2699:7:5", "typeDescriptions": {}}}, "id": 610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2699:13:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 611, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 598, "src": "2714:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 605, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "2683:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2689:9:5", "memberName": "allowance", "nodeType": "MemberAccess", "referencedDeclaration": 396, "src": "2683:15:5", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view external returns (uint256)"}}, "id": 612, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2683:39:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2660:62:5"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 615, "name": "oldAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 604, "src": "2744:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 616, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 600, "src": "2760:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2744:21:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", "id": 618, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2767:43:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a", "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""}, "value": "SafeERC20: decreased allowance below zero"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a", "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""}], "id": 614, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2736:7:5", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 619, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2736:75:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 620, "nodeType": "ExpressionStatement", "src": "2736:75:5"}, {"assignments": [622], "declarations": [{"constant": false, "id": 622, "mutability": "mutable", "name": "newAllowance", "nameLocation": "2833:12:5", "nodeType": "VariableDeclaration", "scope": 639, "src": "2825:20:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 621, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2825:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 626, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 625, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 623, "name": "oldAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 604, "src": "2848:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 624, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 600, "src": "2863:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2848:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2825:43:5"}, {"expression": {"arguments": [{"id": 628, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "2902:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, {"arguments": [{"expression": {"expression": {"id": 631, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "2932:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2938:7:5", "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 406, "src": "2932:13:5", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2946:8:5", "memberName": "selector", "nodeType": "MemberAccess", "src": "2932:22:5", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"id": 634, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 598, "src": "2956:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 635, "name": "newAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 622, "src": "2965:12:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 629, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2909:3:5", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 630, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2913:18:5", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "2909:22:5", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2909:69:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 627, "name": "_callOptionalReturn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 735, "src": "2882:19:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (contract IERC20Upgradeable,bytes memory)"}}, "id": 637, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2882:97:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 638, "nodeType": "ExpressionStatement", "src": "2882:97:5"}]}]}, "id": 641, "implemented": true, "kind": "function", "modifiers": [], "name": "safeDecreaseAllowance", "nameLocation": "2508:21:5", "nodeType": "FunctionDefinition", "parameters": {"id": 601, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 596, "mutability": "mutable", "name": "token", "nameLocation": "2557:5:5", "nodeType": "VariableDeclaration", "scope": 641, "src": "2539:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, "typeName": {"id": 595, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 594, "name": "IERC20Upgradeable", "nameLocations": ["2539:17:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "2539:17:5"}, "referencedDeclaration": 419, "src": "2539:17:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 598, "mutability": "mutable", "name": "spender", "nameLocation": "2580:7:5", "nodeType": "VariableDeclaration", "scope": 641, "src": "2572:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 597, "name": "address", "nodeType": "ElementaryTypeName", "src": "2572:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 600, "mutability": "mutable", "name": "value", "nameLocation": "2605:5:5", "nodeType": "VariableDeclaration", "scope": 641, "src": "2597:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 599, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2597:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2529:87:5"}, "returnParameters": {"id": 602, "nodeType": "ParameterList", "parameters": [], "src": "2626:0:5"}, "scope": 736, "src": "2499:497:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 696, "nodeType": "Block", "src": "3228:257:5", "statements": [{"assignments": [662], "declarations": [{"constant": false, "id": 662, "mutability": "mutable", "name": "nonceBefore", "nameLocation": "3246:11:5", "nodeType": "VariableDeclaration", "scope": 696, "src": "3238:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 661, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3238:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 667, "initialValue": {"arguments": [{"id": 665, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 646, "src": "3273:5:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 663, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "3260:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20PermitUpgradeable_$455", "typeString": "contract IERC20PermitUpgradeable"}}, "id": 664, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3266:6:5", "memberName": "nonces", "nodeType": "MemberAccess", "referencedDeclaration": 448, "src": "3260:12:5", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)"}}, "id": 666, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3260:19:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "3238:41:5"}, {"expression": {"arguments": [{"id": 671, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 646, "src": "3302:5:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 672, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 648, "src": "3309:7:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 673, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 650, "src": "3318:5:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 674, "name": "deadline", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 652, "src": "3325:8:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 675, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 654, "src": "3335:1:5", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, {"id": 676, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 656, "src": "3338:1:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 677, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 658, "src": "3341:1:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint8", "typeString": "uint8"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 668, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "3289:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20PermitUpgradeable_$455", "typeString": "contract IERC20PermitUpgradeable"}}, "id": 670, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3295:6:5", "memberName": "permit", "nodeType": "MemberAccess", "referencedDeclaration": 440, "src": "3289:12:5", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}}, "id": 678, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3289:54:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 679, "nodeType": "ExpressionStatement", "src": "3289:54:5"}, {"assignments": [681], "declarations": [{"constant": false, "id": 681, "mutability": "mutable", "name": "nonceAfter", "nameLocation": "3361:10:5", "nodeType": "VariableDeclaration", "scope": 696, "src": "3353:18:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 680, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3353:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 686, "initialValue": {"arguments": [{"id": 684, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 646, "src": "3387:5:5", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 682, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "3374:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20PermitUpgradeable_$455", "typeString": "contract IERC20PermitUpgradeable"}}, "id": 683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3380:6:5", "memberName": "nonces", "nodeType": "MemberAccess", "referencedDeclaration": 448, "src": "3374:12:5", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)"}}, "id": 685, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3374:19:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "3353:40:5"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 692, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 688, "name": "nonceAfter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 681, "src": "3411:10:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 691, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 689, "name": "nonceBefore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 662, "src": "3425:11:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 690, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3439:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3425:15:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3411:29:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5361666545524332303a207065726d697420646964206e6f742073756363656564", "id": 693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3442:35:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d", "typeString": "literal_string \"SafeERC20: permit did not succeed\""}, "value": "SafeERC20: permit did not succeed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d", "typeString": "literal_string \"SafeERC20: permit did not succeed\""}], "id": 687, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3403:7:5", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 694, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3403:75:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 695, "nodeType": "ExpressionStatement", "src": "3403:75:5"}]}, "id": 697, "implemented": true, "kind": "function", "modifiers": [], "name": "safePermit", "nameLocation": "3011:10:5", "nodeType": "FunctionDefinition", "parameters": {"id": 659, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 644, "mutability": "mutable", "name": "token", "nameLocation": "3055:5:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3031:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20PermitUpgradeable_$455", "typeString": "contract IERC20PermitUpgradeable"}, "typeName": {"id": 643, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 642, "name": "IERC20PermitUpgradeable", "nameLocations": ["3031:23:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 455, "src": "3031:23:5"}, "referencedDeclaration": 455, "src": "3031:23:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20PermitUpgradeable_$455", "typeString": "contract IERC20PermitUpgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 646, "mutability": "mutable", "name": "owner", "nameLocation": "3078:5:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3070:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 645, "name": "address", "nodeType": "ElementaryTypeName", "src": "3070:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 648, "mutability": "mutable", "name": "spender", "nameLocation": "3101:7:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3093:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 647, "name": "address", "nodeType": "ElementaryTypeName", "src": "3093:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 650, "mutability": "mutable", "name": "value", "nameLocation": "3126:5:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3118:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 649, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3118:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 652, "mutability": "mutable", "name": "deadline", "nameLocation": "3149:8:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3141:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 651, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3141:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 654, "mutability": "mutable", "name": "v", "nameLocation": "3173:1:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3167:7:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 653, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3167:5:5", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}, {"constant": false, "id": 656, "mutability": "mutable", "name": "r", "nameLocation": "3192:1:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3184:9:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 655, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3184:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 658, "mutability": "mutable", "name": "s", "nameLocation": "3211:1:5", "nodeType": "VariableDeclaration", "scope": 697, "src": "3203:9:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 657, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3203:7:5", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3021:197:5"}, "returnParameters": {"id": 660, "nodeType": "ParameterList", "parameters": [], "src": "3228:0:5"}, "scope": 736, "src": "3002:483:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 734, "nodeType": "Block", "src": "3949:636:5", "statements": [{"assignments": [707], "declarations": [{"constant": false, "id": 707, "mutability": "mutable", "name": "returndata", "nameLocation": "4311:10:5", "nodeType": "VariableDeclaration", "scope": 734, "src": "4298:23:5", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 706, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4298:5:5", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 716, "initialValue": {"arguments": [{"id": 713, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 703, "src": "4352:4:5", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564", "id": 714, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4358:34:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b", "typeString": "literal_string \"SafeERC20: low-level call failed\""}, "value": "SafeERC20: low-level call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b", "typeString": "literal_string \"SafeERC20: low-level call failed\""}], "expression": {"arguments": [{"id": 710, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 701, "src": "4332:5:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}], "id": 709, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4324:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 708, "name": "address", "nodeType": "ElementaryTypeName", "src": "4324:7:5", "typeDescriptions": {}}}, "id": 711, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4324:14:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4339:12:5", "memberName": "functionCall", "nodeType": "MemberAccess", "referencedDeclaration": 2023, "src": "4324:27:5", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$", "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"}}, "id": 715, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4324:69:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "4298:95:5"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 720, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 717, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 707, "src": "4407:10:5", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4418:6:5", "memberName": "length", "nodeType": "MemberAccess", "src": "4407:17:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 719, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4427:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4407:21:5", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 733, "nodeType": "IfStatement", "src": "4403:176:5", "trueBody": {"id": 732, "nodeType": "Block", "src": "4430:149:5", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 724, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 707, "src": "4502:10:5", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"components": [{"id": 726, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4515:4:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)"}, "typeName": {"id": 725, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4515:4:5", "typeDescriptions": {}}}], "id": 727, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "4514:6:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)"}], "expression": {"id": 722, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "4491:3:5", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 723, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4495:6:5", "memberName": "decode", "nodeType": "MemberAccess", "src": "4491:10:5", "typeDescriptions": {"typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 728, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4491:30:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564", "id": 729, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4523:44:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd", "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""}, "value": "SafeERC20: ERC20 operation did not succeed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd", "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""}], "id": 721, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4483:7:5", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 730, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4483:85:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 731, "nodeType": "ExpressionStatement", "src": "4483:85:5"}]}}]}, "documentation": {"id": 698, "nodeType": "StructuredDocumentation", "src": "3491:372:5", "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)."}, "id": 735, "implemented": true, "kind": "function", "modifiers": [], "name": "_callOptionalReturn", "nameLocation": "3877:19:5", "nodeType": "FunctionDefinition", "parameters": {"id": 704, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 701, "mutability": "mutable", "name": "token", "nameLocation": "3915:5:5", "nodeType": "VariableDeclaration", "scope": 735, "src": "3897:23:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}, "typeName": {"id": 700, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 699, "name": "IERC20Upgradeable", "nameLocations": ["3897:17:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "3897:17:5"}, "referencedDeclaration": 419, "src": "3897:17:5", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "visibility": "internal"}, {"constant": false, "id": 703, "mutability": "mutable", "name": "data", "nameLocation": "3935:4:5", "nodeType": "VariableDeclaration", "scope": 735, "src": "3922:17:5", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 702, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3922:5:5", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3896:44:5"}, "returnParameters": {"id": 705, "nodeType": "ParameterList", "parameters": [], "src": "3949:0:5"}, "scope": 736, "src": "3868:717:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}], "scope": 737, "src": "740:3847:5", "usedErrors": []}], "src": "115:4473:5"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "ContextUpgradeable": [2219], "ERC165Upgradeable": [2683], "ERC721Upgradeable": [1628], "IERC165Upgradeable": [2695], "IERC721MetadataUpgradeable": [1934], "IERC721ReceiverUpgradeable": [1646], "IERC721Upgradeable": [1762], "Initializable": [282], "StringsUpgradeable": [2445]}, "id": 1629, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 738, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "107:23:6"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol", "file": "./IERC721Upgradeable.sol", "id": 739, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 1763, "src": "132:34:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol", "file": "./IERC721ReceiverUpgradeable.sol", "id": 740, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 1647, "src": "167:42:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol", "file": "./extensions/IERC721MetadataUpgradeable.sol", "id": 741, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 1935, "src": "210:53:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "file": "../../utils/AddressUpgradeable.sol", "id": 742, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 2178, "src": "264:44:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "file": "../../utils/ContextUpgradeable.sol", "id": 743, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 2220, "src": "309:44:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol", "file": "../../utils/StringsUpgradeable.sol", "id": 744, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 2446, "src": "354:44:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", "file": "../../utils/introspection/ERC165Upgradeable.sol", "id": 745, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 2684, "src": "399:57:6", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../../proxy/utils/Initializable.sol", "id": 746, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1629, "sourceUnit": 283, "src": "457:45:6", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 748, "name": "Initializable", "nameLocations": ["781:13:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 282, "src": "781:13:6"}, "id": 749, "nodeType": "InheritanceSpecifier", "src": "781:13:6"}, {"baseName": {"id": 750, "name": "ContextUpgradeable", "nameLocations": ["796:18:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2219, "src": "796:18:6"}, "id": 751, "nodeType": "InheritanceSpecifier", "src": "796:18:6"}, {"baseName": {"id": 752, "name": "ERC165Upgradeable", "nameLocations": ["816:17:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "816:17:6"}, "id": 753, "nodeType": "InheritanceSpecifier", "src": "816:17:6"}, {"baseName": {"id": 754, "name": "IERC721Upgradeable", "nameLocations": ["835:18:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1762, "src": "835:18:6"}, "id": 755, "nodeType": "InheritanceSpecifier", "src": "835:18:6"}, {"baseName": {"id": 756, "name": "IERC721MetadataUpgradeable", "nameLocations": ["855:26:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1934, "src": "855:26:6"}, "id": 757, "nodeType": "InheritanceSpecifier", "src": "855:26:6"}], "canonicalName": "ERC721Upgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 747, "nodeType": "StructuredDocumentation", "src": "504:246:6", "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."}, "fullyImplemented": true, "id": 1628, "linearizedBaseContracts": [1628, 1934, 1762, 2683, 2695, 2219, 282], "name": "ERC721Upgradeable", "nameLocation": "760:17:6", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 760, "libraryName": {"id": 758, "name": "AddressUpgradeable", "nameLocations": ["894:18:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2177, "src": "894:18:6"}, "nodeType": "UsingForDirective", "src": "888:37:6", "typeName": {"id": 759, "name": "address", "nodeType": "ElementaryTypeName", "src": "917:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, {"global": false, "id": 763, "libraryName": {"id": 761, "name": "StringsUpgradeable", "nameLocations": ["936:18:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2445, "src": "936:18:6"}, "nodeType": "UsingForDirective", "src": "930:37:6", "typeName": {"id": 762, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "959:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"constant": false, "id": 765, "mutability": "mutable", "name": "_name", "nameLocation": "1006:5:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "991:20:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 764, "name": "string", "nodeType": "ElementaryTypeName", "src": "991:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"constant": false, "id": 767, "mutability": "mutable", "name": "_symbol", "nameLocation": "1053:7:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "1038:22:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 766, "name": "string", "nodeType": "ElementaryTypeName", "src": "1038:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"constant": false, "id": 771, "mutability": "mutable", "name": "_owners", "nameLocation": "1149:7:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "1113:43:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "typeName": {"id": 770, "keyType": {"id": 768, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1121:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "1113:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "valueType": {"id": 769, "name": "address", "nodeType": "ElementaryTypeName", "src": "1132:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "private"}, {"constant": false, "id": 775, "mutability": "mutable", "name": "_balances", "nameLocation": "1243:9:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "1207:45:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "typeName": {"id": 774, "keyType": {"id": 772, "name": "address", "nodeType": "ElementaryTypeName", "src": "1215:7:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1207:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "valueType": {"id": 773, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1226:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, "visibility": "private"}, {"constant": false, "id": 779, "mutability": "mutable", "name": "_tokenApprovals", "nameLocation": "1344:15:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "1308:51:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "typeName": {"id": 778, "keyType": {"id": 776, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1316:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "1308:27:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "valueType": {"id": 777, "name": "address", "nodeType": "ElementaryTypeName", "src": "1327:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "private"}, {"constant": false, "id": 785, "mutability": "mutable", "name": "_operatorApprovals", "nameLocation": "1467:18:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "1414:71:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}, "typeName": {"id": 784, "keyType": {"id": 780, "name": "address", "nodeType": "ElementaryTypeName", "src": "1422:7:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1414:44:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}, "valueType": {"id": 783, "keyType": {"id": 781, "name": "address", "nodeType": "ElementaryTypeName", "src": "1441:7:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1433:24:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}, "valueType": {"id": 782, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1452:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}}}, "visibility": "private"}, {"body": {"id": 800, "nodeType": "Block", "src": "1698:56:6", "statements": [{"expression": {"arguments": [{"id": 796, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 788, "src": "1732:5:6", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 797, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 790, "src": "1739:7:6", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 795, "name": "__ERC721_init_unchained", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 819, "src": "1708:23:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory,string memory)"}}, "id": 798, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1708:39:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 799, "nodeType": "ExpressionStatement", "src": "1708:39:6"}]}, "documentation": {"id": 786, "nodeType": "StructuredDocumentation", "src": "1492:108:6", "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."}, "id": 801, "implemented": true, "kind": "function", "modifiers": [{"id": 793, "kind": "modifierInvocation", "modifierName": {"id": 792, "name": "onlyInitializing", "nameLocations": ["1681:16:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "1681:16:6"}, "nodeType": "ModifierInvocation", "src": "1681:16:6"}], "name": "__ERC721_init", "nameLocation": "1614:13:6", "nodeType": "FunctionDefinition", "parameters": {"id": 791, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 788, "mutability": "mutable", "name": "name_", "nameLocation": "1642:5:6", "nodeType": "VariableDeclaration", "scope": 801, "src": "1628:19:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 787, "name": "string", "nodeType": "ElementaryTypeName", "src": "1628:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 790, "mutability": "mutable", "name": "symbol_", "nameLocation": "1663:7:6", "nodeType": "VariableDeclaration", "scope": 801, "src": "1649:21:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 789, "name": "string", "nodeType": "ElementaryTypeName", "src": "1649:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1627:44:6"}, "returnParameters": {"id": 794, "nodeType": "ParameterList", "parameters": [], "src": "1698:0:6"}, "scope": 1628, "src": "1605:149:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 818, "nodeType": "Block", "src": "1863:57:6", "statements": [{"expression": {"id": 812, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 810, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 765, "src": "1873:5:6", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 811, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "1881:5:6", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1873:13:6", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 813, "nodeType": "ExpressionStatement", "src": "1873:13:6"}, {"expression": {"id": 816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 814, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 767, "src": "1896:7:6", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 815, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 805, "src": "1906:7:6", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1896:17:6", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 817, "nodeType": "ExpressionStatement", "src": "1896:17:6"}]}, "id": 819, "implemented": true, "kind": "function", "modifiers": [{"id": 808, "kind": "modifierInvocation", "modifierName": {"id": 807, "name": "onlyInitializing", "nameLocations": ["1846:16:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "1846:16:6"}, "nodeType": "ModifierInvocation", "src": "1846:16:6"}], "name": "__ERC721_init_unchained", "nameLocation": "1769:23:6", "nodeType": "FunctionDefinition", "parameters": {"id": 806, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 803, "mutability": "mutable", "name": "name_", "nameLocation": "1807:5:6", "nodeType": "VariableDeclaration", "scope": 819, "src": "1793:19:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 802, "name": "string", "nodeType": "ElementaryTypeName", "src": "1793:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 805, "mutability": "mutable", "name": "symbol_", "nameLocation": "1828:7:6", "nodeType": "VariableDeclaration", "scope": 819, "src": "1814:21:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 804, "name": "string", "nodeType": "ElementaryTypeName", "src": "1814:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1792:44:6"}, "returnParameters": {"id": 809, "nodeType": "ParameterList", "parameters": [], "src": "1863:0:6"}, "scope": 1628, "src": "1760:160:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"baseFunctions": [2677, 2694], "body": {"id": 849, "nodeType": "Block", "src": "2117:214:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 847, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 842, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 830, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 822, "src": "2146:11:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 832, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "2166:18:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}], "id": 831, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "2161:4:6", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 833, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2161:24:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Upgradeable_$1762", "typeString": "type(contract IERC721Upgradeable)"}}, "id": 834, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2186:11:6", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "2161:36:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "2146:51:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 841, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 836, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 822, "src": "2213:11:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 838, "name": "IERC721MetadataUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1934, "src": "2233:26:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721MetadataUpgradeable_$1934_$", "typeString": "type(contract IERC721MetadataUpgradeable)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC721MetadataUpgradeable_$1934_$", "typeString": "type(contract IERC721MetadataUpgradeable)"}], "id": 837, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "2228:4:6", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2228:32:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721MetadataUpgradeable_$1934", "typeString": "type(contract IERC721MetadataUpgradeable)"}}, "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2261:11:6", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "2228:44:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "2213:59:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2146:126:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 845, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 822, "src": "2312:11:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"id": 843, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "2288:5:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_ERC721Upgradeable_$1628_$", "typeString": "type(contract super ERC721Upgradeable)"}}, "id": 844, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2294:17:6", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 2677, "src": "2288:23:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function (bytes4) view returns (bool)"}}, "id": 846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2288:36:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2146:178:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 829, "id": 848, "nodeType": "Return", "src": "2127:197:6"}]}, "documentation": {"id": 820, "nodeType": "StructuredDocumentation", "src": "1926:56:6", "text": " @dev See {IERC165-supportsInterface}."}, "functionSelector": "01ffc9a7", "id": 850, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "1996:17:6", "nodeType": "FunctionDefinition", "overrides": {"id": 826, "nodeType": "OverrideSpecifier", "overrides": [{"id": 824, "name": "ERC165Upgradeable", "nameLocations": ["2063:17:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2683, "src": "2063:17:6"}, {"id": 825, "name": "IERC165Upgradeable", "nameLocations": ["2082:18:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 2695, "src": "2082:18:6"}], "src": "2054:47:6"}, "parameters": {"id": 823, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 822, "mutability": "mutable", "name": "interfaceId", "nameLocation": "2021:11:6", "nodeType": "VariableDeclaration", "scope": 850, "src": "2014:18:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 821, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2014:6:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "2013:20:6"}, "returnParameters": {"id": 829, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 828, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 850, "src": "2111:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 827, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2111:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2110:6:6"}, "scope": 1628, "src": "1987:344:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1687], "body": {"id": 873, "nodeType": "Block", "src": "2471:123:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 860, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 853, "src": "2489:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 863, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2506:1:6", "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": 862, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2498:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 861, "name": "address", "nodeType": "ElementaryTypeName", "src": "2498:7:6", "typeDescriptions": {}}}, "id": 864, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2498:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2489:19:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572", "id": 866, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2510:43:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159", "typeString": "literal_string \"ERC721: address zero is not a valid owner\""}, "value": "ERC721: address zero is not a valid owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159", "typeString": "literal_string \"ERC721: address zero is not a valid owner\""}], "id": 859, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2481:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 867, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2481:73:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 868, "nodeType": "ExpressionStatement", "src": "2481:73:6"}, {"expression": {"baseExpression": {"id": 869, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 775, "src": "2571:9:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 871, "indexExpression": {"id": 870, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 853, "src": "2581:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2571:16:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 858, "id": 872, "nodeType": "Return", "src": "2564:23:6"}]}, "documentation": {"id": 851, "nodeType": "StructuredDocumentation", "src": "2337:48:6", "text": " @dev See {IERC721-balanceOf}."}, "functionSelector": "70a08231", "id": 874, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "2399:9:6", "nodeType": "FunctionDefinition", "overrides": {"id": 855, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2444:8:6"}, "parameters": {"id": 854, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 853, "mutability": "mutable", "name": "owner", "nameLocation": "2417:5:6", "nodeType": "VariableDeclaration", "scope": 874, "src": "2409:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 852, "name": "address", "nodeType": "ElementaryTypeName", "src": "2409:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2408:15:6"}, "returnParameters": {"id": 858, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 857, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 874, "src": "2462:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 856, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2462:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2461:9:6"}, "scope": 1628, "src": "2390:204:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1695], "body": {"id": 901, "nodeType": "Block", "src": "2732:137:6", "statements": [{"assignments": [884], "declarations": [{"constant": false, "id": 884, "mutability": "mutable", "name": "owner", "nameLocation": "2750:5:6", "nodeType": "VariableDeclaration", "scope": 901, "src": "2742:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 883, "name": "address", "nodeType": "ElementaryTypeName", "src": "2742:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 888, "initialValue": {"baseExpression": {"id": 885, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 771, "src": "2758:7:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 887, "indexExpression": {"id": 886, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 877, "src": "2766:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2758:16:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2742:32:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 895, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 890, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 884, "src": "2792:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 893, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2809:1:6", "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": 892, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2801:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 891, "name": "address", "nodeType": "ElementaryTypeName", "src": "2801:7:6", "typeDescriptions": {}}}, "id": 894, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2801:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2792:19:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20696e76616c696420746f6b656e204944", "id": 896, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2813:26:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}, "value": "ERC721: invalid token ID"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}], "id": 889, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2784:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 897, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2784:56:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 898, "nodeType": "ExpressionStatement", "src": "2784:56:6"}, {"expression": {"id": 899, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 884, "src": "2857:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 882, "id": 900, "nodeType": "Return", "src": "2850:12:6"}]}, "documentation": {"id": 875, "nodeType": "StructuredDocumentation", "src": "2600:46:6", "text": " @dev See {IERC721-ownerOf}."}, "functionSelector": "6352211e", "id": 902, "implemented": true, "kind": "function", "modifiers": [], "name": "ownerOf", "nameLocation": "2660:7:6", "nodeType": "FunctionDefinition", "overrides": {"id": 879, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2705:8:6"}, "parameters": {"id": 878, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 877, "mutability": "mutable", "name": "tokenId", "nameLocation": "2676:7:6", "nodeType": "VariableDeclaration", "scope": 902, "src": "2668:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 876, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2668:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:17:6"}, "returnParameters": {"id": 882, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 881, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 902, "src": "2723:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 880, "name": "address", "nodeType": "ElementaryTypeName", "src": "2723:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2722:9:6"}, "scope": 1628, "src": "2651:218:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1919], "body": {"id": 911, "nodeType": "Block", "src": "3000:29:6", "statements": [{"expression": {"id": 909, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 765, "src": "3017:5:6", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 908, "id": 910, "nodeType": "Return", "src": "3010:12:6"}]}, "documentation": {"id": 903, "nodeType": "StructuredDocumentation", "src": "2875:51:6", "text": " @dev See {IERC721Metadata-name}."}, "functionSelector": "06fdde03", "id": 912, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "2940:4:6", "nodeType": "FunctionDefinition", "overrides": {"id": 905, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2967:8:6"}, "parameters": {"id": 904, "nodeType": "ParameterList", "parameters": [], "src": "2944:2:6"}, "returnParameters": {"id": 908, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 907, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 912, "src": "2985:13:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 906, "name": "string", "nodeType": "ElementaryTypeName", "src": "2985:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2984:15:6"}, "scope": 1628, "src": "2931:98:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1925], "body": {"id": 921, "nodeType": "Block", "src": "3164:31:6", "statements": [{"expression": {"id": 919, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 767, "src": "3181:7:6", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 918, "id": 920, "nodeType": "Return", "src": "3174:14:6"}]}, "documentation": {"id": 913, "nodeType": "StructuredDocumentation", "src": "3035:53:6", "text": " @dev See {IERC721Metadata-symbol}."}, "functionSelector": "95d89b41", "id": 922, "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "3102:6:6", "nodeType": "FunctionDefinition", "overrides": {"id": 915, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3131:8:6"}, "parameters": {"id": 914, "nodeType": "ParameterList", "parameters": [], "src": "3108:2:6"}, "returnParameters": {"id": 918, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 917, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 922, "src": "3149:13:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 916, "name": "string", "nodeType": "ElementaryTypeName", "src": "3149:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3148:15:6"}, "scope": 1628, "src": "3093:102:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1933], "body": {"id": 960, "nodeType": "Block", "src": "3349:188:6", "statements": [{"expression": {"arguments": [{"id": 932, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 925, "src": "3374:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 931, "name": "_requireMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1538, "src": "3359:14:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view"}}, "id": 933, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3359:23:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 934, "nodeType": "ExpressionStatement", "src": "3359:23:6"}, {"assignments": [936], "declarations": [{"constant": false, "id": 936, "mutability": "mutable", "name": "baseURI", "nameLocation": "3407:7:6", "nodeType": "VariableDeclaration", "scope": 960, "src": "3393:21:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 935, "name": "string", "nodeType": "ElementaryTypeName", "src": "3393:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 939, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 937, "name": "_baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "3417:8:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", "typeString": "function () view returns (string memory)"}}, "id": 938, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3417:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "nodeType": "VariableDeclarationStatement", "src": "3393:34:6"}, {"expression": {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 946, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 942, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 936, "src": "3450:7:6", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 941, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3444:5:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 940, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3444:5:6", "typeDescriptions": {}}}, "id": 943, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3444:14:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3459:6:6", "memberName": "length", "nodeType": "MemberAccess", "src": "3444:21:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 945, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3468:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3444:25:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"hexValue": "", "id": 957, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3528:2:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}, "id": 958, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "3444:86:6", "trueExpression": {"arguments": [{"arguments": [{"id": 951, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 936, "src": "3496:7:6", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 952, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 925, "src": "3505:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3513:8:6", "memberName": "toString", "nodeType": "MemberAccess", "referencedDeclaration": 2307, "src": "3505:16:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$", "typeString": "function (uint256) pure returns (string memory)"}}, "id": 954, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3505:18:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "expression": {"id": 949, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "3479:3:6", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 950, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "3483:12:6", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "3479:16:6", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 955, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3479:45:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 948, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3472:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 947, "name": "string", "nodeType": "ElementaryTypeName", "src": "3472:6:6", "typeDescriptions": {}}}, "id": 956, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3472:53:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 930, "id": 959, "nodeType": "Return", "src": "3437:93:6"}]}, "documentation": {"id": 923, "nodeType": "StructuredDocumentation", "src": "3201:55:6", "text": " @dev See {IERC721Metadata-tokenURI}."}, "functionSelector": "c87b56dd", "id": 961, "implemented": true, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "3270:8:6", "nodeType": "FunctionDefinition", "overrides": {"id": 927, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3316:8:6"}, "parameters": {"id": 926, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 925, "mutability": "mutable", "name": "tokenId", "nameLocation": "3287:7:6", "nodeType": "VariableDeclaration", "scope": 961, "src": "3279:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 924, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3279:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3278:17:6"}, "returnParameters": {"id": 930, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 929, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 961, "src": "3334:13:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 928, "name": "string", "nodeType": "ElementaryTypeName", "src": "3334:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3333:15:6"}, "scope": 1628, "src": "3261:276:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 969, "nodeType": "Block", "src": "3845:26:6", "statements": [{"expression": {"hexValue": "", "id": 967, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3862:2:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}, "functionReturnParameters": 966, "id": 968, "nodeType": "Return", "src": "3855:9:6"}]}, "documentation": {"id": 962, "nodeType": "StructuredDocumentation", "src": "3543:231:6", "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."}, "id": 970, "implemented": true, "kind": "function", "modifiers": [], "name": "_baseURI", "nameLocation": "3788:8:6", "nodeType": "FunctionDefinition", "parameters": {"id": 963, "nodeType": "ParameterList", "parameters": [], "src": "3796:2:6"}, "returnParameters": {"id": 966, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 965, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 970, "src": "3830:13:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 964, "name": "string", "nodeType": "ElementaryTypeName", "src": "3830:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3829:15:6"}, "scope": 1628, "src": "3779:92:6", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"baseFunctions": [1735], "body": {"id": 1012, "nodeType": "Block", "src": "3998:348:6", "statements": [{"assignments": [980], "declarations": [{"constant": false, "id": 980, "mutability": "mutable", "name": "owner", "nameLocation": "4016:5:6", "nodeType": "VariableDeclaration", "scope": 1012, "src": "4008:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 979, "name": "address", "nodeType": "ElementaryTypeName", "src": "4008:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 985, "initialValue": {"arguments": [{"id": 983, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 975, "src": "4050:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 981, "name": "ERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "4024:17:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1628_$", "typeString": "type(contract ERC721Upgradeable)"}}, "id": 982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4042:7:6", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 902, "src": "4024:25:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 984, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4024:34:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "4008:50:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 989, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 987, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 973, "src": "4076:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 988, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 980, "src": "4082:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "4076:11:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572", "id": 990, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4089:35:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", "typeString": "literal_string \"ERC721: approval to current owner\""}, "value": "ERC721: approval to current owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", "typeString": "literal_string \"ERC721: approval to current owner\""}], "id": 986, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4068:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 991, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4068:57:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 992, "nodeType": "ExpressionStatement", "src": "4068:57:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1003, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 994, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4157:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 995, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4157:12:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 996, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 980, "src": "4173:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "4157:21:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 999, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 980, "src": "4199:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [], "expression": {"argumentTypes": [], "id": 1000, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4206:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1001, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4206:12:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 998, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1066, "src": "4182:16:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)"}}, "id": 1002, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4182:37:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4157:62:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c", "id": 1004, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4233:64:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304", "typeString": "literal_string \"ERC721: approve caller is not token owner nor approved for all\""}, "value": "ERC721: approve caller is not token owner nor approved for all"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304", "typeString": "literal_string \"ERC721: approve caller is not token owner nor approved for all\""}], "id": 993, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4136:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1005, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4136:171:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1006, "nodeType": "ExpressionStatement", "src": "4136:171:6"}, {"expression": {"arguments": [{"id": 1008, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 973, "src": "4327:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1009, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 975, "src": "4331:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1007, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "4318:8:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1010, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4318:21:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1011, "nodeType": "ExpressionStatement", "src": "4318:21:6"}]}, "documentation": {"id": 971, "nodeType": "StructuredDocumentation", "src": "3877:46:6", "text": " @dev See {IERC721-approve}."}, "functionSelector": "095ea7b3", "id": 1013, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "3937:7:6", "nodeType": "FunctionDefinition", "overrides": {"id": 977, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3989:8:6"}, "parameters": {"id": 976, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 973, "mutability": "mutable", "name": "to", "nameLocation": "3953:2:6", "nodeType": "VariableDeclaration", "scope": 1013, "src": "3945:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 972, "name": "address", "nodeType": "ElementaryTypeName", "src": "3945:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 975, "mutability": "mutable", "name": "tokenId", "nameLocation": "3965:7:6", "nodeType": "VariableDeclaration", "scope": 1013, "src": "3957:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 974, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3957:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3944:29:6"}, "returnParameters": {"id": 978, "nodeType": "ParameterList", "parameters": [], "src": "3998:0:6"}, "scope": 1628, "src": "3928:418:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [1751], "body": {"id": 1030, "nodeType": "Block", "src": "4492:82:6", "statements": [{"expression": {"arguments": [{"id": 1023, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "4517:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1022, "name": "_requireMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1538, "src": "4502:14:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view"}}, "id": 1024, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4502:23:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1025, "nodeType": "ExpressionStatement", "src": "4502:23:6"}, {"expression": {"baseExpression": {"id": 1026, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "4543:15:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1028, "indexExpression": {"id": 1027, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1016, "src": "4559:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4543:24:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 1021, "id": 1029, "nodeType": "Return", "src": "4536:31:6"}]}, "documentation": {"id": 1014, "nodeType": "StructuredDocumentation", "src": "4352:50:6", "text": " @dev See {IERC721-getApproved}."}, "functionSelector": "081812fc", "id": 1031, "implemented": true, "kind": "function", "modifiers": [], "name": "getApproved", "nameLocation": "4416:11:6", "nodeType": "FunctionDefinition", "overrides": {"id": 1018, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4465:8:6"}, "parameters": {"id": 1017, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1016, "mutability": "mutable", "name": "tokenId", "nameLocation": "4436:7:6", "nodeType": "VariableDeclaration", "scope": 1031, "src": "4428:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1015, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4428:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4427:17:6"}, "returnParameters": {"id": 1021, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1020, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1031, "src": "4483:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1019, "name": "address", "nodeType": "ElementaryTypeName", "src": "4483:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4482:9:6"}, "scope": 1628, "src": "4407:167:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1743], "body": {"id": 1047, "nodeType": "Block", "src": "4725:69:6", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 1041, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4754:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1042, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4754:12:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1043, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "4768:8:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1044, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1036, "src": "4778:8:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 1040, "name": "_setApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1524, "src": "4735:18:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)"}}, "id": 1045, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4735:52:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1046, "nodeType": "ExpressionStatement", "src": "4735:52:6"}]}, "documentation": {"id": 1032, "nodeType": "StructuredDocumentation", "src": "4580:56:6", "text": " @dev See {IERC721-setApprovalForAll}."}, "functionSelector": "a22cb465", "id": 1048, "implemented": true, "kind": "function", "modifiers": [], "name": "setApprovalForAll", "nameLocation": "4650:17:6", "nodeType": "FunctionDefinition", "overrides": {"id": 1038, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4716:8:6"}, "parameters": {"id": 1037, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1034, "mutability": "mutable", "name": "operator", "nameLocation": "4676:8:6", "nodeType": "VariableDeclaration", "scope": 1048, "src": "4668:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1033, "name": "address", "nodeType": "ElementaryTypeName", "src": "4668:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1036, "mutability": "mutable", "name": "approved", "nameLocation": "4691:8:6", "nodeType": "VariableDeclaration", "scope": 1048, "src": "4686:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1035, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4686:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4667:33:6"}, "returnParameters": {"id": 1039, "nodeType": "ParameterList", "parameters": [], "src": "4725:0:6"}, "scope": 1628, "src": "4641:153:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [1761], "body": {"id": 1065, "nodeType": "Block", "src": "4963:59:6", "statements": [{"expression": {"baseExpression": {"baseExpression": {"id": 1059, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "4980:18:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}}, "id": 1061, "indexExpression": {"id": 1060, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1051, "src": "4999:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4980:25:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 1063, "indexExpression": {"id": 1062, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1053, "src": "5006:8:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4980:35:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1058, "id": 1064, "nodeType": "Return", "src": "4973:42:6"}]}, "documentation": {"id": 1049, "nodeType": "StructuredDocumentation", "src": "4800:55:6", "text": " @dev See {IERC721-isApprovedForAll}."}, "functionSelector": "e985e9c5", "id": 1066, "implemented": true, "kind": "function", "modifiers": [], "name": "isApprovedForAll", "nameLocation": "4869:16:6", "nodeType": "FunctionDefinition", "overrides": {"id": 1055, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4939:8:6"}, "parameters": {"id": 1054, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1051, "mutability": "mutable", "name": "owner", "nameLocation": "4894:5:6", "nodeType": "VariableDeclaration", "scope": 1066, "src": "4886:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1050, "name": "address", "nodeType": "ElementaryTypeName", "src": "4886:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1053, "mutability": "mutable", "name": "operator", "nameLocation": "4909:8:6", "nodeType": "VariableDeclaration", "scope": 1066, "src": "4901:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1052, "name": "address", "nodeType": "ElementaryTypeName", "src": "4901:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4885:33:6"}, "returnParameters": {"id": 1058, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1057, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1066, "src": "4957:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1056, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4957:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4956:6:6"}, "scope": 1628, "src": "4860:162:6", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1727], "body": {"id": 1092, "nodeType": "Block", "src": "5203:208:6", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 1079, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "5292:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5292:12:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1081, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1073, "src": "5306:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1078, "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1223, "src": "5273:18:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)"}}, "id": 1082, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5273:41:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564", "id": 1083, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5316:48:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}, "value": "ERC721: caller is not token owner nor approved"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}], "id": 1077, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5265:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1084, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5265:100:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1085, "nodeType": "ExpressionStatement", "src": "5265:100:6"}, {"expression": {"arguments": [{"id": 1087, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1069, "src": "5386:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1088, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1071, "src": "5392:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1089, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1073, "src": "5396:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1086, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1468, "src": "5376:9:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1090, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5376:28:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1091, "nodeType": "ExpressionStatement", "src": "5376:28:6"}]}, "documentation": {"id": 1067, "nodeType": "StructuredDocumentation", "src": "5028:51:6", "text": " @dev See {IERC721-transferFrom}."}, "functionSelector": "23b872dd", "id": 1093, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "5093:12:6", "nodeType": "FunctionDefinition", "overrides": {"id": 1075, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5194:8:6"}, "parameters": {"id": 1074, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1069, "mutability": "mutable", "name": "from", "nameLocation": "5123:4:6", "nodeType": "VariableDeclaration", "scope": 1093, "src": "5115:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1068, "name": "address", "nodeType": "ElementaryTypeName", "src": "5115:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1071, "mutability": "mutable", "name": "to", "nameLocation": "5145:2:6", "nodeType": "VariableDeclaration", "scope": 1093, "src": "5137:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1070, "name": "address", "nodeType": "ElementaryTypeName", "src": "5137:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1073, "mutability": "mutable", "name": "tokenId", "nameLocation": "5165:7:6", "nodeType": "VariableDeclaration", "scope": 1093, "src": "5157:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1072, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5157:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5105:73:6"}, "returnParameters": {"id": 1076, "nodeType": "ParameterList", "parameters": [], "src": "5203:0:6"}, "scope": 1628, "src": "5084:327:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [1717], "body": {"id": 1111, "nodeType": "Block", "src": "5600:56:6", "statements": [{"expression": {"arguments": [{"id": 1105, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "5627:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1106, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1098, "src": "5633:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1107, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1100, "src": "5637:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "", "id": 1108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5646:2:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "id": 1104, "name": "safeTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [1112, 1142], "referencedDeclaration": 1142, "src": "5610:16:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)"}}, "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5610:39:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1110, "nodeType": "ExpressionStatement", "src": "5610:39:6"}]}, "documentation": {"id": 1094, "nodeType": "StructuredDocumentation", "src": "5417:55:6", "text": " @dev See {IERC721-safeTransferFrom}."}, "functionSelector": "42842e0e", "id": 1112, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "5486:16:6", "nodeType": "FunctionDefinition", "overrides": {"id": 1102, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5591:8:6"}, "parameters": {"id": 1101, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1096, "mutability": "mutable", "name": "from", "nameLocation": "5520:4:6", "nodeType": "VariableDeclaration", "scope": 1112, "src": "5512:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1095, "name": "address", "nodeType": "ElementaryTypeName", "src": "5512:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1098, "mutability": "mutable", "name": "to", "nameLocation": "5542:2:6", "nodeType": "VariableDeclaration", "scope": 1112, "src": "5534:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1097, "name": "address", "nodeType": "ElementaryTypeName", "src": "5534:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1100, "mutability": "mutable", "name": "tokenId", "nameLocation": "5562:7:6", "nodeType": "VariableDeclaration", "scope": 1112, "src": "5554:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1099, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5554:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5502:73:6"}, "returnParameters": {"id": 1103, "nodeType": "ParameterList", "parameters": [], "src": "5600:0:6"}, "scope": 1628, "src": "5477:179:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [1707], "body": {"id": 1141, "nodeType": "Block", "src": "5872:165:6", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 1127, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "5909:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1128, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5909:12:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1129, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1119, "src": "5923:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1126, "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1223, "src": "5890:18:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)"}}, "id": 1130, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5890:41:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564", "id": 1131, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5933:48:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}, "value": "ERC721: caller is not token owner nor approved"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}], "id": 1125, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5882:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5882:100:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1133, "nodeType": "ExpressionStatement", "src": "5882:100:6"}, {"expression": {"arguments": [{"id": 1135, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1115, "src": "6006:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1136, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1117, "src": "6012:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1137, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1119, "src": "6016:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1138, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1121, "src": "6025:4:6", "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"}], "id": 1134, "name": "_safeTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1171, "src": "5992:13:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)"}}, "id": 1139, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5992:38:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1140, "nodeType": "ExpressionStatement", "src": "5992:38:6"}]}, "documentation": {"id": 1113, "nodeType": "StructuredDocumentation", "src": "5662:55:6", "text": " @dev See {IERC721-safeTransferFrom}."}, "functionSelector": "b88d4fde", "id": 1142, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "5731:16:6", "nodeType": "FunctionDefinition", "overrides": {"id": 1123, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5863:8:6"}, "parameters": {"id": 1122, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1115, "mutability": "mutable", "name": "from", "nameLocation": "5765:4:6", "nodeType": "VariableDeclaration", "scope": 1142, "src": "5757:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1114, "name": "address", "nodeType": "ElementaryTypeName", "src": "5757:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1117, "mutability": "mutable", "name": "to", "nameLocation": "5787:2:6", "nodeType": "VariableDeclaration", "scope": 1142, "src": "5779:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1116, "name": "address", "nodeType": "ElementaryTypeName", "src": "5779:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1119, "mutability": "mutable", "name": "tokenId", "nameLocation": "5807:7:6", "nodeType": "VariableDeclaration", "scope": 1142, "src": "5799:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1118, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5799:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1121, "mutability": "mutable", "name": "data", "nameLocation": "5837:4:6", "nodeType": "VariableDeclaration", "scope": 1142, "src": "5824:17:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1120, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5824:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5747:100:6"}, "returnParameters": {"id": 1124, "nodeType": "ParameterList", "parameters": [], "src": "5872:0:6"}, "scope": 1628, "src": "5722:315:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 1170, "nodeType": "Block", "src": "7038:165:6", "statements": [{"expression": {"arguments": [{"id": 1155, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1145, "src": "7058:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1156, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "7064:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1157, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "7068:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1154, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1468, "src": "7048:9:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7048:28:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1159, "nodeType": "ExpressionStatement", "src": "7048:28:6"}, {"expression": {"arguments": [{"arguments": [{"id": 1162, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1145, "src": "7117:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1163, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "7123:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1164, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "7127:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1165, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1151, "src": "7136:4:6", "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"}], "id": 1161, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1600, "src": "7094:22:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)"}}, "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7094:47:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 1167, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7143:52:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}, "value": "ERC721: transfer to non ERC721Receiver implementer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}], "id": 1160, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7086:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1168, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7086:110:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1169, "nodeType": "ExpressionStatement", "src": "7086:110:6"}]}, "documentation": {"id": 1143, "nodeType": "StructuredDocumentation", "src": "6043:850:6", "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "id": 1171, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeTransfer", "nameLocation": "6907:13:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1152, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1145, "mutability": "mutable", "name": "from", "nameLocation": "6938:4:6", "nodeType": "VariableDeclaration", "scope": 1171, "src": "6930:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1144, "name": "address", "nodeType": "ElementaryTypeName", "src": "6930:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1147, "mutability": "mutable", "name": "to", "nameLocation": "6960:2:6", "nodeType": "VariableDeclaration", "scope": 1171, "src": "6952:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1146, "name": "address", "nodeType": "ElementaryTypeName", "src": "6952:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1149, "mutability": "mutable", "name": "tokenId", "nameLocation": "6980:7:6", "nodeType": "VariableDeclaration", "scope": 1171, "src": "6972:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1148, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6972:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1151, "mutability": "mutable", "name": "data", "nameLocation": "7010:4:6", "nodeType": "VariableDeclaration", "scope": 1171, "src": "6997:17:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1150, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6997:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6920:100:6"}, "returnParameters": {"id": 1153, "nodeType": "ParameterList", "parameters": [], "src": "7038:0:6"}, "scope": 1628, "src": "6898:305:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1188, "nodeType": "Block", "src": "7577:54:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 1179, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 771, "src": "7594:7:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1181, "indexExpression": {"id": 1180, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1174, "src": "7602:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7594:16:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1184, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7622:1:6", "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": 1183, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7614:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1182, "name": "address", "nodeType": "ElementaryTypeName", "src": "7614:7:6", "typeDescriptions": {}}}, "id": 1185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7614:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7594:30:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1178, "id": 1187, "nodeType": "Return", "src": "7587:37:6"}]}, "documentation": {"id": 1172, "nodeType": "StructuredDocumentation", "src": "7209:292:6", "text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."}, "id": 1189, "implemented": true, "kind": "function", "modifiers": [], "name": "_exists", "nameLocation": "7515:7:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1175, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1174, "mutability": "mutable", "name": "tokenId", "nameLocation": "7531:7:6", "nodeType": "VariableDeclaration", "scope": 1189, "src": "7523:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1173, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7523:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7522:17:6"}, "returnParameters": {"id": 1178, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1177, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1189, "src": "7571:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1176, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7571:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "7570:6:6"}, "scope": 1628, "src": "7506:125:6", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 1222, "nodeType": "Block", "src": "7888:173:6", "statements": [{"assignments": [1200], "declarations": [{"constant": false, "id": 1200, "mutability": "mutable", "name": "owner", "nameLocation": "7906:5:6", "nodeType": "VariableDeclaration", "scope": 1222, "src": "7898:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1199, "name": "address", "nodeType": "ElementaryTypeName", "src": "7898:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1205, "initialValue": {"arguments": [{"id": 1203, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1194, "src": "7940:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1201, "name": "ERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "7914:17:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1628_$", "typeString": "type(contract ERC721Upgradeable)"}}, "id": 1202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7932:7:6", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 902, "src": "7914:25:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7914:34:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "7898:50:6"}, {"expression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1206, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1192, "src": "7966:7:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1207, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "7977:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7966:16:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 1210, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "8003:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1211, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1192, "src": "8010:7:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1209, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1066, "src": "7986:16:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)"}}, "id": 1212, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7986:32:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7966:52:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 1215, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1194, "src": "8034:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1214, "name": "getApproved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1031, "src": "8022:11:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1216, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8022:20:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1217, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1192, "src": "8046:7:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "8022:31:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7966:87:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 1220, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "7965:89:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1198, "id": 1221, "nodeType": "Return", "src": "7958:96:6"}]}, "documentation": {"id": 1190, "nodeType": "StructuredDocumentation", "src": "7637:147:6", "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."}, "id": 1223, "implemented": true, "kind": "function", "modifiers": [], "name": "_isApprovedOrOwner", "nameLocation": "7798:18:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1195, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1192, "mutability": "mutable", "name": "spender", "nameLocation": "7825:7:6", "nodeType": "VariableDeclaration", "scope": 1223, "src": "7817:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1191, "name": "address", "nodeType": "ElementaryTypeName", "src": "7817:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1194, "mutability": "mutable", "name": "tokenId", "nameLocation": "7842:7:6", "nodeType": "VariableDeclaration", "scope": 1223, "src": "7834:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1193, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7834:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7816:34:6"}, "returnParameters": {"id": 1198, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1197, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1223, "src": "7882:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1196, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7882:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "7881:6:6"}, "scope": 1628, "src": "7789:272:6", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 1237, "nodeType": "Block", "src": "8456:43:6", "statements": [{"expression": {"arguments": [{"id": 1232, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1226, "src": "8476:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1233, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1228, "src": "8480:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "", "id": 1234, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8489:2:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "id": 1231, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [1238, 1267], "referencedDeclaration": 1267, "src": "8466:9:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,uint256,bytes memory)"}}, "id": 1235, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8466:26:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1236, "nodeType": "ExpressionStatement", "src": "8466:26:6"}]}, "documentation": {"id": 1224, "nodeType": "StructuredDocumentation", "src": "8067:319:6", "text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "id": 1238, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "8400:9:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1229, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1226, "mutability": "mutable", "name": "to", "nameLocation": "8418:2:6", "nodeType": "VariableDeclaration", "scope": 1238, "src": "8410:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1225, "name": "address", "nodeType": "ElementaryTypeName", "src": "8410:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1228, "mutability": "mutable", "name": "tokenId", "nameLocation": "8430:7:6", "nodeType": "VariableDeclaration", "scope": 1238, "src": "8422:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1227, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8422:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "8409:29:6"}, "returnParameters": {"id": 1230, "nodeType": "ParameterList", "parameters": [], "src": "8456:0:6"}, "scope": 1628, "src": "8391:108:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1266, "nodeType": "Block", "src": "8834:195:6", "statements": [{"expression": {"arguments": [{"id": 1249, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1241, "src": "8850:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1250, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1243, "src": "8854:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1248, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1333, "src": "8844:5:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8844:18:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1252, "nodeType": "ExpressionStatement", "src": "8844:18:6"}, {"expression": {"arguments": [{"arguments": [{"arguments": [{"hexValue": "30", "id": 1257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8924:1:6", "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": 1256, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8916:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1255, "name": "address", "nodeType": "ElementaryTypeName", "src": "8916:7:6", "typeDescriptions": {}}}, "id": 1258, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8916:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1259, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1241, "src": "8928:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1260, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1243, "src": "8932:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1261, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1245, "src": "8941:4:6", "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"}], "id": 1254, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1600, "src": "8893:22:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)"}}, "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8893:53:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 1263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8960:52:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}, "value": "ERC721: transfer to non ERC721Receiver implementer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}], "id": 1253, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8872:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1264, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8872:150:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1265, "nodeType": "ExpressionStatement", "src": "8872:150:6"}]}, "documentation": {"id": 1239, "nodeType": "StructuredDocumentation", "src": "8505:210:6", "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."}, "id": 1267, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "8729:9:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1246, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1241, "mutability": "mutable", "name": "to", "nameLocation": "8756:2:6", "nodeType": "VariableDeclaration", "scope": 1267, "src": "8748:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1240, "name": "address", "nodeType": "ElementaryTypeName", "src": "8748:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1243, "mutability": "mutable", "name": "tokenId", "nameLocation": "8776:7:6", "nodeType": "VariableDeclaration", "scope": 1267, "src": "8768:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1242, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8768:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1245, "mutability": "mutable", "name": "data", "nameLocation": "8806:4:6", "nodeType": "VariableDeclaration", "scope": 1267, "src": "8793:17:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1244, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8793:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "8738:78:6"}, "returnParameters": {"id": 1247, "nodeType": "ParameterList", "parameters": [], "src": "8834:0:6"}, "scope": 1628, "src": "8720:309:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1332, "nodeType": "Block", "src": "9412:366:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1281, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1276, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "9430:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1279, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9444:1:6", "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": 1278, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9436:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1277, "name": "address", "nodeType": "ElementaryTypeName", "src": "9436:7:6", "typeDescriptions": {}}}, "id": 1280, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9436:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9430:16:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373", "id": 1282, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9448:34:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", "typeString": "literal_string \"ERC721: mint to the zero address\""}, "value": "ERC721: mint to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", "typeString": "literal_string \"ERC721: mint to the zero address\""}], "id": 1275, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9422:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1283, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9422:61:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1284, "nodeType": "ExpressionStatement", "src": "9422:61:6"}, {"expression": {"arguments": [{"id": 1289, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "9501:17:6", "subExpression": {"arguments": [{"id": 1287, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1272, "src": "9510:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1286, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1189, "src": "9502:7:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)"}}, "id": 1288, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9502:16:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564", "id": 1290, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9520:30:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", "typeString": "literal_string \"ERC721: token already minted\""}, "value": "ERC721: token already minted"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", "typeString": "literal_string \"ERC721: token already minted\""}], "id": 1285, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9493:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9493:58:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1292, "nodeType": "ExpressionStatement", "src": "9493:58:6"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1296, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9591:1:6", "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": 1295, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9583:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1294, "name": "address", "nodeType": "ElementaryTypeName", "src": "9583:7:6", "typeDescriptions": {}}}, "id": 1297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9583:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1298, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "9595:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1299, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1272, "src": "9599:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1293, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1611, "src": "9562:20:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1300, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9562:45:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1301, "nodeType": "ExpressionStatement", "src": "9562:45:6"}, {"expression": {"id": 1306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1302, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 775, "src": "9618:9:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 1304, "indexExpression": {"id": 1303, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "9628:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9618:13:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1305, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9635:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9618:18:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1307, "nodeType": "ExpressionStatement", "src": "9618:18:6"}, {"expression": {"id": 1312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1308, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 771, "src": "9646:7:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1310, "indexExpression": {"id": 1309, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1272, "src": "9654:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9646:16:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1311, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "9665:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9646:21:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1313, "nodeType": "ExpressionStatement", "src": "9646:21:6"}, {"eventCall": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1317, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9700:1:6", "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": 1316, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9692:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1315, "name": "address", "nodeType": "ElementaryTypeName", "src": "9692:7:6", "typeDescriptions": {}}}, "id": 1318, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9692:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1319, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "9704:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1320, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1272, "src": "9708:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1314, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1661, "src": "9683:8:6", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1321, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9683:33:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1322, "nodeType": "EmitStatement", "src": "9678:38:6"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1326, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9755:1:6", "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": 1325, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9747:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1324, "name": "address", "nodeType": "ElementaryTypeName", "src": "9747:7:6", "typeDescriptions": {}}}, "id": 1327, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9747:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1328, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "9759:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1329, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1272, "src": "9763:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1323, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1622, "src": "9727:19:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1330, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9727:44:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1331, "nodeType": "ExpressionStatement", "src": "9727:44:6"}]}, "documentation": {"id": 1268, "nodeType": "StructuredDocumentation", "src": "9035:311:6", "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."}, "id": 1333, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nameLocation": "9360:5:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1273, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1270, "mutability": "mutable", "name": "to", "nameLocation": "9374:2:6", "nodeType": "VariableDeclaration", "scope": 1333, "src": "9366:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1269, "name": "address", "nodeType": "ElementaryTypeName", "src": "9366:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1272, "mutability": "mutable", "name": "tokenId", "nameLocation": "9386:7:6", "nodeType": "VariableDeclaration", "scope": 1333, "src": "9378:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1271, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9378:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "9365:29:6"}, "returnParameters": {"id": 1274, "nodeType": "ParameterList", "parameters": [], "src": "9412:0:6"}, "scope": 1628, "src": "9351:427:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1392, "nodeType": "Block", "src": "10044:368:6", "statements": [{"assignments": [1340], "declarations": [{"constant": false, "id": 1340, "mutability": "mutable", "name": "owner", "nameLocation": "10062:5:6", "nodeType": "VariableDeclaration", "scope": 1392, "src": "10054:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1339, "name": "address", "nodeType": "ElementaryTypeName", "src": "10054:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1345, "initialValue": {"arguments": [{"id": 1343, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "10096:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1341, "name": "ERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "10070:17:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1628_$", "typeString": "type(contract ERC721Upgradeable)"}}, "id": 1342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10088:7:6", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 902, "src": "10070:25:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1344, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10070:34:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "10054:50:6"}, {"expression": {"arguments": [{"id": 1347, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1340, "src": "10136:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 1350, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10151:1:6", "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": 1349, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10143:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1348, "name": "address", "nodeType": "ElementaryTypeName", "src": "10143:7:6", "typeDescriptions": {}}}, "id": 1351, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10143:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1352, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "10155:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1346, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1611, "src": "10115:20:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1353, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10115:48:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1354, "nodeType": "ExpressionStatement", "src": "10115:48:6"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1358, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10218:1:6", "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": 1357, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10210:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1356, "name": "address", "nodeType": "ElementaryTypeName", "src": "10210:7:6", "typeDescriptions": {}}}, "id": 1359, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10210:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1360, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "10222:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1355, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "10201:8:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1361, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10201:29:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1362, "nodeType": "ExpressionStatement", "src": "10201:29:6"}, {"expression": {"id": 1367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1363, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 775, "src": "10241:9:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 1365, "indexExpression": {"id": 1364, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1340, "src": "10251:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10241:16:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"hexValue": "31", "id": 1366, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10261:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "10241:21:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1368, "nodeType": "ExpressionStatement", "src": "10241:21:6"}, {"expression": {"id": 1372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "10272:23:6", "subExpression": {"baseExpression": {"id": 1369, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 771, "src": "10279:7:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1371, "indexExpression": {"id": 1370, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "10287:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10279:16:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1373, "nodeType": "ExpressionStatement", "src": "10272:23:6"}, {"eventCall": {"arguments": [{"id": 1375, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1340, "src": "10320:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 1378, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10335:1:6", "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": 1377, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10327:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1376, "name": "address", "nodeType": "ElementaryTypeName", "src": "10327:7:6", "typeDescriptions": {}}}, "id": 1379, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10327:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1380, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "10339:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1374, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1661, "src": "10311:8:6", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1381, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10311:36:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1382, "nodeType": "EmitStatement", "src": "10306:41:6"}, {"expression": {"arguments": [{"id": 1384, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1340, "src": "10378:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 1387, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10393:1:6", "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": 1386, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10385:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1385, "name": "address", "nodeType": "ElementaryTypeName", "src": "10385:7:6", "typeDescriptions": {}}}, "id": 1388, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10385:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1389, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1336, "src": "10397:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1383, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1622, "src": "10358:19:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1390, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10358:47:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1391, "nodeType": "ExpressionStatement", "src": "10358:47:6"}]}, "documentation": {"id": 1334, "nodeType": "StructuredDocumentation", "src": "9784:206:6", "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."}, "id": 1393, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "10004:5:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1337, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1336, "mutability": "mutable", "name": "tokenId", "nameLocation": "10018:7:6", "nodeType": "VariableDeclaration", "scope": 1393, "src": "10010:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1335, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10010:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10009:17:6"}, "returnParameters": {"id": 1338, "nodeType": "ParameterList", "parameters": [], "src": "10044:0:6"}, "scope": 1628, "src": "9995:417:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1467, "nodeType": "Block", "src": "10845:507:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 1406, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1400, "src": "10889:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1404, "name": "ERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "10863:17:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1628_$", "typeString": "type(contract ERC721Upgradeable)"}}, "id": 1405, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10881:7:6", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 902, "src": "10863:25:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1407, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10863:34:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1408, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1396, "src": "10901:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10863:42:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572", "id": 1410, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10907:39:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48", "typeString": "literal_string \"ERC721: transfer from incorrect owner\""}, "value": "ERC721: transfer from incorrect owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48", "typeString": "literal_string \"ERC721: transfer from incorrect owner\""}], "id": 1403, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10855:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1411, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10855:92:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1412, "nodeType": "ExpressionStatement", "src": "10855:92:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1419, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1414, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1398, "src": "10965:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1417, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10979:1:6", "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": 1416, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10971:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1415, "name": "address", "nodeType": "ElementaryTypeName", "src": "10971:7:6", "typeDescriptions": {}}}, "id": 1418, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10971:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10965:16:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373", "id": 1420, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10983:38:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", "typeString": "literal_string \"ERC721: transfer to the zero address\""}, "value": "ERC721: transfer to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", "typeString": "literal_string \"ERC721: transfer to the zero address\""}], "id": 1413, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10957:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1421, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10957:65:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1422, "nodeType": "ExpressionStatement", "src": "10957:65:6"}, {"expression": {"arguments": [{"id": 1424, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1396, "src": "11054:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1425, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1398, "src": "11060:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1426, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1400, "src": "11064:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1423, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1611, "src": "11033:20:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1427, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11033:39:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1428, "nodeType": "ExpressionStatement", "src": "11033:39:6"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11151:1:6", "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": 1431, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11143:7:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1430, "name": "address", "nodeType": "ElementaryTypeName", "src": "11143:7:6", "typeDescriptions": {}}}, "id": 1433, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11143:10:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1434, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1400, "src": "11155:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1429, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "11134:8:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1435, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11134:29:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1436, "nodeType": "ExpressionStatement", "src": "11134:29:6"}, {"expression": {"id": 1441, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1437, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 775, "src": "11174:9:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 1439, "indexExpression": {"id": 1438, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1396, "src": "11184:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11174:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"hexValue": "31", "id": 1440, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11193:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "11174:20:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1442, "nodeType": "ExpressionStatement", "src": "11174:20:6"}, {"expression": {"id": 1447, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1443, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 775, "src": "11204:9:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 1445, "indexExpression": {"id": 1444, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1398, "src": "11214:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11204:13:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1446, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11221:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "11204:18:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1448, "nodeType": "ExpressionStatement", "src": "11204:18:6"}, {"expression": {"id": 1453, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1449, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 771, "src": "11232:7:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1451, "indexExpression": {"id": 1450, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1400, "src": "11240:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11232:16:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1452, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1398, "src": "11251:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "11232:21:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1454, "nodeType": "ExpressionStatement", "src": "11232:21:6"}, {"eventCall": {"arguments": [{"id": 1456, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1396, "src": "11278:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1457, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1398, "src": "11284:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1458, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1400, "src": "11288:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1455, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1661, "src": "11269:8:6", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1459, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11269:27:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1460, "nodeType": "EmitStatement", "src": "11264:32:6"}, {"expression": {"arguments": [{"id": 1462, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1396, "src": "11327:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1463, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1398, "src": "11333:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1464, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1400, "src": "11337:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1461, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1622, "src": "11307:19:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1465, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11307:38:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1466, "nodeType": "ExpressionStatement", "src": "11307:38:6"}]}, "documentation": {"id": 1394, "nodeType": "StructuredDocumentation", "src": "10418:313:6", "text": " @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."}, "id": 1468, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nameLocation": "10745:9:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1401, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1396, "mutability": "mutable", "name": "from", "nameLocation": "10772:4:6", "nodeType": "VariableDeclaration", "scope": 1468, "src": "10764:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1395, "name": "address", "nodeType": "ElementaryTypeName", "src": "10764:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1398, "mutability": "mutable", "name": "to", "nameLocation": "10794:2:6", "nodeType": "VariableDeclaration", "scope": 1468, "src": "10786:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1397, "name": "address", "nodeType": "ElementaryTypeName", "src": "10786:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1400, "mutability": "mutable", "name": "tokenId", "nameLocation": "10814:7:6", "nodeType": "VariableDeclaration", "scope": 1468, "src": "10806:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1399, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10806:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10754:73:6"}, "returnParameters": {"id": 1402, "nodeType": "ParameterList", "parameters": [], "src": "10845:0:6"}, "scope": 1628, "src": "10736:616:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1491, "nodeType": "Block", "src": "11528:118:6", "statements": [{"expression": {"id": 1480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1476, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 779, "src": "11538:15:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1478, "indexExpression": {"id": 1477, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1473, "src": "11554:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11538:24:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1479, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1471, "src": "11565:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "11538:29:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1481, "nodeType": "ExpressionStatement", "src": "11538:29:6"}, {"eventCall": {"arguments": [{"arguments": [{"id": 1485, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1473, "src": "11617:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1483, "name": "ERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "11591:17:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721Upgradeable_$1628_$", "typeString": "type(contract ERC721Upgradeable)"}}, "id": 1484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11609:7:6", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 902, "src": "11591:25:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1486, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11591:34:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1487, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1471, "src": "11627:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1488, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1473, "src": "11631:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1482, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1670, "src": "11582:8:6", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1489, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11582:57:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1490, "nodeType": "EmitStatement", "src": "11577:62:6"}]}, "documentation": {"id": 1469, "nodeType": "StructuredDocumentation", "src": "11358:101:6", "text": " @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."}, "id": 1492, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nameLocation": "11473:8:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1474, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1471, "mutability": "mutable", "name": "to", "nameLocation": "11490:2:6", "nodeType": "VariableDeclaration", "scope": 1492, "src": "11482:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1470, "name": "address", "nodeType": "ElementaryTypeName", "src": "11482:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1473, "mutability": "mutable", "name": "tokenId", "nameLocation": "11502:7:6", "nodeType": "VariableDeclaration", "scope": 1492, "src": "11494:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1472, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11494:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "11481:29:6"}, "returnParameters": {"id": 1475, "nodeType": "ParameterList", "parameters": [], "src": "11528:0:6"}, "scope": 1628, "src": "11464:182:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1523, "nodeType": "Block", "src": "11905:184:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1503, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1495, "src": "11923:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 1504, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "11932:8:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "11923:17:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20617070726f766520746f2063616c6c6572", "id": 1506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11942:27:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", "typeString": "literal_string \"ERC721: approve to caller\""}, "value": "ERC721: approve to caller"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", "typeString": "literal_string \"ERC721: approve to caller\""}], "id": 1502, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11915:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11915:55:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1508, "nodeType": "ExpressionStatement", "src": "11915:55:6"}, {"expression": {"id": 1515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"baseExpression": {"id": 1509, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 785, "src": "11980:18:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}}, "id": 1512, "indexExpression": {"id": 1510, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1495, "src": "11999:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11980:25:6", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 1513, "indexExpression": {"id": 1511, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "12006:8:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11980:35:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1514, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1499, "src": "12018:8:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "11980:46:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1516, "nodeType": "ExpressionStatement", "src": "11980:46:6"}, {"eventCall": {"arguments": [{"id": 1518, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1495, "src": "12056:5:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1519, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1497, "src": "12063:8:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1520, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1499, "src": "12073:8:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 1517, "name": "ApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1679, "src": "12041:14:6", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)"}}, "id": 1521, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12041:41:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1522, "nodeType": "EmitStatement", "src": "12036:46:6"}]}, "documentation": {"id": 1493, "nodeType": "StructuredDocumentation", "src": "11652:125:6", "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."}, "id": 1524, "implemented": true, "kind": "function", "modifiers": [], "name": "_setApprovalForAll", "nameLocation": "11791:18:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1500, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1495, "mutability": "mutable", "name": "owner", "nameLocation": "11827:5:6", "nodeType": "VariableDeclaration", "scope": 1524, "src": "11819:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1494, "name": "address", "nodeType": "ElementaryTypeName", "src": "11819:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1497, "mutability": "mutable", "name": "operator", "nameLocation": "11850:8:6", "nodeType": "VariableDeclaration", "scope": 1524, "src": "11842:16:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1496, "name": "address", "nodeType": "ElementaryTypeName", "src": "11842:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1499, "mutability": "mutable", "name": "approved", "nameLocation": "11873:8:6", "nodeType": "VariableDeclaration", "scope": 1524, "src": "11868:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1498, "name": "bool", "nodeType": "ElementaryTypeName", "src": "11868:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "11809:78:6"}, "returnParameters": {"id": 1501, "nodeType": "ParameterList", "parameters": [], "src": "11905:0:6"}, "scope": 1628, "src": "11782:307:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1537, "nodeType": "Block", "src": "12236:70:6", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 1532, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1527, "src": "12262:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1531, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1189, "src": "12254:7:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)"}}, "id": 1533, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12254:16:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20696e76616c696420746f6b656e204944", "id": 1534, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "12272:26:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}, "value": "ERC721: invalid token ID"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}], "id": 1530, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "12246:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1535, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12246:53:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1536, "nodeType": "ExpressionStatement", "src": "12246:53:6"}]}, "documentation": {"id": 1525, "nodeType": "StructuredDocumentation", "src": "12095:73:6", "text": " @dev Reverts if the `tokenId` has not been minted yet."}, "id": 1538, "implemented": true, "kind": "function", "modifiers": [], "name": "_requireMinted", "nameLocation": "12182:14:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1528, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1527, "mutability": "mutable", "name": "tokenId", "nameLocation": "12205:7:6", "nodeType": "VariableDeclaration", "scope": 1538, "src": "12197:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1526, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12197:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "12196:17:6"}, "returnParameters": {"id": 1529, "nodeType": "ParameterList", "parameters": [], "src": "12236:0:6"}, "scope": 1628, "src": "12173:133:6", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 1599, "nodeType": "Block", "src": "13013:698:6", "statements": [{"condition": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 1552, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1543, "src": "13027:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13030:10:6", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 1952, "src": "13027:13:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address) view returns (bool)"}}, "id": 1554, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13027:15:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1597, "nodeType": "Block", "src": "13669:36:6", "statements": [{"expression": {"hexValue": "74727565", "id": 1595, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "13690:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 1551, "id": 1596, "nodeType": "Return", "src": "13683:11:6"}]}, "id": 1598, "nodeType": "IfStatement", "src": "13023:682:6", "trueBody": {"id": 1594, "nodeType": "Block", "src": "13044:619:6", "statements": [{"clauses": [{"block": {"id": 1574, "nodeType": "Block", "src": "13169:102:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 1572, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1568, "name": "retval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1566, "src": "13194:6:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"expression": {"id": 1569, "name": "IERC721ReceiverUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1646, "src": "13204:26:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721ReceiverUpgradeable_$1646_$", "typeString": "type(contract IERC721ReceiverUpgradeable)"}}, "id": 1570, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "13231:16:6", "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "13204:43:6", "typeDescriptions": {"typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", "typeString": "function IERC721ReceiverUpgradeable.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}}, "id": 1571, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "13248:8:6", "memberName": "selector", "nodeType": "MemberAccess", "src": "13204:52:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "13194:62:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1551, "id": 1573, "nodeType": "Return", "src": "13187:69:6"}]}, "errorName": "", "id": 1575, "nodeType": "TryCatchClause", "parameters": {"id": 1567, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1566, "mutability": "mutable", "name": "retval", "nameLocation": "13161:6:6", "nodeType": "VariableDeclaration", "scope": 1575, "src": "13154:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 1565, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "13154:6:6", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "13153:15:6"}, "src": "13145:126:6"}, {"block": {"id": 1591, "nodeType": "Block", "src": "13300:353:6", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1582, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1579, "name": "reason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1577, "src": "13322:6:6", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 1580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13329:6:6", "memberName": "length", "nodeType": "MemberAccess", "src": "13322:13:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1581, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13339:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "13322:18:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1589, "nodeType": "Block", "src": "13449:190:6", "statements": [{"AST": {"nodeType": "YulBlock", "src": "13535:86:6", "statements": [{"expression": {"arguments": [{"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "13572:2:6", "type": "", "value": "32"}, {"name": "reason", "nodeType": "YulIdentifier", "src": "13576:6:6"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "13568:3:6"}, "nodeType": "YulFunctionCall", "src": "13568:15:6"}, {"arguments": [{"name": "reason", "nodeType": "YulIdentifier", "src": "13591:6:6"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "13585:5:6"}, "nodeType": "YulFunctionCall", "src": "13585:13:6"}], "functionName": {"name": "revert", "nodeType": "YulIdentifier", "src": "13561:6:6"}, "nodeType": "YulFunctionCall", "src": "13561:38:6"}, "nodeType": "YulExpressionStatement", "src": "13561:38:6"}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 1577, "isOffset": false, "isSlot": false, "src": "13576:6:6", "valueSize": 1}, {"declaration": 1577, "isOffset": false, "isSlot": false, "src": "13591:6:6", "valueSize": 1}], "id": 1588, "nodeType": "InlineAssembly", "src": "13526:95:6"}]}, "id": 1590, "nodeType": "IfStatement", "src": "13318:321:6", "trueBody": {"id": 1587, "nodeType": "Block", "src": "13342:101:6", "statements": [{"expression": {"arguments": [{"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 1584, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "13371:52:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}, "value": "ERC721: transfer to non ERC721Receiver implementer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}], "id": 1583, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "13364:6:6", "typeDescriptions": {"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure"}}, "id": 1585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13364:60:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1586, "nodeType": "ExpressionStatement", "src": "13364:60:6"}]}}]}, "errorName": "", "id": 1592, "nodeType": "TryCatchClause", "parameters": {"id": 1578, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1577, "mutability": "mutable", "name": "reason", "nameLocation": "13292:6:6", "nodeType": "VariableDeclaration", "scope": 1592, "src": "13279:19:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1576, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13279:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "13278:21:6"}, "src": "13272:381:6"}], "externalCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 1559, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "13110:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1560, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13110:12:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1561, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1541, "src": "13124:4:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1562, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1545, "src": "13130:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1563, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1547, "src": "13139:4:6", "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": {"arguments": [{"id": 1556, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1543, "src": "13089:2:6", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1555, "name": "IERC721ReceiverUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1646, "src": "13062:26:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721ReceiverUpgradeable_$1646_$", "typeString": "type(contract IERC721ReceiverUpgradeable)"}}, "id": 1557, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13062:30:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC721ReceiverUpgradeable_$1646", "typeString": "contract IERC721ReceiverUpgradeable"}}, "id": 1558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13093:16:6", "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 1645, "src": "13062:47:6", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"}}, "id": 1564, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13062:82:6", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "id": 1593, "nodeType": "TryStatement", "src": "13058:595:6"}]}}]}, "documentation": {"id": 1539, "nodeType": "StructuredDocumentation", "src": "12312:541:6", "text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"}, "id": 1600, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOnERC721Received", "nameLocation": "12867:22:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1548, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1541, "mutability": "mutable", "name": "from", "nameLocation": "12907:4:6", "nodeType": "VariableDeclaration", "scope": 1600, "src": "12899:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1540, "name": "address", "nodeType": "ElementaryTypeName", "src": "12899:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1543, "mutability": "mutable", "name": "to", "nameLocation": "12929:2:6", "nodeType": "VariableDeclaration", "scope": 1600, "src": "12921:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1542, "name": "address", "nodeType": "ElementaryTypeName", "src": "12921:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1545, "mutability": "mutable", "name": "tokenId", "nameLocation": "12949:7:6", "nodeType": "VariableDeclaration", "scope": 1600, "src": "12941:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1544, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12941:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1547, "mutability": "mutable", "name": "data", "nameLocation": "12979:4:6", "nodeType": "VariableDeclaration", "scope": 1600, "src": "12966:17:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1546, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12966:5:6", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "12889:100:6"}, "returnParameters": {"id": 1551, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1550, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1600, "src": "13007:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1549, "name": "bool", "nodeType": "ElementaryTypeName", "src": "13007:4:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "13006:6:6"}, "scope": 1628, "src": "12858:853:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 1610, "nodeType": "Block", "src": "14387:2:6", "statements": []}, "documentation": {"id": 1601, "nodeType": "StructuredDocumentation", "src": "13717:545:6", "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."}, "id": 1611, "implemented": true, "kind": "function", "modifiers": [], "name": "_beforeTokenTransfer", "nameLocation": "14276:20:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1608, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1603, "mutability": "mutable", "name": "from", "nameLocation": "14314:4:6", "nodeType": "VariableDeclaration", "scope": 1611, "src": "14306:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1602, "name": "address", "nodeType": "ElementaryTypeName", "src": "14306:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1605, "mutability": "mutable", "name": "to", "nameLocation": "14336:2:6", "nodeType": "VariableDeclaration", "scope": 1611, "src": "14328:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1604, "name": "address", "nodeType": "ElementaryTypeName", "src": "14328:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1607, "mutability": "mutable", "name": "tokenId", "nameLocation": "14356:7:6", "nodeType": "VariableDeclaration", "scope": 1611, "src": "14348:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1606, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14348:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "14296:73:6"}, "returnParameters": {"id": 1609, "nodeType": "ParameterList", "parameters": [], "src": "14387:0:6"}, "scope": 1628, "src": "14267:122:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1621, "nodeType": "Block", "src": "14880:2:6", "statements": []}, "documentation": {"id": 1612, "nodeType": "StructuredDocumentation", "src": "14395:361:6", "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."}, "id": 1622, "implemented": true, "kind": "function", "modifiers": [], "name": "_afterTokenTransfer", "nameLocation": "14770:19:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1619, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1614, "mutability": "mutable", "name": "from", "nameLocation": "14807:4:6", "nodeType": "VariableDeclaration", "scope": 1622, "src": "14799:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1613, "name": "address", "nodeType": "ElementaryTypeName", "src": "14799:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1616, "mutability": "mutable", "name": "to", "nameLocation": "14829:2:6", "nodeType": "VariableDeclaration", "scope": 1622, "src": "14821:10:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1615, "name": "address", "nodeType": "ElementaryTypeName", "src": "14821:7:6", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1618, "mutability": "mutable", "name": "tokenId", "nameLocation": "14849:7:6", "nodeType": "VariableDeclaration", "scope": 1622, "src": "14841:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1617, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14841:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "14789:73:6"}, "returnParameters": {"id": 1620, "nodeType": "ParameterList", "parameters": [], "src": "14880:0:6"}, "scope": 1628, "src": "14761:121:6", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 1623, "nodeType": "StructuredDocumentation", "src": "14888:254:6", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 1627, "mutability": "mutable", "name": "__gap", "nameLocation": "15167:5:6", "nodeType": "VariableDeclaration", "scope": 1628, "src": "15147:25:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$44_storage", "typeString": "uint256[44]"}, "typeName": {"baseType": {"id": 1624, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "15147:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1626, "length": {"hexValue": "3434", "id": 1625, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15155:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_44_by_1", "typeString": "int_const 44"}, "value": "44"}, "nodeType": "ArrayTypeName", "src": "15147:11:6", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$44_storage_ptr", "typeString": "uint256[44]"}}, "visibility": "private"}], "scope": 1629, "src": "751:14424:6", "usedErrors": []}], "src": "107:15069:6"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol", "exportedSymbols": {"IERC721ReceiverUpgradeable": [1646]}, "id": 1647, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1630, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "116:23:7"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC721ReceiverUpgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1631, "nodeType": "StructuredDocumentation", "src": "141:152:7", "text": " @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."}, "fullyImplemented": false, "id": 1646, "linearizedBaseContracts": [1646], "name": "IERC721ReceiverUpgradeable", "nameLocation": "304:26:7", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1632, "nodeType": "StructuredDocumentation", "src": "337:493:7", "text": " @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}, "functionSelector": "150b7a02", "id": 1645, "implemented": false, "kind": "function", "modifiers": [], "name": "onERC721Received", "nameLocation": "844:16:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1641, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1634, "mutability": "mutable", "name": "operator", "nameLocation": "878:8:7", "nodeType": "VariableDeclaration", "scope": 1645, "src": "870:16:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1633, "name": "address", "nodeType": "ElementaryTypeName", "src": "870:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1636, "mutability": "mutable", "name": "from", "nameLocation": "904:4:7", "nodeType": "VariableDeclaration", "scope": 1645, "src": "896:12:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1635, "name": "address", "nodeType": "ElementaryTypeName", "src": "896:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1638, "mutability": "mutable", "name": "tokenId", "nameLocation": "926:7:7", "nodeType": "VariableDeclaration", "scope": 1645, "src": "918:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1637, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "918:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1640, "mutability": "mutable", "name": "data", "nameLocation": "958:4:7", "nodeType": "VariableDeclaration", "scope": 1645, "src": "943:19:7", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1639, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "943:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "860:108:7"}, "returnParameters": {"id": 1644, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1643, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1645, "src": "987:6:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 1642, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "987:6:7", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "986:8:7"}, "scope": 1646, "src": "835:160:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1647, "src": "294:703:7", "usedErrors": []}], "src": "116:882:7"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol", "exportedSymbols": {"IERC165Upgradeable": [2695], "IERC721Upgradeable": [1762]}, "id": 1763, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1648, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "108:23:8"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", "file": "../../utils/introspection/IERC165Upgradeable.sol", "id": 1649, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1763, "sourceUnit": 2696, "src": "133:58:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1651, "name": "IERC165Upgradeable", "nameLocations": ["293:18:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 2695, "src": "293:18:8"}, "id": 1652, "nodeType": "InheritanceSpecifier", "src": "293:18:8"}], "canonicalName": "IERC721Upgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1650, "nodeType": "StructuredDocumentation", "src": "193:67:8", "text": " @dev Required interface of an ERC721 compliant contract."}, "fullyImplemented": false, "id": 1762, "linearizedBaseContracts": [1762, 2695], "name": "IERC721Upgradeable", "nameLocation": "271:18:8", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 1653, "nodeType": "StructuredDocumentation", "src": "318:88:8", "text": " @dev Emitted when `tokenId` token is transferred from `from` to `to`."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1661, "name": "Transfer", "nameLocation": "417:8:8", "nodeType": "EventDefinition", "parameters": {"id": 1660, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1655, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "442:4:8", "nodeType": "VariableDeclaration", "scope": 1661, "src": "426:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1654, "name": "address", "nodeType": "ElementaryTypeName", "src": "426:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1657, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "464:2:8", "nodeType": "VariableDeclaration", "scope": 1661, "src": "448:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1656, "name": "address", "nodeType": "ElementaryTypeName", "src": "448:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1659, "indexed": true, "mutability": "mutable", "name": "tokenId", "nameLocation": "484:7:8", "nodeType": "VariableDeclaration", "scope": 1661, "src": "468:23:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1658, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "468:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:67:8"}, "src": "411:82:8"}, {"anonymous": false, "documentation": {"id": 1662, "nodeType": "StructuredDocumentation", "src": "499:94:8", "text": " @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1670, "name": "Approval", "nameLocation": "604:8:8", "nodeType": "EventDefinition", "parameters": {"id": 1669, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1664, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "629:5:8", "nodeType": "VariableDeclaration", "scope": 1670, "src": "613:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1663, "name": "address", "nodeType": "ElementaryTypeName", "src": "613:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1666, "indexed": true, "mutability": "mutable", "name": "approved", "nameLocation": "652:8:8", "nodeType": "VariableDeclaration", "scope": 1670, "src": "636:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1665, "name": "address", "nodeType": "ElementaryTypeName", "src": "636:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1668, "indexed": true, "mutability": "mutable", "name": "tokenId", "nameLocation": "678:7:8", "nodeType": "VariableDeclaration", "scope": 1670, "src": "662:23:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1667, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "662:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "612:74:8"}, "src": "598:89:8"}, {"anonymous": false, "documentation": {"id": 1671, "nodeType": "StructuredDocumentation", "src": "693:117:8", "text": " @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."}, "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31", "id": 1679, "name": "ApprovalForAll", "nameLocation": "821:14:8", "nodeType": "EventDefinition", "parameters": {"id": 1678, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1673, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "852:5:8", "nodeType": "VariableDeclaration", "scope": 1679, "src": "836:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1672, "name": "address", "nodeType": "ElementaryTypeName", "src": "836:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1675, "indexed": true, "mutability": "mutable", "name": "operator", "nameLocation": "875:8:8", "nodeType": "VariableDeclaration", "scope": 1679, "src": "859:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1674, "name": "address", "nodeType": "ElementaryTypeName", "src": "859:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1677, "indexed": false, "mutability": "mutable", "name": "approved", "nameLocation": "890:8:8", "nodeType": "VariableDeclaration", "scope": 1679, "src": "885:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1676, "name": "bool", "nodeType": "ElementaryTypeName", "src": "885:4:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "835:64:8"}, "src": "815:85:8"}, {"documentation": {"id": 1680, "nodeType": "StructuredDocumentation", "src": "906:76:8", "text": " @dev Returns the number of tokens in ``owner``'s account."}, "functionSelector": "70a08231", "id": 1687, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "996:9:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1683, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1682, "mutability": "mutable", "name": "owner", "nameLocation": "1014:5:8", "nodeType": "VariableDeclaration", "scope": 1687, "src": "1006:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1681, "name": "address", "nodeType": "ElementaryTypeName", "src": "1006:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1005:15:8"}, "returnParameters": {"id": 1686, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1685, "mutability": "mutable", "name": "balance", "nameLocation": "1052:7:8", "nodeType": "VariableDeclaration", "scope": 1687, "src": "1044:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1684, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1044:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1043:17:8"}, "scope": 1762, "src": "987:74:8", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1688, "nodeType": "StructuredDocumentation", "src": "1067:131:8", "text": " @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."}, "functionSelector": "6352211e", "id": 1695, "implemented": false, "kind": "function", "modifiers": [], "name": "ownerOf", "nameLocation": "1212:7:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1691, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1690, "mutability": "mutable", "name": "tokenId", "nameLocation": "1228:7:8", "nodeType": "VariableDeclaration", "scope": 1695, "src": "1220:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1689, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1220:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1219:17:8"}, "returnParameters": {"id": 1694, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1693, "mutability": "mutable", "name": "owner", "nameLocation": "1268:5:8", "nodeType": "VariableDeclaration", "scope": 1695, "src": "1260:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1692, "name": "address", "nodeType": "ElementaryTypeName", "src": "1260:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1259:15:8"}, "scope": 1762, "src": "1203:72:8", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1696, "nodeType": "StructuredDocumentation", "src": "1281:556:8", "text": " @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "functionSelector": "b88d4fde", "id": 1707, "implemented": false, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "1851:16:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1705, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1698, "mutability": "mutable", "name": "from", "nameLocation": "1885:4:8", "nodeType": "VariableDeclaration", "scope": 1707, "src": "1877:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1697, "name": "address", "nodeType": "ElementaryTypeName", "src": "1877:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1700, "mutability": "mutable", "name": "to", "nameLocation": "1907:2:8", "nodeType": "VariableDeclaration", "scope": 1707, "src": "1899:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1699, "name": "address", "nodeType": "ElementaryTypeName", "src": "1899:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1702, "mutability": "mutable", "name": "tokenId", "nameLocation": "1927:7:8", "nodeType": "VariableDeclaration", "scope": 1707, "src": "1919:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1701, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1919:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1704, "mutability": "mutable", "name": "data", "nameLocation": "1959:4:8", "nodeType": "VariableDeclaration", "scope": 1707, "src": "1944:19:8", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1703, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1944:5:8", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1867:102:8"}, "returnParameters": {"id": 1706, "nodeType": "ParameterList", "parameters": [], "src": "1978:0:8"}, "scope": 1762, "src": "1842:137:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1708, "nodeType": "StructuredDocumentation", "src": "1985:687:8", "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "functionSelector": "42842e0e", "id": 1717, "implemented": false, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "2686:16:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1715, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1710, "mutability": "mutable", "name": "from", "nameLocation": "2720:4:8", "nodeType": "VariableDeclaration", "scope": 1717, "src": "2712:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1709, "name": "address", "nodeType": "ElementaryTypeName", "src": "2712:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1712, "mutability": "mutable", "name": "to", "nameLocation": "2742:2:8", "nodeType": "VariableDeclaration", "scope": 1717, "src": "2734:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1711, "name": "address", "nodeType": "ElementaryTypeName", "src": "2734:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1714, "mutability": "mutable", "name": "tokenId", "nameLocation": "2762:7:8", "nodeType": "VariableDeclaration", "scope": 1717, "src": "2754:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1713, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2754:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2702:73:8"}, "returnParameters": {"id": 1716, "nodeType": "ParameterList", "parameters": [], "src": "2784:0:8"}, "scope": 1762, "src": "2677:108:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1718, "nodeType": "StructuredDocumentation", "src": "2791:504:8", "text": " @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1727, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "3309:12:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1725, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1720, "mutability": "mutable", "name": "from", "nameLocation": "3339:4:8", "nodeType": "VariableDeclaration", "scope": 1727, "src": "3331:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1719, "name": "address", "nodeType": "ElementaryTypeName", "src": "3331:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1722, "mutability": "mutable", "name": "to", "nameLocation": "3361:2:8", "nodeType": "VariableDeclaration", "scope": 1727, "src": "3353:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1721, "name": "address", "nodeType": "ElementaryTypeName", "src": "3353:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1724, "mutability": "mutable", "name": "tokenId", "nameLocation": "3381:7:8", "nodeType": "VariableDeclaration", "scope": 1727, "src": "3373:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1723, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3373:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3321:73:8"}, "returnParameters": {"id": 1726, "nodeType": "ParameterList", "parameters": [], "src": "3403:0:8"}, "scope": 1762, "src": "3300:104:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1728, "nodeType": "StructuredDocumentation", "src": "3410:452:8", "text": " @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1735, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "3876:7:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1733, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1730, "mutability": "mutable", "name": "to", "nameLocation": "3892:2:8", "nodeType": "VariableDeclaration", "scope": 1735, "src": "3884:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1729, "name": "address", "nodeType": "ElementaryTypeName", "src": "3884:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1732, "mutability": "mutable", "name": "tokenId", "nameLocation": "3904:7:8", "nodeType": "VariableDeclaration", "scope": 1735, "src": "3896:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1731, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3896:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3883:29:8"}, "returnParameters": {"id": 1734, "nodeType": "ParameterList", "parameters": [], "src": "3921:0:8"}, "scope": 1762, "src": "3867:55:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1736, "nodeType": "StructuredDocumentation", "src": "3928:309:8", "text": " @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."}, "functionSelector": "a22cb465", "id": 1743, "implemented": false, "kind": "function", "modifiers": [], "name": "setApprovalForAll", "nameLocation": "4251:17:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1741, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1738, "mutability": "mutable", "name": "operator", "nameLocation": "4277:8:8", "nodeType": "VariableDeclaration", "scope": 1743, "src": "4269:16:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1737, "name": "address", "nodeType": "ElementaryTypeName", "src": "4269:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1740, "mutability": "mutable", "name": "_approved", "nameLocation": "4292:9:8", "nodeType": "VariableDeclaration", "scope": 1743, "src": "4287:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1739, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4287:4:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4268:34:8"}, "returnParameters": {"id": 1742, "nodeType": "ParameterList", "parameters": [], "src": "4311:0:8"}, "scope": 1762, "src": "4242:70:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1744, "nodeType": "StructuredDocumentation", "src": "4318:139:8", "text": " @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."}, "functionSelector": "081812fc", "id": 1751, "implemented": false, "kind": "function", "modifiers": [], "name": "getApproved", "nameLocation": "4471:11:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1747, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1746, "mutability": "mutable", "name": "tokenId", "nameLocation": "4491:7:8", "nodeType": "VariableDeclaration", "scope": 1751, "src": "4483:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1745, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4483:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4482:17:8"}, "returnParameters": {"id": 1750, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1749, "mutability": "mutable", "name": "operator", "nameLocation": "4531:8:8", "nodeType": "VariableDeclaration", "scope": 1751, "src": "4523:16:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1748, "name": "address", "nodeType": "ElementaryTypeName", "src": "4523:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4522:18:8"}, "scope": 1762, "src": "4462:79:8", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1752, "nodeType": "StructuredDocumentation", "src": "4547:138:8", "text": " @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"}, "functionSelector": "e985e9c5", "id": 1761, "implemented": false, "kind": "function", "modifiers": [], "name": "isApprovedForAll", "nameLocation": "4699:16:8", "nodeType": "FunctionDefinition", "parameters": {"id": 1757, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1754, "mutability": "mutable", "name": "owner", "nameLocation": "4724:5:8", "nodeType": "VariableDeclaration", "scope": 1761, "src": "4716:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1753, "name": "address", "nodeType": "ElementaryTypeName", "src": "4716:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1756, "mutability": "mutable", "name": "operator", "nameLocation": "4739:8:8", "nodeType": "VariableDeclaration", "scope": 1761, "src": "4731:16:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1755, "name": "address", "nodeType": "ElementaryTypeName", "src": "4731:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4715:33:8"}, "returnParameters": {"id": 1760, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1759, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1761, "src": "4772:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1758, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4772:4:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4771:6:8"}, "scope": 1762, "src": "4690:88:8", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 1763, "src": "261:4519:8", "usedErrors": []}], "src": "108:4673:8"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "ContextUpgradeable": [2219], "ERC165Upgradeable": [2683], "ERC721URIStorageUpgradeable": [1907], "ERC721Upgradeable": [1628], "IERC165Upgradeable": [2695], "IERC721MetadataUpgradeable": [1934], "IERC721ReceiverUpgradeable": [1646], "IERC721Upgradeable": [1762], "Initializable": [282], "StringsUpgradeable": [2445]}, "id": 1908, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1764, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "128:23:9"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", "file": "../ERC721Upgradeable.sol", "id": 1765, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1908, "sourceUnit": 1629, "src": "153:34:9", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../../../proxy/utils/Initializable.sol", "id": 1766, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1908, "sourceUnit": 283, "src": "188:48:9", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 1768, "name": "Initializable", "nameLocations": ["357:13:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 282, "src": "357:13:9"}, "id": 1769, "nodeType": "InheritanceSpecifier", "src": "357:13:9"}, {"baseName": {"id": 1770, "name": "ERC721Upgradeable", "nameLocations": ["372:17:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 1628, "src": "372:17:9"}, "id": 1771, "nodeType": "InheritanceSpecifier", "src": "372:17:9"}], "canonicalName": "ERC721URIStorageUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 1767, "nodeType": "StructuredDocumentation", "src": "238:69:9", "text": " @dev ERC721 token with storage based token URI management."}, "fullyImplemented": true, "id": 1907, "linearizedBaseContracts": [1907, 1628, 1934, 1762, 2683, 2695, 2219, 282], "name": "ERC721URIStorageUpgradeable", "nameLocation": "326:27:9", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1776, "nodeType": "Block", "src": "457:7:9", "statements": []}, "id": 1777, "implemented": true, "kind": "function", "modifiers": [{"id": 1774, "kind": "modifierInvocation", "modifierName": {"id": 1773, "name": "onlyInitializing", "nameLocations": ["440:16:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "440:16:9"}, "nodeType": "ModifierInvocation", "src": "440:16:9"}], "name": "__ERC721URIStorage_init", "nameLocation": "405:23:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1772, "nodeType": "ParameterList", "parameters": [], "src": "428:2:9"}, "returnParameters": {"id": 1775, "nodeType": "ParameterList", "parameters": [], "src": "457:0:9"}, "scope": 1907, "src": "396:68:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1782, "nodeType": "Block", "src": "541:7:9", "statements": []}, "id": 1783, "implemented": true, "kind": "function", "modifiers": [{"id": 1780, "kind": "modifierInvocation", "modifierName": {"id": 1779, "name": "onlyInitializing", "nameLocations": ["524:16:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "524:16:9"}, "nodeType": "ModifierInvocation", "src": "524:16:9"}], "name": "__ERC721URIStorage_init_unchained", "nameLocation": "479:33:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1778, "nodeType": "ParameterList", "parameters": [], "src": "512:2:9"}, "returnParameters": {"id": 1781, "nodeType": "ParameterList", "parameters": [], "src": "541:0:9"}, "scope": 1907, "src": "470:78:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"global": false, "id": 1786, "libraryName": {"id": 1784, "name": "StringsUpgradeable", "nameLocations": ["559:18:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2445, "src": "559:18:9"}, "nodeType": "UsingForDirective", "src": "553:37:9", "typeName": {"id": 1785, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "582:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"constant": false, "id": 1790, "mutability": "mutable", "name": "_tokenURIs", "nameLocation": "670:10:9", "nodeType": "VariableDeclaration", "scope": 1907, "src": "635:45:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string)"}, "typeName": {"id": 1789, "keyType": {"id": 1787, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "643:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "635:26:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string)"}, "valueType": {"id": 1788, "name": "string", "nodeType": "ElementaryTypeName", "src": "654:6:9", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}}, "visibility": "private"}, {"baseFunctions": [961], "body": {"id": 1848, "nodeType": "Block", "src": "835:520:9", "statements": [{"expression": {"arguments": [{"id": 1800, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1793, "src": "860:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1799, "name": "_requireMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1538, "src": "845:14:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view"}}, "id": 1801, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "845:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1802, "nodeType": "ExpressionStatement", "src": "845:23:9"}, {"assignments": [1804], "declarations": [{"constant": false, "id": 1804, "mutability": "mutable", "name": "_tokenURI", "nameLocation": "893:9:9", "nodeType": "VariableDeclaration", "scope": 1848, "src": "879:23:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1803, "name": "string", "nodeType": "ElementaryTypeName", "src": "879:6:9", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 1808, "initialValue": {"baseExpression": {"id": 1805, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1790, "src": "905:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 1807, "indexExpression": {"id": 1806, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1793, "src": "916:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "905:19:9", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "879:45:9"}, {"assignments": [1810], "declarations": [{"constant": false, "id": 1810, "mutability": "mutable", "name": "base", "nameLocation": "948:4:9", "nodeType": "VariableDeclaration", "scope": 1848, "src": "934:18:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1809, "name": "string", "nodeType": "ElementaryTypeName", "src": "934:6:9", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 1813, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 1811, "name": "_baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "955:8:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", "typeString": "function () view returns (string memory)"}}, "id": 1812, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "955:10:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "nodeType": "VariableDeclarationStatement", "src": "934:31:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1820, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 1816, "name": "base", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1810, "src": "1044:4:9", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 1815, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1038:5:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 1814, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1038:5:9", "typeDescriptions": {}}}, "id": 1817, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1038:11:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 1818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1050:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "1038:18:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1819, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1060:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1038:23:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1824, "nodeType": "IfStatement", "src": "1034:70:9", "trueBody": {"id": 1823, "nodeType": "Block", "src": "1063:41:9", "statements": [{"expression": {"id": 1821, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1804, "src": "1084:9:9", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 1798, "id": 1822, "nodeType": "Return", "src": "1077:16:9"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 1827, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1804, "src": "1212:9:9", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 1826, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1206:5:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 1825, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1206:5:9", "typeDescriptions": {}}}, "id": 1828, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1206:16:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 1829, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1223:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "1206:23:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1830, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1232:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1206:27:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1842, "nodeType": "IfStatement", "src": "1202:106:9", "trueBody": {"id": 1841, "nodeType": "Block", "src": "1235:73:9", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 1836, "name": "base", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1810, "src": "1280:4:9", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 1837, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1804, "src": "1286:9:9", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "expression": {"id": 1834, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "1263:3:9", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 1835, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1267:12:9", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "1263:16:9", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 1838, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1263:33:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 1833, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1256:6:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 1832, "name": "string", "nodeType": "ElementaryTypeName", "src": "1256:6:9", "typeDescriptions": {}}}, "id": 1839, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1256:41:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 1798, "id": 1840, "nodeType": "Return", "src": "1249:48:9"}]}}, {"expression": {"arguments": [{"id": 1845, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1793, "src": "1340:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1843, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "1325:5:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_ERC721URIStorageUpgradeable_$1907_$", "typeString": "type(contract super ERC721URIStorageUpgradeable)"}}, "id": 1844, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1331:8:9", "memberName": "tokenURI", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "1325:14:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) view returns (string memory)"}}, "id": 1846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1325:23:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 1798, "id": 1847, "nodeType": "Return", "src": "1318:30:9"}]}, "documentation": {"id": 1791, "nodeType": "StructuredDocumentation", "src": "687:55:9", "text": " @dev See {IERC721Metadata-tokenURI}."}, "functionSelector": "c87b56dd", "id": 1849, "implemented": true, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "756:8:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1795, "nodeType": "OverrideSpecifier", "overrides": [], "src": "802:8:9"}, "parameters": {"id": 1794, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1793, "mutability": "mutable", "name": "tokenId", "nameLocation": "773:7:9", "nodeType": "VariableDeclaration", "scope": 1849, "src": "765:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1792, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "765:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "764:17:9"}, "returnParameters": {"id": 1798, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1797, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1849, "src": "820:13:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1796, "name": "string", "nodeType": "ElementaryTypeName", "src": "820:6:9", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "819:15:9"}, "scope": 1907, "src": "747:608:9", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 1870, "nodeType": "Block", "src": "1583:133:9", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 1859, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1852, "src": "1609:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1858, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1189, "src": "1601:7:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)"}}, "id": 1860, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1601:16:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524337323155524953746f726167653a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e", "id": 1861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1619:48:9", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7521de1f20ce4d7bb86b61090bad73a87315a1f4baff36cc352901c7777280c4", "typeString": "literal_string \"ERC721URIStorage: URI set of nonexistent token\""}, "value": "ERC721URIStorage: URI set of nonexistent token"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7521de1f20ce4d7bb86b61090bad73a87315a1f4baff36cc352901c7777280c4", "typeString": "literal_string \"ERC721URIStorage: URI set of nonexistent token\""}], "id": 1857, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1593:7:9", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1862, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1593:75:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1863, "nodeType": "ExpressionStatement", "src": "1593:75:9"}, {"expression": {"id": 1868, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1864, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1790, "src": "1678:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 1866, "indexExpression": {"id": 1865, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1852, "src": "1689:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1678:19:9", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1867, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1854, "src": "1700:9:9", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1678:31:9", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 1869, "nodeType": "ExpressionStatement", "src": "1678:31:9"}]}, "documentation": {"id": 1850, "nodeType": "StructuredDocumentation", "src": "1361:136:9", "text": " @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Requirements:\n - `tokenId` must exist."}, "id": 1871, "implemented": true, "kind": "function", "modifiers": [], "name": "_setTokenURI", "nameLocation": "1511:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1855, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1852, "mutability": "mutable", "name": "tokenId", "nameLocation": "1532:7:9", "nodeType": "VariableDeclaration", "scope": 1871, "src": "1524:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1851, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1524:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1854, "mutability": "mutable", "name": "_tokenURI", "nameLocation": "1555:9:9", "nodeType": "VariableDeclaration", "scope": 1871, "src": "1541:23:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1853, "name": "string", "nodeType": "ElementaryTypeName", "src": "1541:6:9", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1523:42:9"}, "returnParameters": {"id": 1856, "nodeType": "ParameterList", "parameters": [], "src": "1583:0:9"}, "scope": 1907, "src": "1502:214:9", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"baseFunctions": [1393], "body": {"id": 1900, "nodeType": "Block", "src": "1992:142:9", "statements": [{"expression": {"arguments": [{"id": 1881, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1874, "src": "2014:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 1878, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "2002:5:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_ERC721URIStorageUpgradeable_$1907_$", "typeString": "type(contract super ERC721URIStorageUpgradeable)"}}, "id": 1880, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2008:5:9", "memberName": "_burn", "nodeType": "MemberAccess", "referencedDeclaration": 1393, "src": "2002:11:9", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 1882, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2002:20:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1883, "nodeType": "ExpressionStatement", "src": "2002:20:9"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1892, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"baseExpression": {"id": 1886, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1790, "src": "2043:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 1888, "indexExpression": {"id": 1887, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1874, "src": "2054:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2043:19:9", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}], "id": 1885, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2037:5:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 1884, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2037:5:9", "typeDescriptions": {}}}, "id": 1889, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2037:26:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes storage pointer"}}, "id": 1890, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2064:6:9", "memberName": "length", "nodeType": "MemberAccess", "src": "2037:33:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 1891, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2074:1:9", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2037:38:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1899, "nodeType": "IfStatement", "src": "2033:95:9", "trueBody": {"id": 1898, "nodeType": "Block", "src": "2077:51:9", "statements": [{"expression": {"id": 1896, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "2091:26:9", "subExpression": {"baseExpression": {"id": 1893, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1790, "src": "2098:10:9", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 1895, "indexExpression": {"id": 1894, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1874, "src": "2109:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2098:19:9", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1897, "nodeType": "ExpressionStatement", "src": "2091:26:9"}]}}]}, "documentation": {"id": 1872, "nodeType": "StructuredDocumentation", "src": "1722:207:9", "text": " @dev See {ERC721-_burn}. This override additionally checks to see if a\n token-specific URI was set for the token, and if so, it deletes the token URI from\n the storage mapping."}, "id": 1901, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "1943:5:9", "nodeType": "FunctionDefinition", "overrides": {"id": 1876, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1983:8:9"}, "parameters": {"id": 1875, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1874, "mutability": "mutable", "name": "tokenId", "nameLocation": "1957:7:9", "nodeType": "VariableDeclaration", "scope": 1901, "src": "1949:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1873, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1949:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1948:17:9"}, "returnParameters": {"id": 1877, "nodeType": "ParameterList", "parameters": [], "src": "1992:0:9"}, "scope": 1907, "src": "1934:200:9", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 1902, "nodeType": "StructuredDocumentation", "src": "2140:254:9", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 1906, "mutability": "mutable", "name": "__gap", "nameLocation": "2419:5:9", "nodeType": "VariableDeclaration", "scope": 1907, "src": "2399:25:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage", "typeString": "uint256[49]"}, "typeName": {"baseType": {"id": 1903, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2399:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1905, "length": {"hexValue": "3439", "id": 1904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2407:2:9", "typeDescriptions": {"typeIdentifier": "t_rational_49_by_1", "typeString": "int_const 49"}, "value": "49"}, "nodeType": "ArrayTypeName", "src": "2399:11:9", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$49_storage_ptr", "typeString": "uint256[49]"}}, "visibility": "private"}], "scope": 1908, "src": "308:2119:9", "usedErrors": []}], "src": "128:2300:9"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol", "exportedSymbols": {"IERC165Upgradeable": [2695], "IERC721MetadataUpgradeable": [1934], "IERC721Upgradeable": [1762]}, "id": 1935, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1909, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "112:23:10"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol", "file": "../IERC721Upgradeable.sol", "id": 1910, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1935, "sourceUnit": 1763, "src": "137:35:10", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1912, "name": "IERC721Upgradeable", "nameLocations": ["348:18:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1762, "src": "348:18:10"}, "id": 1913, "nodeType": "InheritanceSpecifier", "src": "348:18:10"}], "canonicalName": "IERC721MetadataUpgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1911, "nodeType": "StructuredDocumentation", "src": "174:133:10", "text": " @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"}, "fullyImplemented": false, "id": 1934, "linearizedBaseContracts": [1934, 1762, 2695], "name": "IERC721MetadataUpgradeable", "nameLocation": "318:26:10", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1914, "nodeType": "StructuredDocumentation", "src": "373:58:10", "text": " @dev Returns the token collection name."}, "functionSelector": "06fdde03", "id": 1919, "implemented": false, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "445:4:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1915, "nodeType": "ParameterList", "parameters": [], "src": "449:2:10"}, "returnParameters": {"id": 1918, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1917, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1919, "src": "475:13:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1916, "name": "string", "nodeType": "ElementaryTypeName", "src": "475:6:10", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "474:15:10"}, "scope": 1934, "src": "436:54:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1920, "nodeType": "StructuredDocumentation", "src": "496:60:10", "text": " @dev Returns the token collection symbol."}, "functionSelector": "95d89b41", "id": 1925, "implemented": false, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "570:6:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1921, "nodeType": "ParameterList", "parameters": [], "src": "576:2:10"}, "returnParameters": {"id": 1924, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1923, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1925, "src": "602:13:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1922, "name": "string", "nodeType": "ElementaryTypeName", "src": "602:6:10", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "601:15:10"}, "scope": 1934, "src": "561:56:10", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1926, "nodeType": "StructuredDocumentation", "src": "623:90:10", "text": " @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."}, "functionSelector": "c87b56dd", "id": 1933, "implemented": false, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "727:8:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1929, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1928, "mutability": "mutable", "name": "tokenId", "nameLocation": "744:7:10", "nodeType": "VariableDeclaration", "scope": 1933, "src": "736:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1927, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "736:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "735:17:10"}, "returnParameters": {"id": 1932, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1931, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1933, "src": "776:13:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1930, "name": "string", "nodeType": "ElementaryTypeName", "src": "776:6:10", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "775:15:10"}, "scope": 1934, "src": "718:73:10", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 1935, "src": "308:485:10", "usedErrors": []}], "src": "112:682:10"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177]}, "id": 2178, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1936, "literals": ["solidity", "^", "0.8", ".1"], "nodeType": "PragmaDirective", "src": "101:23:11"}, {"abstract": false, "baseContracts": [], "canonicalName": "AddressUpgradeable", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1937, "nodeType": "StructuredDocumentation", "src": "126:67:11", "text": " @dev Collection of functions related to the address type"}, "fullyImplemented": true, "id": 2177, "linearizedBaseContracts": [2177], "name": "AddressUpgradeable", "nameLocation": "202:18:11", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1951, "nodeType": "Block", "src": "1252:254:11", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1949, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1945, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1940, "src": "1476:7:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1946, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1484:4:11", "memberName": "code", "nodeType": "MemberAccess", "src": "1476:12:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 1947, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1489:6:11", "memberName": "length", "nodeType": "MemberAccess", "src": "1476:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1948, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1498:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1476:23:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1944, "id": 1950, "nodeType": "Return", "src": "1469:30:11"}]}, "documentation": {"id": 1938, "nodeType": "StructuredDocumentation", "src": "227:954:11", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="}, "id": 1952, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1195:10:11", "nodeType": "FunctionDefinition", "parameters": {"id": 1941, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1940, "mutability": "mutable", "name": "account", "nameLocation": "1214:7:11", "nodeType": "VariableDeclaration", "scope": 1952, "src": "1206:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1939, "name": "address", "nodeType": "ElementaryTypeName", "src": "1206:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1205:17:11"}, "returnParameters": {"id": 1944, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1943, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1952, "src": "1246:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1942, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1246:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1245:6:11"}, "scope": 2177, "src": "1186:320:11", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1985, "nodeType": "Block", "src": "2494:241:11", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 1963, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2520:4:11", "typeDescriptions": {"typeIdentifier": "t_contract$_AddressUpgradeable_$2177", "typeString": "library AddressUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_AddressUpgradeable_$2177", "typeString": "library AddressUpgradeable"}], "id": 1962, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2512:7:11", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1961, "name": "address", "nodeType": "ElementaryTypeName", "src": "2512:7:11", "typeDescriptions": {}}}, "id": 1964, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2512:13:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1965, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2526:7:11", "memberName": "balance", "nodeType": "MemberAccess", "src": "2512:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 1966, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1957, "src": "2537:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2512:31:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", "id": 1968, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2545:31:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", "typeString": "literal_string \"Address: insufficient balance\""}, "value": "Address: insufficient balance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", "typeString": "literal_string \"Address: insufficient balance\""}], "id": 1960, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2504:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1969, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2504:73:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1970, "nodeType": "ExpressionStatement", "src": "2504:73:11"}, {"assignments": [1972, null], "declarations": [{"constant": false, "id": 1972, "mutability": "mutable", "name": "success", "nameLocation": "2594:7:11", "nodeType": "VariableDeclaration", "scope": 1985, "src": "2589:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1971, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2589:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, null], "id": 1979, "initialValue": {"arguments": [{"hexValue": "", "id": 1977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2637:2:11", "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": 1973, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1955, "src": "2607:9:11", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "id": 1974, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2617:4:11", "memberName": "call", "nodeType": "MemberAccess", "src": "2607:14:11", "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": 1976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{"id": 1975, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1957, "src": "2629:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "src": "2607:29:11", "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": 1978, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2607:33:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "2588:52:11"}, {"expression": {"arguments": [{"id": 1981, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1972, "src": "2658:7:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", "id": 1982, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2667:60:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""}, "value": "Address: unable to send value, recipient may have reverted"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""}], "id": 1980, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2650:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1983, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2650:78:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1984, "nodeType": "ExpressionStatement", "src": "2650:78:11"}]}, "documentation": {"id": 1953, "nodeType": "StructuredDocumentation", "src": "1512:906:11", "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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."}, "id": 1986, "implemented": true, "kind": "function", "modifiers": [], "name": "sendValue", "nameLocation": "2432:9:11", "nodeType": "FunctionDefinition", "parameters": {"id": 1958, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1955, "mutability": "mutable", "name": "recipient", "nameLocation": "2458:9:11", "nodeType": "VariableDeclaration", "scope": 1986, "src": "2442:25:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}, "typeName": {"id": 1954, "name": "address", "nodeType": "ElementaryTypeName", "src": "2442:15:11", "stateMutability": "payable", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "visibility": "internal"}, {"constant": false, "id": 1957, "mutability": "mutable", "name": "amount", "nameLocation": "2477:6:11", "nodeType": "VariableDeclaration", "scope": 1986, "src": "2469:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1956, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2469:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2441:43:11"}, "returnParameters": {"id": 1959, "nodeType": "ParameterList", "parameters": [], "src": "2494:0:11"}, "scope": 2177, "src": "2423:312:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2002, "nodeType": "Block", "src": "3566:84:11", "statements": [{"expression": {"arguments": [{"id": 1997, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1989, "src": "3596:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1998, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1991, "src": "3604:4:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", "id": 1999, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3610:32:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", "typeString": "literal_string \"Address: low-level call failed\""}, "value": "Address: low-level call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", "typeString": "literal_string \"Address: low-level call failed\""}], "id": 1996, "name": "functionCall", "nodeType": "Identifier", "overloadedDeclarations": [2003, 2023], "referencedDeclaration": 2023, "src": "3583:12:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"}}, "id": 2000, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3583:60:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 1995, "id": 2001, "nodeType": "Return", "src": "3576:67:11"}]}, "documentation": {"id": 1987, "nodeType": "StructuredDocumentation", "src": "2741:731:11", "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, it is bubbled up by this\n function (like regular Solidity function calls).\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.\n _Available since v3.1._"}, "id": 2003, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCall", "nameLocation": "3486:12:11", "nodeType": "FunctionDefinition", "parameters": {"id": 1992, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1989, "mutability": "mutable", "name": "target", "nameLocation": "3507:6:11", "nodeType": "VariableDeclaration", "scope": 2003, "src": "3499:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1988, "name": "address", "nodeType": "ElementaryTypeName", "src": "3499:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1991, "mutability": "mutable", "name": "data", "nameLocation": "3528:4:11", "nodeType": "VariableDeclaration", "scope": 2003, "src": "3515:17:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1990, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3515:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3498:35:11"}, "returnParameters": {"id": 1995, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1994, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2003, "src": "3552:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1993, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3552:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3551:14:11"}, "scope": 2177, "src": "3477:173:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2022, "nodeType": "Block", "src": "4019:76:11", "statements": [{"expression": {"arguments": [{"id": 2016, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2006, "src": "4058:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2017, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2008, "src": "4066:4:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "30", "id": 2018, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4072:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"id": 2019, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2010, "src": "4075:12:11", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "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"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 2015, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [2043, 2093], "referencedDeclaration": 2093, "src": "4036:21:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 2020, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4036:52:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2014, "id": 2021, "nodeType": "Return", "src": "4029:59:11"}]}, "documentation": {"id": 2004, "nodeType": "StructuredDocumentation", "src": "3656:211:11", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"}, "id": 2023, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCall", "nameLocation": "3881:12:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2011, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2006, "mutability": "mutable", "name": "target", "nameLocation": "3911:6:11", "nodeType": "VariableDeclaration", "scope": 2023, "src": "3903:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2005, "name": "address", "nodeType": "ElementaryTypeName", "src": "3903:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2008, "mutability": "mutable", "name": "data", "nameLocation": "3940:4:11", "nodeType": "VariableDeclaration", "scope": 2023, "src": "3927:17:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2007, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3927:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2010, "mutability": "mutable", "name": "errorMessage", "nameLocation": "3968:12:11", "nodeType": "VariableDeclaration", "scope": 2023, "src": "3954:26:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2009, "name": "string", "nodeType": "ElementaryTypeName", "src": "3954:6:11", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3893:93:11"}, "returnParameters": {"id": 2014, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2013, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2023, "src": "4005:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2012, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4005:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "4004:14:11"}, "scope": 2177, "src": "3872:223:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2042, "nodeType": "Block", "src": "4600:111:11", "statements": [{"expression": {"arguments": [{"id": 2036, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2026, "src": "4639:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2037, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2028, "src": "4647:4:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 2038, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2030, "src": "4653:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", "id": 2039, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4660:43:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", "typeString": "literal_string \"Address: low-level call with value failed\""}, "value": "Address: low-level call with value failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", "typeString": "literal_string \"Address: low-level call with value failed\""}], "id": 2035, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [2043, 2093], "referencedDeclaration": 2093, "src": "4617:21:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 2040, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4617:87:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2034, "id": 2041, "nodeType": "Return", "src": "4610:94:11"}]}, "documentation": {"id": 2024, "nodeType": "StructuredDocumentation", "src": "4101:351:11", "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`.\n _Available since v3.1._"}, "id": 2043, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCallWithValue", "nameLocation": "4466:21:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2031, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2026, "mutability": "mutable", "name": "target", "nameLocation": "4505:6:11", "nodeType": "VariableDeclaration", "scope": 2043, "src": "4497:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2025, "name": "address", "nodeType": "ElementaryTypeName", "src": "4497:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2028, "mutability": "mutable", "name": "data", "nameLocation": "4534:4:11", "nodeType": "VariableDeclaration", "scope": 2043, "src": "4521:17:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2027, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4521:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2030, "mutability": "mutable", "name": "value", "nameLocation": "4556:5:11", "nodeType": "VariableDeclaration", "scope": 2043, "src": "4548:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2029, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4548:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4487:80:11"}, "returnParameters": {"id": 2034, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2033, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2043, "src": "4586:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2032, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4586:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "4585:14:11"}, "scope": 2177, "src": "4457:254:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2092, "nodeType": "Block", "src": "5138:320:11", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2064, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 2060, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "5164:4:11", "typeDescriptions": {"typeIdentifier": "t_contract$_AddressUpgradeable_$2177", "typeString": "library AddressUpgradeable"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_AddressUpgradeable_$2177", "typeString": "library AddressUpgradeable"}], "id": 2059, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5156:7:11", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2058, "name": "address", "nodeType": "ElementaryTypeName", "src": "5156:7:11", "typeDescriptions": {}}}, "id": 2061, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5156:13:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5170:7:11", "memberName": "balance", "nodeType": "MemberAccess", "src": "5156:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 2063, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2050, "src": "5181:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5156:30:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", "id": 2065, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5188:40:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", "typeString": "literal_string \"Address: insufficient balance for call\""}, "value": "Address: insufficient balance for call"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", "typeString": "literal_string \"Address: insufficient balance for call\""}], "id": 2057, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5148:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2066, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5148:81:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2067, "nodeType": "ExpressionStatement", "src": "5148:81:11"}, {"expression": {"arguments": [{"arguments": [{"id": 2070, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2046, "src": "5258:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2069, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1952, "src": "5247:10:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2071, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5247:18:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", "id": 2072, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5267:31:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", "typeString": "literal_string \"Address: call to non-contract\""}, "value": "Address: call to non-contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", "typeString": "literal_string \"Address: call to non-contract\""}], "id": 2068, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5239:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2073, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5239:60:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2074, "nodeType": "ExpressionStatement", "src": "5239:60:11"}, {"assignments": [2076, 2078], "declarations": [{"constant": false, "id": 2076, "mutability": "mutable", "name": "success", "nameLocation": "5316:7:11", "nodeType": "VariableDeclaration", "scope": 2092, "src": "5311:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2075, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5311:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2078, "mutability": "mutable", "name": "returndata", "nameLocation": "5338:10:11", "nodeType": "VariableDeclaration", "scope": 2092, "src": "5325:23:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2077, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5325:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 2085, "initialValue": {"arguments": [{"id": 2083, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2048, "src": "5378:4:11", "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": 2079, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2046, "src": "5352:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5359:4:11", "memberName": "call", "nodeType": "MemberAccess", "src": "5352:11:11", "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": 2082, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{"id": 2081, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2050, "src": "5371:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "src": "5352:25:11", "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": 2084, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5352:31:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "5310:73:11"}, {"expression": {"arguments": [{"id": 2087, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2076, "src": "5417:7:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 2088, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2078, "src": "5426:10:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 2089, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2052, "src": "5438:12:11", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 2086, "name": "verifyCallResult", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2176, "src": "5400:16:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"}}, "id": 2090, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5400:51:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2056, "id": 2091, "nodeType": "Return", "src": "5393:58:11"}]}, "documentation": {"id": 2044, "nodeType": "StructuredDocumentation", "src": "4717:237:11", "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"}, "id": 2093, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCallWithValue", "nameLocation": "4968:21:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2053, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2046, "mutability": "mutable", "name": "target", "nameLocation": "5007:6:11", "nodeType": "VariableDeclaration", "scope": 2093, "src": "4999:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2045, "name": "address", "nodeType": "ElementaryTypeName", "src": "4999:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2048, "mutability": "mutable", "name": "data", "nameLocation": "5036:4:11", "nodeType": "VariableDeclaration", "scope": 2093, "src": "5023:17:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2047, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5023:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2050, "mutability": "mutable", "name": "value", "nameLocation": "5058:5:11", "nodeType": "VariableDeclaration", "scope": 2093, "src": "5050:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2049, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5050:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2052, "mutability": "mutable", "name": "errorMessage", "nameLocation": "5087:12:11", "nodeType": "VariableDeclaration", "scope": 2093, "src": "5073:26:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2051, "name": "string", "nodeType": "ElementaryTypeName", "src": "5073:6:11", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "4989:116:11"}, "returnParameters": {"id": 2056, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2055, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2093, "src": "5124:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2054, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5124:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5123:14:11"}, "scope": 2177, "src": "4959:499:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2109, "nodeType": "Block", "src": "5735:97:11", "statements": [{"expression": {"arguments": [{"id": 2104, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2096, "src": "5771:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2105, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2098, "src": "5779:4:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", "id": 2106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5785:39:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", "typeString": "literal_string \"Address: low-level static call failed\""}, "value": "Address: low-level static call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", "typeString": "literal_string \"Address: low-level static call failed\""}], "id": 2103, "name": "functionStaticCall", "nodeType": "Identifier", "overloadedDeclarations": [2110, 2145], "referencedDeclaration": 2145, "src": "5752:18:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"}}, "id": 2107, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5752:73:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2102, "id": 2108, "nodeType": "Return", "src": "5745:80:11"}]}, "documentation": {"id": 2094, "nodeType": "StructuredDocumentation", "src": "5464:166:11", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"}, "id": 2110, "implemented": true, "kind": "function", "modifiers": [], "name": "functionStaticCall", "nameLocation": "5644:18:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2099, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2096, "mutability": "mutable", "name": "target", "nameLocation": "5671:6:11", "nodeType": "VariableDeclaration", "scope": 2110, "src": "5663:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2095, "name": "address", "nodeType": "ElementaryTypeName", "src": "5663:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2098, "mutability": "mutable", "name": "data", "nameLocation": "5692:4:11", "nodeType": "VariableDeclaration", "scope": 2110, "src": "5679:17:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2097, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5679:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5662:35:11"}, "returnParameters": {"id": 2102, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2101, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2110, "src": "5721:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2100, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5721:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5720:14:11"}, "scope": 2177, "src": "5635:197:11", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2144, "nodeType": "Block", "src": "6174:228:11", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 2124, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2113, "src": "6203:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2123, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1952, "src": "6192:10:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2125, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6192:18:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", "id": 2126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6212:38:11", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", "typeString": "literal_string \"Address: static call to non-contract\""}, "value": "Address: static call to non-contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", "typeString": "literal_string \"Address: static call to non-contract\""}], "id": 2122, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6184:7:11", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2127, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6184:67:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2128, "nodeType": "ExpressionStatement", "src": "6184:67:11"}, {"assignments": [2130, 2132], "declarations": [{"constant": false, "id": 2130, "mutability": "mutable", "name": "success", "nameLocation": "6268:7:11", "nodeType": "VariableDeclaration", "scope": 2144, "src": "6263:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2129, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6263:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2132, "mutability": "mutable", "name": "returndata", "nameLocation": "6290:10:11", "nodeType": "VariableDeclaration", "scope": 2144, "src": "6277:23:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2131, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6277:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 2137, "initialValue": {"arguments": [{"id": 2135, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2115, "src": "6322:4:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 2133, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2113, "src": "6304:6:11", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2134, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6311:10:11", "memberName": "staticcall", "nodeType": "MemberAccess", "src": "6304:17:11", "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": 2136, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6304:23:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "6262:65:11"}, {"expression": {"arguments": [{"id": 2139, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2130, "src": "6361:7:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 2140, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2132, "src": "6370:10:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 2141, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2117, "src": "6382:12:11", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 2138, "name": "verifyCallResult", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2176, "src": "6344:16:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"}}, "id": 2142, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6344:51:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2121, "id": 2143, "nodeType": "Return", "src": "6337:58:11"}]}, "documentation": {"id": 2111, "nodeType": "StructuredDocumentation", "src": "5838:173:11", "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"}, "id": 2145, "implemented": true, "kind": "function", "modifiers": [], "name": "functionStaticCall", "nameLocation": "6025:18:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2118, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2113, "mutability": "mutable", "name": "target", "nameLocation": "6061:6:11", "nodeType": "VariableDeclaration", "scope": 2145, "src": "6053:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2112, "name": "address", "nodeType": "ElementaryTypeName", "src": "6053:7:11", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2115, "mutability": "mutable", "name": "data", "nameLocation": "6090:4:11", "nodeType": "VariableDeclaration", "scope": 2145, "src": "6077:17:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2114, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6077:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2117, "mutability": "mutable", "name": "errorMessage", "nameLocation": "6118:12:11", "nodeType": "VariableDeclaration", "scope": 2145, "src": "6104:26:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2116, "name": "string", "nodeType": "ElementaryTypeName", "src": "6104:6:11", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "6043:93:11"}, "returnParameters": {"id": 2121, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2120, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2145, "src": "6160:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2119, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6160:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6159:14:11"}, "scope": 2177, "src": "6016:386:11", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2175, "nodeType": "Block", "src": "6782:582:11", "statements": [{"condition": {"id": 2157, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2148, "src": "6796:7:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 2173, "nodeType": "Block", "src": "6853:505:11", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 2161, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2150, "src": "6937:10:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6948:6:11", "memberName": "length", "nodeType": "MemberAccess", "src": "6937:17:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2163, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6957:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6937:21:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 2171, "nodeType": "Block", "src": "7295:53:11", "statements": [{"expression": {"arguments": [{"id": 2168, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2152, "src": "7320:12:11", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 2167, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "7313:6:11", "typeDescriptions": {"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure"}}, "id": 2169, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7313:20:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2170, "nodeType": "ExpressionStatement", "src": "7313:20:11"}]}, "id": 2172, "nodeType": "IfStatement", "src": "6933:415:11", "trueBody": {"id": 2166, "nodeType": "Block", "src": "6960:329:11", "statements": [{"AST": {"nodeType": "YulBlock", "src": "7130:145:11", "statements": [{"nodeType": "YulVariableDeclaration", "src": "7152:40:11", "value": {"arguments": [{"name": "returndata", "nodeType": "YulIdentifier", "src": "7181:10:11"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "7175:5:11"}, "nodeType": "YulFunctionCall", "src": "7175:17:11"}, "variables": [{"name": "returndata_size", "nodeType": "YulTypedName", "src": "7156:15:11", "type": ""}]}, {"expression": {"arguments": [{"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "7224:2:11", "type": "", "value": "32"}, {"name": "returndata", "nodeType": "YulIdentifier", "src": "7228:10:11"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "7220:3:11"}, "nodeType": "YulFunctionCall", "src": "7220:19:11"}, {"name": "returndata_size", "nodeType": "YulIdentifier", "src": "7241:15:11"}], "functionName": {"name": "revert", "nodeType": "YulIdentifier", "src": "7213:6:11"}, "nodeType": "YulFunctionCall", "src": "7213:44:11"}, "nodeType": "YulExpressionStatement", "src": "7213:44:11"}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 2150, "isOffset": false, "isSlot": false, "src": "7181:10:11", "valueSize": 1}, {"declaration": 2150, "isOffset": false, "isSlot": false, "src": "7228:10:11", "valueSize": 1}], "id": 2165, "nodeType": "InlineAssembly", "src": "7121:154:11"}]}}]}, "id": 2174, "nodeType": "IfStatement", "src": "6792:566:11", "trueBody": {"id": 2160, "nodeType": "Block", "src": "6805:42:11", "statements": [{"expression": {"id": 2158, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2150, "src": "6826:10:11", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 2156, "id": 2159, "nodeType": "Return", "src": "6819:17:11"}]}}]}, "documentation": {"id": 2146, "nodeType": "StructuredDocumentation", "src": "6408:209:11", "text": " @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"}, "id": 2176, "implemented": true, "kind": "function", "modifiers": [], "name": "verifyCallResult", "nameLocation": "6631:16:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2153, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2148, "mutability": "mutable", "name": "success", "nameLocation": "6662:7:11", "nodeType": "VariableDeclaration", "scope": 2176, "src": "6657:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2147, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6657:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2150, "mutability": "mutable", "name": "returndata", "nameLocation": "6692:10:11", "nodeType": "VariableDeclaration", "scope": 2176, "src": "6679:23:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2149, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6679:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 2152, "mutability": "mutable", "name": "errorMessage", "nameLocation": "6726:12:11", "nodeType": "VariableDeclaration", "scope": 2176, "src": "6712:26:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2151, "name": "string", "nodeType": "ElementaryTypeName", "src": "6712:6:11", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "6647:97:11"}, "returnParameters": {"id": 2156, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2155, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2176, "src": "6768:12:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2154, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6768:5:11", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6767:14:11"}, "scope": 2177, "src": "6622:742:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2178, "src": "194:7172:11", "usedErrors": []}], "src": "101:7266:11"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "ContextUpgradeable": [2219], "Initializable": [282]}, "id": 2220, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2179, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "86:23:12"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../proxy/utils/Initializable.sol", "id": 2180, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2220, "sourceUnit": 283, "src": "110:42:12", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 2182, "name": "Initializable", "nameLocations": ["691:13:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 282, "src": "691:13:12"}, "id": 2183, "nodeType": "InheritanceSpecifier", "src": "691:13:12"}], "canonicalName": "ContextUpgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2181, "nodeType": "StructuredDocumentation", "src": "154:496:12", "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": 2219, "linearizedBaseContracts": [2219, 282], "name": "ContextUpgradeable", "nameLocation": "669:18:12", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2188, "nodeType": "Block", "src": "763:7:12", "statements": []}, "id": 2189, "implemented": true, "kind": "function", "modifiers": [{"id": 2186, "kind": "modifierInvocation", "modifierName": {"id": 2185, "name": "onlyInitializing", "nameLocations": ["746:16:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "746:16:12"}, "nodeType": "ModifierInvocation", "src": "746:16:12"}], "name": "__Context_init", "nameLocation": "720:14:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2184, "nodeType": "ParameterList", "parameters": [], "src": "734:2:12"}, "returnParameters": {"id": 2187, "nodeType": "ParameterList", "parameters": [], "src": "763:0:12"}, "scope": 2219, "src": "711:59:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2194, "nodeType": "Block", "src": "838:7:12", "statements": []}, "id": 2195, "implemented": true, "kind": "function", "modifiers": [{"id": 2192, "kind": "modifierInvocation", "modifierName": {"id": 2191, "name": "onlyInitializing", "nameLocations": ["821:16:12"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "821:16:12"}, "nodeType": "ModifierInvocation", "src": "821:16:12"}], "name": "__Context_init_unchained", "nameLocation": "785:24:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2190, "nodeType": "ParameterList", "parameters": [], "src": "809:2:12"}, "returnParameters": {"id": 2193, "nodeType": "ParameterList", "parameters": [], "src": "838:0:12"}, "scope": 2219, "src": "776:69:12", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2203, "nodeType": "Block", "src": "912:34:12", "statements": [{"expression": {"expression": {"id": 2200, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "929:3:12", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "933:6:12", "memberName": "sender", "nodeType": "MemberAccess", "src": "929:10:12", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2199, "id": 2202, "nodeType": "Return", "src": "922:17:12"}]}, "id": 2204, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgSender", "nameLocation": "859:10:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2196, "nodeType": "ParameterList", "parameters": [], "src": "869:2:12"}, "returnParameters": {"id": 2199, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2198, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2204, "src": "903:7:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2197, "name": "address", "nodeType": "ElementaryTypeName", "src": "903:7:12", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "902:9:12"}, "scope": 2219, "src": "850:96:12", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 2212, "nodeType": "Block", "src": "1019:32:12", "statements": [{"expression": {"expression": {"id": 2209, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1036:3:12", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 2210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1040:4:12", "memberName": "data", "nodeType": "MemberAccess", "src": "1036:8:12", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "functionReturnParameters": 2208, "id": 2211, "nodeType": "Return", "src": "1029:15:12"}]}, "id": 2213, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgData", "nameLocation": "961:8:12", "nodeType": "FunctionDefinition", "parameters": {"id": 2205, "nodeType": "ParameterList", "parameters": [], "src": "969:2:12"}, "returnParameters": {"id": 2208, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2207, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2213, "src": "1003:14:12", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 2206, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1003:5:12", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1002:16:12"}, "scope": 2219, "src": "952:99:12", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"constant": false, "documentation": {"id": 2214, "nodeType": "StructuredDocumentation", "src": "1057:254:12", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 2218, "mutability": "mutable", "name": "__gap", "nameLocation": "1336:5:12", "nodeType": "VariableDeclaration", "scope": 2219, "src": "1316:25:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage", "typeString": "uint256[50]"}, "typeName": {"baseType": {"id": 2215, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1316:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2217, "length": {"hexValue": "3530", "id": 2216, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1324:2:12", "typeDescriptions": {"typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50"}, "value": "50"}, "nodeType": "ArrayTypeName", "src": "1316:11:12", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", "typeString": "uint256[50]"}}, "visibility": "private"}], "scope": 2220, "src": "651:693:12", "usedErrors": []}], "src": "86:1259:12"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol", "exportedSymbols": {"StringsUpgradeable": [2445]}, "id": 2446, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2221, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "101:23:13"}, {"abstract": false, "baseContracts": [], "canonicalName": "StringsUpgradeable", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2222, "nodeType": "StructuredDocumentation", "src": "126:34:13", "text": " @dev String operations."}, "fullyImplemented": true, "id": 2445, "linearizedBaseContracts": [2445], "name": "StringsUpgradeable", "nameLocation": "169:18:13", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2225, "mutability": "constant", "name": "_HEX_SYMBOLS", "nameLocation": "219:12:13", "nodeType": "VariableDeclaration", "scope": 2445, "src": "194:58:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}, "typeName": {"id": 2223, "name": "bytes16", "nodeType": "ElementaryTypeName", "src": "194:7:13", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}}, "value": {"hexValue": "30313233343536373839616263646566", "id": 2224, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "234:18:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f", "typeString": "literal_string \"0123456789abcdef\""}, "value": "0123456789abcdef"}, "visibility": "private"}, {"constant": true, "id": 2228, "mutability": "constant", "name": "_ADDRESS_LENGTH", "nameLocation": "281:15:13", "nodeType": "VariableDeclaration", "scope": 2445, "src": "258:43:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2226, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "258:5:13", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": {"hexValue": "3230", "id": 2227, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "299:2:13", "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "visibility": "private"}, {"body": {"id": 2306, "nodeType": "Block", "src": "474:632:13", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2236, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2231, "src": "676:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2237, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "685:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "676:10:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2242, "nodeType": "IfStatement", "src": "672:51:13", "trueBody": {"id": 2241, "nodeType": "Block", "src": "688:35:13", "statements": [{"expression": {"hexValue": "30", "id": 2239, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "709:3:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\""}, "value": "0"}, "functionReturnParameters": 2235, "id": 2240, "nodeType": "Return", "src": "702:10:13"}]}}, {"assignments": [2244], "declarations": [{"constant": false, "id": 2244, "mutability": "mutable", "name": "temp", "nameLocation": "740:4:13", "nodeType": "VariableDeclaration", "scope": 2306, "src": "732:12:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2243, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "732:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2246, "initialValue": {"id": 2245, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2231, "src": "747:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "732:20:13"}, {"assignments": [2248], "declarations": [{"constant": false, "id": 2248, "mutability": "mutable", "name": "digits", "nameLocation": "770:6:13", "nodeType": "VariableDeclaration", "scope": 2306, "src": "762:14:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2247, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "762:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2249, "nodeType": "VariableDeclarationStatement", "src": "762:14:13"}, {"body": {"id": 2260, "nodeType": "Block", "src": "804:57:13", "statements": [{"expression": {"id": 2254, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "818:8:13", "subExpression": {"id": 2253, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2248, "src": "818:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2255, "nodeType": "ExpressionStatement", "src": "818:8:13"}, {"expression": {"id": 2258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2256, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2244, "src": "840:4:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"hexValue": "3130", "id": 2257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "848:2:13", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "840:10:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2259, "nodeType": "ExpressionStatement", "src": "840:10:13"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2250, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2244, "src": "793:4:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2251, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "801:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "793:9:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2261, "nodeType": "WhileStatement", "src": "786:75:13"}, {"assignments": [2263], "declarations": [{"constant": false, "id": 2263, "mutability": "mutable", "name": "buffer", "nameLocation": "883:6:13", "nodeType": "VariableDeclaration", "scope": 2306, "src": "870:19:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2262, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "870:5:13", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 2268, "initialValue": {"arguments": [{"id": 2266, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2248, "src": "902:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2265, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "892:9:13", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 2264, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "896:5:13", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 2267, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "892:17:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "870:39:13"}, {"body": {"id": 2299, "nodeType": "Block", "src": "938:131:13", "statements": [{"expression": {"id": 2274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2272, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2248, "src": "952:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"hexValue": "31", "id": 2273, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "962:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "952:11:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2275, "nodeType": "ExpressionStatement", "src": "952:11:13"}, {"expression": {"id": 2293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 2276, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2263, "src": "977:6:13", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2278, "indexExpression": {"id": 2277, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2248, "src": "984:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "977:14:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2290, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "3438", "id": 2283, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1007:2:13", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2286, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2231, "src": "1020:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"hexValue": "3130", "id": 2287, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1028:2:13", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "1020:10:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2285, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1012:7:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2284, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1012:7:13", "typeDescriptions": {}}}, "id": 2289, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1012:19:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1007:24:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2282, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1001:5:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 2281, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1001:5:13", "typeDescriptions": {}}}, "id": 2291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1001:31:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 2280, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "994:6:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)"}, "typeName": {"id": 2279, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "994:6:13", "typeDescriptions": {}}}, "id": 2292, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "994:39:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "977:56:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 2294, "nodeType": "ExpressionStatement", "src": "977:56:13"}, {"expression": {"id": 2297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2295, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2231, "src": "1047:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"hexValue": "3130", "id": 2296, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1056:2:13", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "1047:11:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2298, "nodeType": "ExpressionStatement", "src": "1047:11:13"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2271, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2269, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2231, "src": "926:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2270, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "935:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "926:10:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2300, "nodeType": "WhileStatement", "src": "919:150:13"}, {"expression": {"arguments": [{"id": 2303, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2263, "src": "1092:6:13", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2302, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1085:6:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 2301, "name": "string", "nodeType": "ElementaryTypeName", "src": "1085:6:13", "typeDescriptions": {}}}, "id": 2304, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1085:14:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 2235, "id": 2305, "nodeType": "Return", "src": "1078:21:13"}]}, "documentation": {"id": 2229, "nodeType": "StructuredDocumentation", "src": "308:90:13", "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."}, "id": 2307, "implemented": true, "kind": "function", "modifiers": [], "name": "toString", "nameLocation": "412:8:13", "nodeType": "FunctionDefinition", "parameters": {"id": 2232, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2231, "mutability": "mutable", "name": "value", "nameLocation": "429:5:13", "nodeType": "VariableDeclaration", "scope": 2307, "src": "421:13:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2230, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "421:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "420:15:13"}, "returnParameters": {"id": 2235, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2234, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2307, "src": "459:13:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2233, "name": "string", "nodeType": "ElementaryTypeName", "src": "459:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "458:15:13"}, "scope": 2445, "src": "403:703:13", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2347, "nodeType": "Block", "src": "1285:255:13", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2317, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2315, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2310, "src": "1299:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2316, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1308:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1299:10:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2321, "nodeType": "IfStatement", "src": "1295:54:13", "trueBody": {"id": 2320, "nodeType": "Block", "src": "1311:38:13", "statements": [{"expression": {"hexValue": "30783030", "id": 2318, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1332:6:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_27489e20a0060b723a1748bdff5e44570ee9fae64141728105692eac6031e8a4", "typeString": "literal_string \"0x00\""}, "value": "0x00"}, "functionReturnParameters": 2314, "id": 2319, "nodeType": "Return", "src": "1325:13:13"}]}}, {"assignments": [2323], "declarations": [{"constant": false, "id": 2323, "mutability": "mutable", "name": "temp", "nameLocation": "1366:4:13", "nodeType": "VariableDeclaration", "scope": 2347, "src": "1358:12:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2322, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1358:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2325, "initialValue": {"id": 2324, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2310, "src": "1373:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1358:20:13"}, {"assignments": [2327], "declarations": [{"constant": false, "id": 2327, "mutability": "mutable", "name": "length", "nameLocation": "1396:6:13", "nodeType": "VariableDeclaration", "scope": 2347, "src": "1388:14:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2326, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1388:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2329, "initialValue": {"hexValue": "30", "id": 2328, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1405:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "1388:18:13"}, {"body": {"id": 2340, "nodeType": "Block", "src": "1434:57:13", "statements": [{"expression": {"id": 2334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1448:8:13", "subExpression": {"id": 2333, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2327, "src": "1448:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2335, "nodeType": "ExpressionStatement", "src": "1448:8:13"}, {"expression": {"id": 2338, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2336, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2323, "src": "1470:4:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "38", "id": 2337, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1479:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8"}, "value": "8"}, "src": "1470:10:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2339, "nodeType": "ExpressionStatement", "src": "1470:10:13"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2330, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2323, "src": "1423:4:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1431:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1423:9:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2341, "nodeType": "WhileStatement", "src": "1416:75:13"}, {"expression": {"arguments": [{"id": 2343, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2310, "src": "1519:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 2344, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2327, "src": "1526:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2342, "name": "toHexString", "nodeType": "Identifier", "overloadedDeclarations": [2348, 2424, 2444], "referencedDeclaration": 2424, "src": "1507:11:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256,uint256) pure returns (string memory)"}}, "id": 2345, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1507:26:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 2314, "id": 2346, "nodeType": "Return", "src": "1500:33:13"}]}, "documentation": {"id": 2308, "nodeType": "StructuredDocumentation", "src": "1112:94:13", "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."}, "id": 2348, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "1220:11:13", "nodeType": "FunctionDefinition", "parameters": {"id": 2311, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2310, "mutability": "mutable", "name": "value", "nameLocation": "1240:5:13", "nodeType": "VariableDeclaration", "scope": 2348, "src": "1232:13:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2309, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1232:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1231:15:13"}, "returnParameters": {"id": 2314, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2313, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2348, "src": "1270:13:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2312, "name": "string", "nodeType": "ElementaryTypeName", "src": "1270:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1269:15:13"}, "scope": 2445, "src": "1211:329:13", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2423, "nodeType": "Block", "src": "1753:351:13", "statements": [{"assignments": [2359], "declarations": [{"constant": false, "id": 2359, "mutability": "mutable", "name": "buffer", "nameLocation": "1776:6:13", "nodeType": "VariableDeclaration", "scope": 2423, "src": "1763:19:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2358, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1763:5:13", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 2368, "initialValue": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2366, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2364, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2362, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1795:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2363, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2353, "src": "1799:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1795:10:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "32", "id": 2365, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1808:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "1795:14:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2361, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1785:9:13", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 2360, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1789:5:13", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 2367, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1785:25:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "1763:47:13"}, {"expression": {"id": 2373, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 2369, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2359, "src": "1820:6:13", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2371, "indexExpression": {"hexValue": "30", "id": 2370, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1827:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1820:9:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 2372, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1832:3:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\""}, "value": "0"}, "src": "1820:15:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 2374, "nodeType": "ExpressionStatement", "src": "1820:15:13"}, {"expression": {"id": 2379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 2375, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2359, "src": "1845:6:13", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2377, "indexExpression": {"hexValue": "31", "id": 2376, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1852:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1845:9:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "78", "id": 2378, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1857:3:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83", "typeString": "literal_string \"x\""}, "value": "x"}, "src": "1845:15:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 2380, "nodeType": "ExpressionStatement", "src": "1845:15:13"}, {"body": {"id": 2409, "nodeType": "Block", "src": "1915:87:13", "statements": [{"expression": {"id": 2403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 2395, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2359, "src": "1929:6:13", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2397, "indexExpression": {"id": 2396, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2382, "src": "1936:1:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1929:9:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"baseExpression": {"id": 2398, "name": "_HEX_SYMBOLS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2225, "src": "1941:12:13", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}}, "id": 2402, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2399, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2351, "src": "1954:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"hexValue": "307866", "id": 2400, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1962:3:13", "typeDescriptions": {"typeIdentifier": "t_rational_15_by_1", "typeString": "int_const 15"}, "value": "0xf"}, "src": "1954:11:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1941:25:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "1929:37:13", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 2404, "nodeType": "ExpressionStatement", "src": "1929:37:13"}, {"expression": {"id": 2407, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2405, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2351, "src": "1980:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "34", "id": 2406, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1990:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "1980:11:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2408, "nodeType": "ExpressionStatement", "src": "1980:11:13"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2389, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2382, "src": "1903:1:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "31", "id": 2390, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1907:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1903:5:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2410, "initializationExpression": {"assignments": [2382], "declarations": [{"constant": false, "id": 2382, "mutability": "mutable", "name": "i", "nameLocation": "1883:1:13", "nodeType": "VariableDeclaration", "scope": 2410, "src": "1875:9:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2381, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1875:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2388, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2383, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1887:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2384, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2353, "src": "1891:6:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1887:10:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 2386, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1900:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1887:14:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1875:26:13"}, "loopExpression": {"expression": {"id": 2393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": true, "src": "1910:3:13", "subExpression": {"id": 2392, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2382, "src": "1912:1:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2394, "nodeType": "ExpressionStatement", "src": "1910:3:13"}, "nodeType": "ForStatement", "src": "1870:132:13"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2414, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2412, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2351, "src": "2019:5:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2413, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2028:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2019:10:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74", "id": 2415, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2031:34:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", "typeString": "literal_string \"Strings: hex length insufficient\""}, "value": "Strings: hex length insufficient"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", "typeString": "literal_string \"Strings: hex length insufficient\""}], "id": 2411, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2011:7:13", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2416, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2011:55:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2417, "nodeType": "ExpressionStatement", "src": "2011:55:13"}, {"expression": {"arguments": [{"id": 2420, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2359, "src": "2090:6:13", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2419, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2083:6:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 2418, "name": "string", "nodeType": "ElementaryTypeName", "src": "2083:6:13", "typeDescriptions": {}}}, "id": 2421, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2083:14:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 2357, "id": 2422, "nodeType": "Return", "src": "2076:21:13"}]}, "documentation": {"id": 2349, "nodeType": "StructuredDocumentation", "src": "1546:112:13", "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."}, "id": 2424, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "1672:11:13", "nodeType": "FunctionDefinition", "parameters": {"id": 2354, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2351, "mutability": "mutable", "name": "value", "nameLocation": "1692:5:13", "nodeType": "VariableDeclaration", "scope": 2424, "src": "1684:13:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2350, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1684:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2353, "mutability": "mutable", "name": "length", "nameLocation": "1707:6:13", "nodeType": "VariableDeclaration", "scope": 2424, "src": "1699:14:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2352, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1699:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1683:31:13"}, "returnParameters": {"id": 2357, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2356, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2424, "src": "1738:13:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2355, "name": "string", "nodeType": "ElementaryTypeName", "src": "1738:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1737:15:13"}, "scope": 2445, "src": "1663:441:13", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2443, "nodeType": "Block", "src": "2329:76:13", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [{"id": 2437, "name": "addr", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2427, "src": "2374:4:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2436, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2366:7:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)"}, "typeName": {"id": 2435, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "2366:7:13", "typeDescriptions": {}}}, "id": 2438, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2366:13:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint160", "typeString": "uint160"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint160", "typeString": "uint160"}], "id": 2434, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2358:7:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2358:7:13", "typeDescriptions": {}}}, "id": 2439, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2358:22:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 2440, "name": "_ADDRESS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2228, "src": "2382:15:13", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 2432, "name": "toHexString", "nodeType": "Identifier", "overloadedDeclarations": [2348, 2424, 2444], "referencedDeclaration": 2424, "src": "2346:11:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256,uint256) pure returns (string memory)"}}, "id": 2441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2346:52:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 2431, "id": 2442, "nodeType": "Return", "src": "2339:59:13"}]}, "documentation": {"id": 2425, "nodeType": "StructuredDocumentation", "src": "2110:141:13", "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."}, "id": 2444, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "2265:11:13", "nodeType": "FunctionDefinition", "parameters": {"id": 2428, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2427, "mutability": "mutable", "name": "addr", "nameLocation": "2285:4:13", "nodeType": "VariableDeclaration", "scope": 2444, "src": "2277:12:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2426, "name": "address", "nodeType": "ElementaryTypeName", "src": "2277:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2276:14:13"}, "returnParameters": {"id": 2431, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2430, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2444, "src": "2314:13:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2429, "name": "string", "nodeType": "ElementaryTypeName", "src": "2314:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2313:15:13"}, "scope": 2445, "src": "2256:149:13", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2446, "src": "161:2246:13", "usedErrors": []}], "src": "101:2307:13"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol", "exportedSymbols": {"ERC165CheckerUpgradeable": [2639], "IERC165Upgradeable": [2695]}, "id": 2640, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2447, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "121:23:14"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", "file": "./IERC165Upgradeable.sol", "id": 2448, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2640, "sourceUnit": 2696, "src": "146:34:14", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ERC165CheckerUpgradeable", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2449, "nodeType": "StructuredDocumentation", "src": "182:277:14", "text": " @dev Library used to query support of an interface declared via {IERC165}.\n Note that these functions return the actual result of the query: they do not\n `revert` if an interface is not supported. It is up to the caller to decide\n what to do in these cases."}, "fullyImplemented": true, "id": 2639, "linearizedBaseContracts": [2639], "name": "ERC165CheckerUpgradeable", "nameLocation": "468:24:14", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2452, "mutability": "constant", "name": "_INTERFACE_ID_INVALID", "nameLocation": "597:21:14", "nodeType": "VariableDeclaration", "scope": 2639, "src": "573:58:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 2450, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "573:6:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "value": {"hexValue": "30786666666666666666", "id": 2451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "621:10:14", "typeDescriptions": {"typeIdentifier": "t_rational_4294967295_by_1", "typeString": "int_const 4294967295"}, "value": "0xffffffff"}, "visibility": "private"}, {"body": {"id": 2474, "nodeType": "Block", "src": "796:352:14", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2472, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2461, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2455, "src": "1022:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"expression": {"arguments": [{"id": 2463, "name": "IERC165Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2695, "src": "1036:18:14", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$2695_$", "typeString": "type(contract IERC165Upgradeable)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$2695_$", "typeString": "type(contract IERC165Upgradeable)"}], "id": 2462, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1031:4:14", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2464, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1031:24:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC165Upgradeable_$2695", "typeString": "type(contract IERC165Upgradeable)"}}, "id": 2465, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1056:11:14", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1031:36:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 2460, "name": "_supportsERC165Interface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2638, "src": "997:24:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 2466, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "997:71:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"id": 2471, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1084:57:14", "subExpression": {"arguments": [{"id": 2468, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2455, "src": "1110:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2469, "name": "_INTERFACE_ID_INVALID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2452, "src": "1119:21:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 2467, "name": "_supportsERC165Interface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2638, "src": "1085:24:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 2470, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1085:56:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "997:144:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2459, "id": 2473, "nodeType": "Return", "src": "978:163:14"}]}, "documentation": {"id": 2453, "nodeType": "StructuredDocumentation", "src": "638:83:14", "text": " @dev Returns true if `account` supports the {IERC165} interface,"}, "id": 2475, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsERC165", "nameLocation": "735:14:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2456, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2455, "mutability": "mutable", "name": "account", "nameLocation": "758:7:14", "nodeType": "VariableDeclaration", "scope": 2475, "src": "750:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2454, "name": "address", "nodeType": "ElementaryTypeName", "src": "750:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "749:17:14"}, "returnParameters": {"id": 2459, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2458, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2475, "src": "790:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2457, "name": "bool", "nodeType": "ElementaryTypeName", "src": "790:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "789:6:14"}, "scope": 2639, "src": "726:422:14", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2494, "nodeType": "Block", "src": "1459:181:14", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2486, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2478, "src": "1575:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2485, "name": "supportsERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2475, "src": "1560:14:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2487, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1560:23:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"arguments": [{"id": 2489, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2478, "src": "1612:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2490, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2480, "src": "1621:11:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 2488, "name": "_supportsERC165Interface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2638, "src": "1587:24:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 2491, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1587:46:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1560:73:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2484, "id": 2493, "nodeType": "Return", "src": "1553:80:14"}]}, "documentation": {"id": 2476, "nodeType": "StructuredDocumentation", "src": "1154:207:14", "text": " @dev Returns true if `account` supports the interface defined by\n `interfaceId`. Support for {IERC165} itself is queried automatically.\n See {IERC165-supportsInterface}."}, "id": 2495, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "1375:17:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2481, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2478, "mutability": "mutable", "name": "account", "nameLocation": "1401:7:14", "nodeType": "VariableDeclaration", "scope": 2495, "src": "1393:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2477, "name": "address", "nodeType": "ElementaryTypeName", "src": "1393:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2480, "mutability": "mutable", "name": "interfaceId", "nameLocation": "1417:11:14", "nodeType": "VariableDeclaration", "scope": 2495, "src": "1410:18:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 2479, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1410:6:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "1392:37:14"}, "returnParameters": {"id": 2484, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2483, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2495, "src": "1453:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2482, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1453:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1452:6:14"}, "scope": 2639, "src": "1366:274:14", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2550, "nodeType": "Block", "src": "2170:552:14", "statements": [{"assignments": [2511], "declarations": [{"constant": false, "id": 2511, "mutability": "mutable", "name": "interfaceIdsSupported", "nameLocation": "2293:21:14", "nodeType": "VariableDeclaration", "scope": 2550, "src": "2279:35:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[]"}, "typeName": {"baseType": {"id": 2509, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2279:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2510, "nodeType": "ArrayTypeName", "src": "2279:6:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", "typeString": "bool[]"}}, "visibility": "internal"}], "id": 2518, "initialValue": {"arguments": [{"expression": {"id": 2515, "name": "interfaceIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2501, "src": "2328:12:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[] memory"}}, "id": 2516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2341:6:14", "memberName": "length", "nodeType": "MemberAccess", "src": "2328:19:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2514, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "2317:10:14", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (bool[] memory)"}, "typeName": {"baseType": {"id": 2512, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2321:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2513, "nodeType": "ArrayTypeName", "src": "2321:6:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", "typeString": "bool[]"}}}, "id": 2517, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2317:31:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2279:69:14"}, {"condition": {"arguments": [{"id": 2520, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2498, "src": "2420:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2519, "name": "supportsERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2475, "src": "2405:14:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2521, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2405:23:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2547, "nodeType": "IfStatement", "src": "2401:276:14", "trueBody": {"id": 2546, "nodeType": "Block", "src": "2430:247:14", "statements": [{"body": {"id": 2544, "nodeType": "Block", "src": "2557:110:14", "statements": [{"expression": {"id": 2542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 2533, "name": "interfaceIdsSupported", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2511, "src": "2575:21:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory"}}, "id": 2535, "indexExpression": {"id": 2534, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2523, "src": "2597:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2575:24:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 2537, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2498, "src": "2627:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"baseExpression": {"id": 2538, "name": "interfaceIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2501, "src": "2636:12:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[] memory"}}, "id": 2540, "indexExpression": {"id": 2539, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2523, "src": "2649:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2636:15:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 2536, "name": "_supportsERC165Interface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2638, "src": "2602:24:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 2541, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2602:50:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2575:77:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2543, "nodeType": "ExpressionStatement", "src": "2575:77:14"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2526, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2523, "src": "2527:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 2527, "name": "interfaceIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2501, "src": "2531:12:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[] memory"}}, "id": 2528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2544:6:14", "memberName": "length", "nodeType": "MemberAccess", "src": "2531:19:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2527:23:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2545, "initializationExpression": {"assignments": [2523], "declarations": [{"constant": false, "id": 2523, "mutability": "mutable", "name": "i", "nameLocation": "2520:1:14", "nodeType": "VariableDeclaration", "scope": 2545, "src": "2512:9:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2522, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2512:7:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2525, "initialValue": {"hexValue": "30", "id": 2524, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2524:1:14", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "2512:13:14"}, "loopExpression": {"expression": {"id": 2531, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "2552:3:14", "subExpression": {"id": 2530, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2523, "src": "2552:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2532, "nodeType": "ExpressionStatement", "src": "2552:3:14"}, "nodeType": "ForStatement", "src": "2507:160:14"}]}}, {"expression": {"id": 2548, "name": "interfaceIdsSupported", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2511, "src": "2694:21:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory"}}, "functionReturnParameters": 2506, "id": 2549, "nodeType": "Return", "src": "2687:28:14"}]}, "documentation": {"id": 2496, "nodeType": "StructuredDocumentation", "src": "1646:374:14", "text": " @dev Returns a boolean array where each value corresponds to the\n interfaces passed in and whether they're supported or not. This allows\n you to batch check interfaces for a contract where your expectation\n is that some interfaces may not be supported.\n See {IERC165-supportsInterface}.\n _Available since v3.4._"}, "id": 2551, "implemented": true, "kind": "function", "modifiers": [], "name": "getSupportedInterfaces", "nameLocation": "2034:22:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2502, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2498, "mutability": "mutable", "name": "account", "nameLocation": "2065:7:14", "nodeType": "VariableDeclaration", "scope": 2551, "src": "2057:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2497, "name": "address", "nodeType": "ElementaryTypeName", "src": "2057:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2501, "mutability": "mutable", "name": "interfaceIds", "nameLocation": "2090:12:14", "nodeType": "VariableDeclaration", "scope": 2551, "src": "2074:28:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[]"}, "typeName": {"baseType": {"id": 2499, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2074:6:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "id": 2500, "nodeType": "ArrayTypeName", "src": "2074:8:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", "typeString": "bytes4[]"}}, "visibility": "internal"}], "src": "2056:47:14"}, "returnParameters": {"id": 2506, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2505, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2551, "src": "2151:13:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[]"}, "typeName": {"baseType": {"id": 2503, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2151:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2504, "nodeType": "ArrayTypeName", "src": "2151:6:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", "typeString": "bool[]"}}, "visibility": "internal"}], "src": "2150:15:14"}, "scope": 2639, "src": "2025:697:14", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2596, "nodeType": "Block", "src": "3164:429:14", "statements": [{"condition": {"id": 2565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3220:24:14", "subExpression": {"arguments": [{"id": 2563, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2554, "src": "3236:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2562, "name": "supportsERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2475, "src": "3221:14:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 2564, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3221:23:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2569, "nodeType": "IfStatement", "src": "3216:67:14", "trueBody": {"id": 2568, "nodeType": "Block", "src": "3246:37:14", "statements": [{"expression": {"hexValue": "66616c7365", "id": 2566, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3267:5:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 2561, "id": 2567, "nodeType": "Return", "src": "3260:12:14"}]}}, {"body": {"id": 2592, "nodeType": "Block", "src": "3403:126:14", "statements": [{"condition": {"id": 2587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3421:51:14", "subExpression": {"arguments": [{"id": 2582, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2554, "src": "3447:7:14", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"baseExpression": {"id": 2583, "name": "interfaceIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2557, "src": "3456:12:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[] memory"}}, "id": 2585, "indexExpression": {"id": 2584, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2571, "src": "3469:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3456:15:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "id": 2581, "name": "_supportsERC165Interface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2638, "src": "3422:24:14", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 2586, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3422:50:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2591, "nodeType": "IfStatement", "src": "3417:102:14", "trueBody": {"id": 2590, "nodeType": "Block", "src": "3474:45:14", "statements": [{"expression": {"hexValue": "66616c7365", "id": 2588, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3499:5:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 2561, "id": 2589, "nodeType": "Return", "src": "3492:12:14"}]}}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2577, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2574, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2571, "src": "3373:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 2575, "name": "interfaceIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2557, "src": "3377:12:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[] memory"}}, "id": 2576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3390:6:14", "memberName": "length", "nodeType": "MemberAccess", "src": "3377:19:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3373:23:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2593, "initializationExpression": {"assignments": [2571], "declarations": [{"constant": false, "id": 2571, "mutability": "mutable", "name": "i", "nameLocation": "3366:1:14", "nodeType": "VariableDeclaration", "scope": 2593, "src": "3358:9:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2570, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3358:7:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2573, "initialValue": {"hexValue": "30", "id": 2572, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3370:1:14", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "3358:13:14"}, "loopExpression": {"expression": {"id": 2579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3398:3:14", "subExpression": {"id": 2578, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2571, "src": "3398:1:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2580, "nodeType": "ExpressionStatement", "src": "3398:3:14"}, "nodeType": "ForStatement", "src": "3353:176:14"}, {"expression": {"hexValue": "74727565", "id": 2594, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3582:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 2561, "id": 2595, "nodeType": "Return", "src": "3575:11:14"}]}, "documentation": {"id": 2552, "nodeType": "StructuredDocumentation", "src": "2728:324:14", "text": " @dev Returns true if `account` supports all the interfaces defined in\n `interfaceIds`. Support for {IERC165} itself is queried automatically.\n Batch-querying can lead to gas savings by skipping repeated checks for\n {IERC165} support.\n See {IERC165-supportsInterface}."}, "id": 2597, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsAllInterfaces", "nameLocation": "3066:21:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2558, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2554, "mutability": "mutable", "name": "account", "nameLocation": "3096:7:14", "nodeType": "VariableDeclaration", "scope": 2597, "src": "3088:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2553, "name": "address", "nodeType": "ElementaryTypeName", "src": "3088:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2557, "mutability": "mutable", "name": "interfaceIds", "nameLocation": "3121:12:14", "nodeType": "VariableDeclaration", "scope": 2597, "src": "3105:28:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", "typeString": "bytes4[]"}, "typeName": {"baseType": {"id": 2555, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "3105:6:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "id": 2556, "nodeType": "ArrayTypeName", "src": "3105:8:14", "typeDescriptions": {"typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", "typeString": "bytes4[]"}}, "visibility": "internal"}], "src": "3087:47:14"}, "returnParameters": {"id": 2561, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2560, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2597, "src": "3158:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2559, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3158:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "3157:6:14"}, "scope": 2639, "src": "3057:536:14", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 2637, "nodeType": "Block", "src": "4355:550:14", "statements": [{"assignments": [2608], "declarations": [{"constant": false, "id": 2608, "mutability": "mutable", "name": "encodedParams", "nameLocation": "4402:13:14", "nodeType": "VariableDeclaration", "scope": 2637, "src": "4389:26:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2607, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4389:5:14", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 2616, "initialValue": {"arguments": [{"expression": {"expression": {"id": 2611, "name": "IERC165Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2695, "src": "4441:18:14", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$2695_$", "typeString": "type(contract IERC165Upgradeable)"}}, "id": 2612, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4460:17:14", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 2694, "src": "4441:36:14", "typeDescriptions": {"typeIdentifier": "t_function_declaration_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function IERC165Upgradeable.supportsInterface(bytes4) view returns (bool)"}}, "id": 2613, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4478:8:14", "memberName": "selector", "nodeType": "MemberAccess", "src": "4441:45:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, {"id": 2614, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2602, "src": "4488:11:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"id": 2609, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "4418:3:14", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 2610, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4422:18:14", "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "src": "4418:22:14", "typeDescriptions": {"typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)"}}, "id": 2615, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4418:82:14", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "4389:111:14"}, {"assignments": [2618], "declarations": [{"constant": false, "id": 2618, "mutability": "mutable", "name": "success", "nameLocation": "4547:7:14", "nodeType": "VariableDeclaration", "scope": 2637, "src": "4542:12:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2617, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4542:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 2619, "nodeType": "VariableDeclarationStatement", "src": "4542:12:14"}, {"assignments": [2621], "declarations": [{"constant": false, "id": 2621, "mutability": "mutable", "name": "returnSize", "nameLocation": "4572:10:14", "nodeType": "VariableDeclaration", "scope": 2637, "src": "4564:18:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2620, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4564:7:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2622, "nodeType": "VariableDeclarationStatement", "src": "4564:18:14"}, {"assignments": [2624], "declarations": [{"constant": false, "id": 2624, "mutability": "mutable", "name": "returnValue", "nameLocation": "4600:11:14", "nodeType": "VariableDeclaration", "scope": 2637, "src": "4592:19:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2623, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4592:7:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2625, "nodeType": "VariableDeclarationStatement", "src": "4592:19:14"}, {"AST": {"nodeType": "YulBlock", "src": "4630:203:14", "statements": [{"nodeType": "YulAssignment", "src": "4644:97:14", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "4666:5:14", "type": "", "value": "30000"}, {"name": "account", "nodeType": "YulIdentifier", "src": "4673:7:14"}, {"arguments": [{"name": "encodedParams", "nodeType": "YulIdentifier", "src": "4686:13:14"}, {"kind": "number", "nodeType": "YulLiteral", "src": "4701:4:14", "type": "", "value": "0x20"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "4682:3:14"}, "nodeType": "YulFunctionCall", "src": "4682:24:14"}, {"arguments": [{"name": "encodedParams", "nodeType": "YulIdentifier", "src": "4714:13:14"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "4708:5:14"}, "nodeType": "YulFunctionCall", "src": "4708:20:14"}, {"kind": "number", "nodeType": "YulLiteral", "src": "4730:4:14", "type": "", "value": "0x00"}, {"kind": "number", "nodeType": "YulLiteral", "src": "4736:4:14", "type": "", "value": "0x20"}], "functionName": {"name": "staticcall", "nodeType": "YulIdentifier", "src": "4655:10:14"}, "nodeType": "YulFunctionCall", "src": "4655:86:14"}, "variableNames": [{"name": "success", "nodeType": "YulIdentifier", "src": "4644:7:14"}]}, {"nodeType": "YulAssignment", "src": "4754:30:14", "value": {"arguments": [], "functionName": {"name": "returndatasize", "nodeType": "YulIdentifier", "src": "4768:14:14"}, "nodeType": "YulFunctionCall", "src": "4768:16:14"}, "variableNames": [{"name": "returnSize", "nodeType": "YulIdentifier", "src": "4754:10:14"}]}, {"nodeType": "YulAssignment", "src": "4797:26:14", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "4818:4:14", "type": "", "value": "0x00"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "4812:5:14"}, "nodeType": "YulFunctionCall", "src": "4812:11:14"}, "variableNames": [{"name": "returnValue", "nodeType": "YulIdentifier", "src": "4797:11:14"}]}]}, "evmVersion": "london", "externalReferences": [{"declaration": 2600, "isOffset": false, "isSlot": false, "src": "4673:7:14", "valueSize": 1}, {"declaration": 2608, "isOffset": false, "isSlot": false, "src": "4686:13:14", "valueSize": 1}, {"declaration": 2608, "isOffset": false, "isSlot": false, "src": "4714:13:14", "valueSize": 1}, {"declaration": 2621, "isOffset": false, "isSlot": false, "src": "4754:10:14", "valueSize": 1}, {"declaration": 2624, "isOffset": false, "isSlot": false, "src": "4797:11:14", "valueSize": 1}, {"declaration": 2618, "isOffset": false, "isSlot": false, "src": "4644:7:14", "valueSize": 1}], "id": 2626, "nodeType": "InlineAssembly", "src": "4621:212:14"}, {"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2635, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2627, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2618, "src": "4850:7:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2628, "name": "returnSize", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2621, "src": "4861:10:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"hexValue": "30783230", "id": 2629, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4875:4:14", "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "0x20"}, "src": "4861:18:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4850:29:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2632, "name": "returnValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2624, "src": "4883:11:14", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2633, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4897:1:14", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4883:15:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "4850:48:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2606, "id": 2636, "nodeType": "Return", "src": "4843:55:14"}]}, "documentation": {"id": 2598, "nodeType": "StructuredDocumentation", "src": "3599:652:14", "text": " @notice Query if a contract implements an interface, does not check ERC165 support\n @param account The address of the contract to query for support of an interface\n @param interfaceId The interface identifier, as specified in ERC-165\n @return true if the contract at account indicates support of the interface with\n identifier interfaceId, false otherwise\n @dev Assumes that account contains a contract that supports ERC165, otherwise\n the behavior of this method is undefined. This precondition can be checked\n with {supportsERC165}.\n Interface identification is specified in ERC-165."}, "id": 2638, "implemented": true, "kind": "function", "modifiers": [], "name": "_supportsERC165Interface", "nameLocation": "4265:24:14", "nodeType": "FunctionDefinition", "parameters": {"id": 2603, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2600, "mutability": "mutable", "name": "account", "nameLocation": "4298:7:14", "nodeType": "VariableDeclaration", "scope": 2638, "src": "4290:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2599, "name": "address", "nodeType": "ElementaryTypeName", "src": "4290:7:14", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2602, "mutability": "mutable", "name": "interfaceId", "nameLocation": "4314:11:14", "nodeType": "VariableDeclaration", "scope": 2638, "src": "4307:18:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 2601, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "4307:6:14", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "4289:37:14"}, "returnParameters": {"id": 2606, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2605, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2638, "src": "4349:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2604, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4349:4:14", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4348:6:14"}, "scope": 2639, "src": "4256:649:14", "stateMutability": "view", "virtual": false, "visibility": "private"}], "scope": 2640, "src": "460:4447:14", "usedErrors": []}], "src": "121:4787:14"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", "exportedSymbols": {"AddressUpgradeable": [2177], "ERC165Upgradeable": [2683], "IERC165Upgradeable": [2695], "Initializable": [282]}, "id": 2684, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2641, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "99:23:15"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", "file": "./IERC165Upgradeable.sol", "id": 2642, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2684, "sourceUnit": 2696, "src": "124:34:15", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "file": "../../proxy/utils/Initializable.sol", "id": 2643, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2684, "sourceUnit": 283, "src": "159:45:15", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 2645, "name": "Initializable", "nameLocations": ["822:13:15"], "nodeType": "IdentifierPath", "referencedDeclaration": 282, "src": "822:13:15"}, "id": 2646, "nodeType": "InheritanceSpecifier", "src": "822:13:15"}, {"baseName": {"id": 2647, "name": "IERC165Upgradeable", "nameLocations": ["837:18:15"], "nodeType": "IdentifierPath", "referencedDeclaration": 2695, "src": "837:18:15"}, "id": 2648, "nodeType": "InheritanceSpecifier", "src": "837:18:15"}], "canonicalName": "ERC165Upgradeable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2644, "nodeType": "StructuredDocumentation", "src": "206:576:15", "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."}, "fullyImplemented": true, "id": 2683, "linearizedBaseContracts": [2683, 2695, 282], "name": "ERC165Upgradeable", "nameLocation": "801:17:15", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2653, "nodeType": "Block", "src": "913:7:15", "statements": []}, "id": 2654, "implemented": true, "kind": "function", "modifiers": [{"id": 2651, "kind": "modifierInvocation", "modifierName": {"id": 2650, "name": "onlyInitializing", "nameLocations": ["896:16:15"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "896:16:15"}, "nodeType": "ModifierInvocation", "src": "896:16:15"}], "name": "__ERC165_init", "nameLocation": "871:13:15", "nodeType": "FunctionDefinition", "parameters": {"id": 2649, "nodeType": "ParameterList", "parameters": [], "src": "884:2:15"}, "returnParameters": {"id": 2652, "nodeType": "ParameterList", "parameters": [], "src": "913:0:15"}, "scope": 2683, "src": "862:58:15", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2659, "nodeType": "Block", "src": "987:7:15", "statements": []}, "id": 2660, "implemented": true, "kind": "function", "modifiers": [{"id": 2657, "kind": "modifierInvocation", "modifierName": {"id": 2656, "name": "onlyInitializing", "nameLocations": ["970:16:15"], "nodeType": "IdentifierPath", "referencedDeclaration": 245, "src": "970:16:15"}, "nodeType": "ModifierInvocation", "src": "970:16:15"}], "name": "__ERC165_init_unchained", "nameLocation": "935:23:15", "nodeType": "FunctionDefinition", "parameters": {"id": 2655, "nodeType": "ParameterList", "parameters": [], "src": "958:2:15"}, "returnParameters": {"id": 2658, "nodeType": "ParameterList", "parameters": [], "src": "987:0:15"}, "scope": 2683, "src": "926:68:15", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"baseFunctions": [2694], "body": {"id": 2676, "nodeType": "Block", "src": "1151:75:15", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 2674, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2669, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2663, "src": "1168:11:15", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 2671, "name": "IERC165Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2695, "src": "1188:18:15", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$2695_$", "typeString": "type(contract IERC165Upgradeable)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$2695_$", "typeString": "type(contract IERC165Upgradeable)"}], "id": 2670, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1183:4:15", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2672, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1183:24:15", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC165Upgradeable_$2695", "typeString": "type(contract IERC165Upgradeable)"}}, "id": 2673, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1208:11:15", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1183:36:15", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "1168:51:15", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2668, "id": 2675, "nodeType": "Return", "src": "1161:58:15"}]}, "documentation": {"id": 2661, "nodeType": "StructuredDocumentation", "src": "999:56:15", "text": " @dev See {IERC165-supportsInterface}."}, "functionSelector": "01ffc9a7", "id": 2677, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "1069:17:15", "nodeType": "FunctionDefinition", "overrides": {"id": 2665, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1127:8:15"}, "parameters": {"id": 2664, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2663, "mutability": "mutable", "name": "interfaceId", "nameLocation": "1094:11:15", "nodeType": "VariableDeclaration", "scope": 2677, "src": "1087:18:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 2662, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1087:6:15", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "1086:20:15"}, "returnParameters": {"id": 2668, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2667, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2677, "src": "1145:4:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2666, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1145:4:15", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1144:6:15"}, "scope": 2683, "src": "1060:166:15", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"constant": false, "documentation": {"id": 2678, "nodeType": "StructuredDocumentation", "src": "1232:254:15", "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}, "id": 2682, "mutability": "mutable", "name": "__gap", "nameLocation": "1511:5:15", "nodeType": "VariableDeclaration", "scope": 2683, "src": "1491:25:15", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage", "typeString": "uint256[50]"}, "typeName": {"baseType": {"id": 2679, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1491:7:15", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2681, "length": {"hexValue": "3530", "id": 2680, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1499:2:15", "typeDescriptions": {"typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50"}, "value": "50"}, "nodeType": "ArrayTypeName", "src": "1491:11:15", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", "typeString": "uint256[50]"}}, "visibility": "private"}], "scope": 2684, "src": "783:736:15", "usedErrors": []}], "src": "99:1421:15"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", "exportedSymbols": {"IERC165Upgradeable": [2695]}, "id": 2696, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2685, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "100:23:16"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC165Upgradeable", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2686, "nodeType": "StructuredDocumentation", "src": "125:279:16", "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\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": 2695, "linearizedBaseContracts": [2695], "name": "IERC165Upgradeable", "nameLocation": "415:18:16", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 2687, "nodeType": "StructuredDocumentation", "src": "440:340:16", "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[EIP 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": 2694, "implemented": false, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "794:17:16", "nodeType": "FunctionDefinition", "parameters": {"id": 2690, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2689, "mutability": "mutable", "name": "interfaceId", "nameLocation": "819:11:16", "nodeType": "VariableDeclaration", "scope": 2694, "src": "812:18:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 2688, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "812:6:16", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "811:20:16"}, "returnParameters": {"id": 2693, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2692, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2694, "src": "855:4:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2691, "name": "bool", "nodeType": "ElementaryTypeName", "src": "855:4:16", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "854:6:16"}, "scope": 2695, "src": "785:76:16", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 2696, "src": "405:458:16", "usedErrors": []}], "src": "100:764:16"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/access/Ownable.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/access/Ownable.sol", "exportedSymbols": {"Context": [5047], "Ownable": [2808]}, "id": 2809, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2697, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "102:23:17"}, {"absolutePath": "@openzeppelin/contracts/utils/Context.sol", "file": "../utils/Context.sol", "id": 2698, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2809, "sourceUnit": 5048, "src": "127:30:17", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 2700, "name": "Context", "nameLocations": ["683:7:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 5047, "src": "683:7:17"}, "id": 2701, "nodeType": "InheritanceSpecifier", "src": "683:7:17"}], "canonicalName": "Ownable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2699, "nodeType": "StructuredDocumentation", "src": "159:494:17", "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."}, "fullyImplemented": true, "id": 2808, "linearizedBaseContracts": [2808, 5047], "name": "Ownable", "nameLocation": "672:7:17", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 2703, "mutability": "mutable", "name": "_owner", "nameLocation": "713:6:17", "nodeType": "VariableDeclaration", "scope": 2808, "src": "697:22:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2702, "name": "address", "nodeType": "ElementaryTypeName", "src": "697:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "private"}, {"anonymous": false, "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "id": 2709, "name": "OwnershipTransferred", "nameLocation": "732:20:17", "nodeType": "EventDefinition", "parameters": {"id": 2708, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2705, "indexed": true, "mutability": "mutable", "name": "previousOwner", "nameLocation": "769:13:17", "nodeType": "VariableDeclaration", "scope": 2709, "src": "753:29:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2704, "name": "address", "nodeType": "ElementaryTypeName", "src": "753:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2707, "indexed": true, "mutability": "mutable", "name": "newOwner", "nameLocation": "800:8:17", "nodeType": "VariableDeclaration", "scope": 2709, "src": "784:24:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2706, "name": "address", "nodeType": "ElementaryTypeName", "src": "784:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "752:57:17"}, "src": "726:84:17"}, {"body": {"id": 2718, "nodeType": "Block", "src": "926:49:17", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 2714, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "955:10:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2715, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "955:12:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2713, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2807, "src": "936:18:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2716, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "936:32:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2717, "nodeType": "ExpressionStatement", "src": "936:32:17"}]}, "documentation": {"id": 2710, "nodeType": "StructuredDocumentation", "src": "816:91:17", "text": " @dev Initializes the contract setting the deployer as the initial owner."}, "id": 2719, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 2711, "nodeType": "ParameterList", "parameters": [], "src": "923:2:17"}, "returnParameters": {"id": 2712, "nodeType": "ParameterList", "parameters": [], "src": "926:0:17"}, "scope": 2808, "src": "912:63:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2726, "nodeType": "Block", "src": "1084:41:17", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2722, "name": "_checkOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2750, "src": "1094:11:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$__$", "typeString": "function () view"}}, "id": 2723, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1094:13:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2724, "nodeType": "ExpressionStatement", "src": "1094:13:17"}, {"id": 2725, "nodeType": "PlaceholderStatement", "src": "1117:1:17"}]}, "documentation": {"id": 2720, "nodeType": "StructuredDocumentation", "src": "981:77:17", "text": " @dev Throws if called by any account other than the owner."}, "id": 2727, "name": "onlyOwner", "nameLocation": "1072:9:17", "nodeType": "ModifierDefinition", "parameters": {"id": 2721, "nodeType": "ParameterList", "parameters": [], "src": "1081:2:17"}, "src": "1063:62:17", "virtual": false, "visibility": "internal"}, {"body": {"id": 2735, "nodeType": "Block", "src": "1256:30:17", "statements": [{"expression": {"id": 2733, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2703, "src": "1273:6:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2732, "id": 2734, "nodeType": "Return", "src": "1266:13:17"}]}, "documentation": {"id": 2728, "nodeType": "StructuredDocumentation", "src": "1131:65:17", "text": " @dev Returns the address of the current owner."}, "functionSelector": "8da5cb5b", "id": 2736, "implemented": true, "kind": "function", "modifiers": [], "name": "owner", "nameLocation": "1210:5:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2729, "nodeType": "ParameterList", "parameters": [], "src": "1215:2:17"}, "returnParameters": {"id": 2732, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2731, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2736, "src": "1247:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2730, "name": "address", "nodeType": "ElementaryTypeName", "src": "1247:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1246:9:17"}, "scope": 2808, "src": "1201:85:17", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 2749, "nodeType": "Block", "src": "1404:85:17", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2745, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2741, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2736, "src": "1422:5:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2742, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1422:7:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 2743, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "1433:10:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 2744, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1433:12:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1422:23:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", "id": 2746, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1447:34:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", "typeString": "literal_string \"Ownable: caller is not the owner\""}, "value": "Ownable: caller is not the owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", "typeString": "literal_string \"Ownable: caller is not the owner\""}], "id": 2740, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1414:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2747, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1414:68:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2748, "nodeType": "ExpressionStatement", "src": "1414:68:17"}]}, "documentation": {"id": 2737, "nodeType": "StructuredDocumentation", "src": "1292:62:17", "text": " @dev Throws if the sender is not the owner."}, "id": 2750, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOwner", "nameLocation": "1368:11:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2738, "nodeType": "ParameterList", "parameters": [], "src": "1379:2:17"}, "returnParameters": {"id": 2739, "nodeType": "ParameterList", "parameters": [], "src": "1404:0:17"}, "scope": 2808, "src": "1359:130:17", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 2763, "nodeType": "Block", "src": "1885:47:17", "statements": [{"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 2759, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1922:1:17", "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": 2758, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1914:7:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2757, "name": "address", "nodeType": "ElementaryTypeName", "src": "1914:7:17", "typeDescriptions": {}}}, "id": 2760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1914:10:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2756, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2807, "src": "1895:18:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2761, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1895:30:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2762, "nodeType": "ExpressionStatement", "src": "1895:30:17"}]}, "documentation": {"id": 2751, "nodeType": "StructuredDocumentation", "src": "1495:331:17", "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."}, "functionSelector": "715018a6", "id": 2764, "implemented": true, "kind": "function", "modifiers": [{"id": 2754, "kind": "modifierInvocation", "modifierName": {"id": 2753, "name": "onlyOwner", "nameLocations": ["1875:9:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 2727, "src": "1875:9:17"}, "nodeType": "ModifierInvocation", "src": "1875:9:17"}], "name": "renounceOwnership", "nameLocation": "1840:17:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2752, "nodeType": "ParameterList", "parameters": [], "src": "1857:2:17"}, "returnParameters": {"id": 2755, "nodeType": "ParameterList", "parameters": [], "src": "1885:0:17"}, "scope": 2808, "src": "1831:101:17", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 2786, "nodeType": "Block", "src": "2151:128:17", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2778, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2773, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2767, "src": "2169:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2776, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2189:1:17", "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": 2775, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2181:7:17", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2774, "name": "address", "nodeType": "ElementaryTypeName", "src": "2181:7:17", "typeDescriptions": {}}}, "id": 2777, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2181:10:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2169:22:17", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", "id": 2779, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2193:40:17", "typeDescriptions": {"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", "typeString": "literal_string \"Ownable: new owner is the zero address\""}, "value": "Ownable: new owner is the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", "typeString": "literal_string \"Ownable: new owner is the zero address\""}], "id": 2772, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2161:7:17", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2780, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2161:73:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2781, "nodeType": "ExpressionStatement", "src": "2161:73:17"}, {"expression": {"arguments": [{"id": 2783, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2767, "src": "2263:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2782, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2807, "src": "2244:18:17", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 2784, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2244:28:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2785, "nodeType": "ExpressionStatement", "src": "2244:28:17"}]}, "documentation": {"id": 2765, "nodeType": "StructuredDocumentation", "src": "1938:138:17", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."}, "functionSelector": "f2fde38b", "id": 2787, "implemented": true, "kind": "function", "modifiers": [{"id": 2770, "kind": "modifierInvocation", "modifierName": {"id": 2769, "name": "onlyOwner", "nameLocations": ["2141:9:17"], "nodeType": "IdentifierPath", "referencedDeclaration": 2727, "src": "2141:9:17"}, "nodeType": "ModifierInvocation", "src": "2141:9:17"}], "name": "transferOwnership", "nameLocation": "2090:17:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2768, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2767, "mutability": "mutable", "name": "newOwner", "nameLocation": "2116:8:17", "nodeType": "VariableDeclaration", "scope": 2787, "src": "2108:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2766, "name": "address", "nodeType": "ElementaryTypeName", "src": "2108:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2107:18:17"}, "returnParameters": {"id": 2771, "nodeType": "ParameterList", "parameters": [], "src": "2151:0:17"}, "scope": 2808, "src": "2081:198:17", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 2806, "nodeType": "Block", "src": "2496:124:17", "statements": [{"assignments": [2794], "declarations": [{"constant": false, "id": 2794, "mutability": "mutable", "name": "oldOwner", "nameLocation": "2514:8:17", "nodeType": "VariableDeclaration", "scope": 2806, "src": "2506:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2793, "name": "address", "nodeType": "ElementaryTypeName", "src": "2506:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 2796, "initialValue": {"id": 2795, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2703, "src": "2525:6:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2506:25:17"}, {"expression": {"id": 2799, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2797, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2703, "src": "2541:6:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2798, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2790, "src": "2550:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2541:17:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 2800, "nodeType": "ExpressionStatement", "src": "2541:17:17"}, {"eventCall": {"arguments": [{"id": 2802, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2794, "src": "2594:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2803, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2790, "src": "2604:8:17", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2801, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2709, "src": "2573:20:17", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 2804, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2573:40:17", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2805, "nodeType": "EmitStatement", "src": "2568:45:17"}]}, "documentation": {"id": 2788, "nodeType": "StructuredDocumentation", "src": "2285:143:17", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."}, "id": 2807, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOwnership", "nameLocation": "2442:18:17", "nodeType": "FunctionDefinition", "parameters": {"id": 2791, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2790, "mutability": "mutable", "name": "newOwner", "nameLocation": "2469:8:17", "nodeType": "VariableDeclaration", "scope": 2807, "src": "2461:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2789, "name": "address", "nodeType": "ElementaryTypeName", "src": "2461:7:17", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2460:18:17"}, "returnParameters": {"id": 2792, "nodeType": "ParameterList", "parameters": [], "src": "2496:0:17"}, "scope": 2808, "src": "2433:187:17", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}], "scope": 2809, "src": "654:1968:17", "usedErrors": []}], "src": "102:2521:17"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/proxy/Clones.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/proxy/Clones.sol", "exportedSymbols": {"Clones": [2888]}, "id": 2889, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2810, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "100:23:18"}, {"abstract": false, "baseContracts": [], "canonicalName": "Clones", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2811, "nodeType": "StructuredDocumentation", "src": "125:629:18", "text": " @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n deploying minimal proxy contracts, also known as \"clones\".\n > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n deterministic method.\n _Available since v3.4._"}, "fullyImplemented": true, "id": 2888, "linearizedBaseContracts": [2888], "name": "Clones", "nameLocation": "763:6:18", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 2830, "nodeType": "Block", "src": "1048:483:18", "statements": [{"AST": {"nodeType": "YulBlock", "src": "1110:348:18", "statements": [{"nodeType": "YulVariableDeclaration", "src": "1124:22:18", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "1141:4:18", "type": "", "value": "0x40"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "1135:5:18"}, "nodeType": "YulFunctionCall", "src": "1135:11:18"}, "variables": [{"name": "ptr", "nodeType": "YulTypedName", "src": "1128:3:18", "type": ""}]}, {"expression": {"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "1166:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "1171:66:18", "type": "", "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "1159:6:18"}, "nodeType": "YulFunctionCall", "src": "1159:79:18"}, "nodeType": "YulExpressionStatement", "src": "1159:79:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "1262:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "1267:4:18", "type": "", "value": "0x14"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "1258:3:18"}, "nodeType": "YulFunctionCall", "src": "1258:14:18"}, {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "1278:4:18", "type": "", "value": "0x60"}, {"name": "implementation", "nodeType": "YulIdentifier", "src": "1284:14:18"}], "functionName": {"name": "shl", "nodeType": "YulIdentifier", "src": "1274:3:18"}, "nodeType": "YulFunctionCall", "src": "1274:25:18"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "1251:6:18"}, "nodeType": "YulFunctionCall", "src": "1251:49:18"}, "nodeType": "YulExpressionStatement", "src": "1251:49:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "1324:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "1329:4:18", "type": "", "value": "0x28"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "1320:3:18"}, "nodeType": "YulFunctionCall", "src": "1320:14:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "1336:66:18", "type": "", "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "1313:6:18"}, "nodeType": "YulFunctionCall", "src": "1313:90:18"}, "nodeType": "YulExpressionStatement", "src": "1313:90:18"}, {"nodeType": "YulAssignment", "src": "1416:32:18", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "1435:1:18", "type": "", "value": "0"}, {"name": "ptr", "nodeType": "YulIdentifier", "src": "1438:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "1443:4:18", "type": "", "value": "0x37"}], "functionName": {"name": "create", "nodeType": "YulIdentifier", "src": "1428:6:18"}, "nodeType": "YulFunctionCall", "src": "1428:20:18"}, "variableNames": [{"name": "instance", "nodeType": "YulIdentifier", "src": "1416:8:18"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 2814, "isOffset": false, "isSlot": false, "src": "1284:14:18", "valueSize": 1}, {"declaration": 2817, "isOffset": false, "isSlot": false, "src": "1416:8:18", "valueSize": 1}], "id": 2819, "nodeType": "InlineAssembly", "src": "1101:357:18"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2826, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2821, "name": "instance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2817, "src": "1475:8:18", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2824, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1495:1:18", "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": 2823, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1487:7:18", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2822, "name": "address", "nodeType": "ElementaryTypeName", "src": "1487:7:18", "typeDescriptions": {}}}, "id": 2825, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1487:10:18", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1475:22:18", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "455243313136373a20637265617465206661696c6564", "id": 2827, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1499:24:18", "typeDescriptions": {"typeIdentifier": "t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335", "typeString": "literal_string \"ERC1167: create failed\""}, "value": "ERC1167: create failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335", "typeString": "literal_string \"ERC1167: create failed\""}], "id": 2820, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1467:7:18", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2828, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1467:57:18", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2829, "nodeType": "ExpressionStatement", "src": "1467:57:18"}]}, "documentation": {"id": 2812, "nodeType": "StructuredDocumentation", "src": "776:192:18", "text": " @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create opcode, which should never revert."}, "id": 2831, "implemented": true, "kind": "function", "modifiers": [], "name": "clone", "nameLocation": "982:5:18", "nodeType": "FunctionDefinition", "parameters": {"id": 2815, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2814, "mutability": "mutable", "name": "implementation", "nameLocation": "996:14:18", "nodeType": "VariableDeclaration", "scope": 2831, "src": "988:22:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2813, "name": "address", "nodeType": "ElementaryTypeName", "src": "988:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "987:24:18"}, "returnParameters": {"id": 2818, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2817, "mutability": "mutable", "name": "instance", "nameLocation": "1038:8:18", "nodeType": "VariableDeclaration", "scope": 2831, "src": "1030:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2816, "name": "address", "nodeType": "ElementaryTypeName", "src": "1030:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1029:18:18"}, "scope": 2888, "src": "973:558:18", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2852, "nodeType": "Block", "src": "2008:491:18", "statements": [{"AST": {"nodeType": "YulBlock", "src": "2070:355:18", "statements": [{"nodeType": "YulVariableDeclaration", "src": "2084:22:18", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "2101:4:18", "type": "", "value": "0x40"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "2095:5:18"}, "nodeType": "YulFunctionCall", "src": "2095:11:18"}, "variables": [{"name": "ptr", "nodeType": "YulTypedName", "src": "2088:3:18", "type": ""}]}, {"expression": {"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "2126:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2131:66:18", "type": "", "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "2119:6:18"}, "nodeType": "YulFunctionCall", "src": "2119:79:18"}, "nodeType": "YulExpressionStatement", "src": "2119:79:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "2222:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2227:4:18", "type": "", "value": "0x14"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "2218:3:18"}, "nodeType": "YulFunctionCall", "src": "2218:14:18"}, {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "2238:4:18", "type": "", "value": "0x60"}, {"name": "implementation", "nodeType": "YulIdentifier", "src": "2244:14:18"}], "functionName": {"name": "shl", "nodeType": "YulIdentifier", "src": "2234:3:18"}, "nodeType": "YulFunctionCall", "src": "2234:25:18"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "2211:6:18"}, "nodeType": "YulFunctionCall", "src": "2211:49:18"}, "nodeType": "YulExpressionStatement", "src": "2211:49:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "2284:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2289:4:18", "type": "", "value": "0x28"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "2280:3:18"}, "nodeType": "YulFunctionCall", "src": "2280:14:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2296:66:18", "type": "", "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "2273:6:18"}, "nodeType": "YulFunctionCall", "src": "2273:90:18"}, "nodeType": "YulExpressionStatement", "src": "2273:90:18"}, {"nodeType": "YulAssignment", "src": "2376:39:18", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "2396:1:18", "type": "", "value": "0"}, {"name": "ptr", "nodeType": "YulIdentifier", "src": "2399:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2404:4:18", "type": "", "value": "0x37"}, {"name": "salt", "nodeType": "YulIdentifier", "src": "2410:4:18"}], "functionName": {"name": "create2", "nodeType": "YulIdentifier", "src": "2388:7:18"}, "nodeType": "YulFunctionCall", "src": "2388:27:18"}, "variableNames": [{"name": "instance", "nodeType": "YulIdentifier", "src": "2376:8:18"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 2834, "isOffset": false, "isSlot": false, "src": "2244:14:18", "valueSize": 1}, {"declaration": 2839, "isOffset": false, "isSlot": false, "src": "2376:8:18", "valueSize": 1}, {"declaration": 2836, "isOffset": false, "isSlot": false, "src": "2410:4:18", "valueSize": 1}], "id": 2841, "nodeType": "InlineAssembly", "src": "2061:364:18"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 2848, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2843, "name": "instance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2839, "src": "2442:8:18", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 2846, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2462:1:18", "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": 2845, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2454:7:18", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2844, "name": "address", "nodeType": "ElementaryTypeName", "src": "2454:7:18", "typeDescriptions": {}}}, "id": 2847, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2454:10:18", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2442:22:18", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "455243313136373a2063726561746532206661696c6564", "id": 2849, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2466:25:18", "typeDescriptions": {"typeIdentifier": "t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73", "typeString": "literal_string \"ERC1167: create2 failed\""}, "value": "ERC1167: create2 failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73", "typeString": "literal_string \"ERC1167: create2 failed\""}], "id": 2842, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2434:7:18", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 2850, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2434:58:18", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2851, "nodeType": "ExpressionStatement", "src": "2434:58:18"}]}, "documentation": {"id": 2832, "nodeType": "StructuredDocumentation", "src": "1537:364:18", "text": " @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create2 opcode and a `salt` to deterministically deploy\n the clone. Using the same `implementation` and `salt` multiple time will revert, since\n the clones cannot be deployed twice at the same address."}, "id": 2853, "implemented": true, "kind": "function", "modifiers": [], "name": "cloneDeterministic", "nameLocation": "1915:18:18", "nodeType": "FunctionDefinition", "parameters": {"id": 2837, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2834, "mutability": "mutable", "name": "implementation", "nameLocation": "1942:14:18", "nodeType": "VariableDeclaration", "scope": 2853, "src": "1934:22:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2833, "name": "address", "nodeType": "ElementaryTypeName", "src": "1934:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2836, "mutability": "mutable", "name": "salt", "nameLocation": "1966:4:18", "nodeType": "VariableDeclaration", "scope": 2853, "src": "1958:12:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2835, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1958:7:18", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "1933:38:18"}, "returnParameters": {"id": 2840, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2839, "mutability": "mutable", "name": "instance", "nameLocation": "1998:8:18", "nodeType": "VariableDeclaration", "scope": 2853, "src": "1990:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2838, "name": "address", "nodeType": "ElementaryTypeName", "src": "1990:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1989:18:18"}, "scope": 2888, "src": "1906:593:18", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 2866, "nodeType": "Block", "src": "2774:582:18", "statements": [{"AST": {"nodeType": "YulBlock", "src": "2836:514:18", "statements": [{"nodeType": "YulVariableDeclaration", "src": "2850:22:18", "value": {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "2867:4:18", "type": "", "value": "0x40"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "2861:5:18"}, "nodeType": "YulFunctionCall", "src": "2861:11:18"}, "variables": [{"name": "ptr", "nodeType": "YulTypedName", "src": "2854:3:18", "type": ""}]}, {"expression": {"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "2892:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2897:66:18", "type": "", "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "2885:6:18"}, "nodeType": "YulFunctionCall", "src": "2885:79:18"}, "nodeType": "YulExpressionStatement", "src": "2885:79:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "2988:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "2993:4:18", "type": "", "value": "0x14"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "2984:3:18"}, "nodeType": "YulFunctionCall", "src": "2984:14:18"}, {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "3004:4:18", "type": "", "value": "0x60"}, {"name": "implementation", "nodeType": "YulIdentifier", "src": "3010:14:18"}], "functionName": {"name": "shl", "nodeType": "YulIdentifier", "src": "3000:3:18"}, "nodeType": "YulFunctionCall", "src": "3000:25:18"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "2977:6:18"}, "nodeType": "YulFunctionCall", "src": "2977:49:18"}, "nodeType": "YulExpressionStatement", "src": "2977:49:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "3050:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3055:4:18", "type": "", "value": "0x28"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "3046:3:18"}, "nodeType": "YulFunctionCall", "src": "3046:14:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3062:66:18", "type": "", "value": "0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "3039:6:18"}, "nodeType": "YulFunctionCall", "src": "3039:90:18"}, "nodeType": "YulExpressionStatement", "src": "3039:90:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "3153:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3158:4:18", "type": "", "value": "0x38"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "3149:3:18"}, "nodeType": "YulFunctionCall", "src": "3149:14:18"}, {"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "3169:4:18", "type": "", "value": "0x60"}, {"name": "deployer", "nodeType": "YulIdentifier", "src": "3175:8:18"}], "functionName": {"name": "shl", "nodeType": "YulIdentifier", "src": "3165:3:18"}, "nodeType": "YulFunctionCall", "src": "3165:19:18"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "3142:6:18"}, "nodeType": "YulFunctionCall", "src": "3142:43:18"}, "nodeType": "YulExpressionStatement", "src": "3142:43:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "3209:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3214:4:18", "type": "", "value": "0x4c"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "3205:3:18"}, "nodeType": "YulFunctionCall", "src": "3205:14:18"}, {"name": "salt", "nodeType": "YulIdentifier", "src": "3221:4:18"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "3198:6:18"}, "nodeType": "YulFunctionCall", "src": "3198:28:18"}, "nodeType": "YulExpressionStatement", "src": "3198:28:18"}, {"expression": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "3250:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3255:4:18", "type": "", "value": "0x6c"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "3246:3:18"}, "nodeType": "YulFunctionCall", "src": "3246:14:18"}, {"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "3272:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3277:4:18", "type": "", "value": "0x37"}], "functionName": {"name": "keccak256", "nodeType": "YulIdentifier", "src": "3262:9:18"}, "nodeType": "YulFunctionCall", "src": "3262:20:18"}], "functionName": {"name": "mstore", "nodeType": "YulIdentifier", "src": "3239:6:18"}, "nodeType": "YulFunctionCall", "src": "3239:44:18"}, "nodeType": "YulExpressionStatement", "src": "3239:44:18"}, {"nodeType": "YulAssignment", "src": "3296:44:18", "value": {"arguments": [{"arguments": [{"name": "ptr", "nodeType": "YulIdentifier", "src": "3323:3:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3328:4:18", "type": "", "value": "0x37"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "3319:3:18"}, "nodeType": "YulFunctionCall", "src": "3319:14:18"}, {"kind": "number", "nodeType": "YulLiteral", "src": "3335:4:18", "type": "", "value": "0x55"}], "functionName": {"name": "keccak256", "nodeType": "YulIdentifier", "src": "3309:9:18"}, "nodeType": "YulFunctionCall", "src": "3309:31:18"}, "variableNames": [{"name": "predicted", "nodeType": "YulIdentifier", "src": "3296:9:18"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 2860, "isOffset": false, "isSlot": false, "src": "3175:8:18", "valueSize": 1}, {"declaration": 2856, "isOffset": false, "isSlot": false, "src": "3010:14:18", "valueSize": 1}, {"declaration": 2863, "isOffset": false, "isSlot": false, "src": "3296:9:18", "valueSize": 1}, {"declaration": 2858, "isOffset": false, "isSlot": false, "src": "3221:4:18", "valueSize": 1}], "id": 2865, "nodeType": "InlineAssembly", "src": "2827:523:18"}]}, "documentation": {"id": 2854, "nodeType": "StructuredDocumentation", "src": "2505:99:18", "text": " @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."}, "id": 2867, "implemented": true, "kind": "function", "modifiers": [], "name": "predictDeterministicAddress", "nameLocation": "2618:27:18", "nodeType": "FunctionDefinition", "parameters": {"id": 2861, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2856, "mutability": "mutable", "name": "implementation", "nameLocation": "2663:14:18", "nodeType": "VariableDeclaration", "scope": 2867, "src": "2655:22:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2855, "name": "address", "nodeType": "ElementaryTypeName", "src": "2655:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2858, "mutability": "mutable", "name": "salt", "nameLocation": "2695:4:18", "nodeType": "VariableDeclaration", "scope": 2867, "src": "2687:12:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2857, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2687:7:18", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 2860, "mutability": "mutable", "name": "deployer", "nameLocation": "2717:8:18", "nodeType": "VariableDeclaration", "scope": 2867, "src": "2709:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2859, "name": "address", "nodeType": "ElementaryTypeName", "src": "2709:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2645:86:18"}, "returnParameters": {"id": 2864, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2863, "mutability": "mutable", "name": "predicted", "nameLocation": "2763:9:18", "nodeType": "VariableDeclaration", "scope": 2867, "src": "2755:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2862, "name": "address", "nodeType": "ElementaryTypeName", "src": "2755:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2754:19:18"}, "scope": 2888, "src": "2609:747:18", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2886, "nodeType": "Block", "src": "3611:88:18", "statements": [{"expression": {"arguments": [{"id": 2878, "name": "implementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2870, "src": "3656:14:18", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 2879, "name": "salt", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2872, "src": "3672:4:18", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"arguments": [{"id": 2882, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3686:4:18", "typeDescriptions": {"typeIdentifier": "t_contract$_Clones_$2888", "typeString": "library Clones"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_Clones_$2888", "typeString": "library Clones"}], "id": 2881, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3678:7:18", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 2880, "name": "address", "nodeType": "ElementaryTypeName", "src": "3678:7:18", "typeDescriptions": {}}}, "id": 2883, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3678:13:18", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 2877, "name": "predictDeterministicAddress", "nodeType": "Identifier", "overloadedDeclarations": [2867, 2887], "referencedDeclaration": 2867, "src": "3628:27:18", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$returns$_t_address_$", "typeString": "function (address,bytes32,address) pure returns (address)"}}, "id": 2884, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3628:64:18", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 2876, "id": 2885, "nodeType": "Return", "src": "3621:71:18"}]}, "documentation": {"id": 2868, "nodeType": "StructuredDocumentation", "src": "3362:99:18", "text": " @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."}, "id": 2887, "implemented": true, "kind": "function", "modifiers": [], "name": "predictDeterministicAddress", "nameLocation": "3475:27:18", "nodeType": "FunctionDefinition", "parameters": {"id": 2873, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2870, "mutability": "mutable", "name": "implementation", "nameLocation": "3511:14:18", "nodeType": "VariableDeclaration", "scope": 2887, "src": "3503:22:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2869, "name": "address", "nodeType": "ElementaryTypeName", "src": "3503:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2872, "mutability": "mutable", "name": "salt", "nameLocation": "3535:4:18", "nodeType": "VariableDeclaration", "scope": 2887, "src": "3527:12:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 2871, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3527:7:18", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3502:38:18"}, "returnParameters": {"id": 2876, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2875, "mutability": "mutable", "name": "predicted", "nameLocation": "3596:9:18", "nodeType": "VariableDeclaration", "scope": 2887, "src": "3588:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2874, "name": "address", "nodeType": "ElementaryTypeName", "src": "3588:7:18", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3587:19:18"}, "scope": 2888, "src": "3466:233:18", "stateMutability": "view", "virtual": false, "visibility": "internal"}], "scope": 2889, "src": "755:2946:18", "usedErrors": []}], "src": "100:3602:18"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "exportedSymbols": {"Context": [5047], "ERC20": [3474], "IERC20": [3552], "IERC20Metadata": [3577]}, "id": 3475, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2890, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "105:23:19"}, {"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", "id": 2891, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3475, "sourceUnit": 3553, "src": "130:22:19", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", "file": "./extensions/IERC20Metadata.sol", "id": 2892, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3475, "sourceUnit": 3578, "src": "153:41:19", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/utils/Context.sol", "file": "../../utils/Context.sol", "id": 2893, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3475, "sourceUnit": 5048, "src": "195:33:19", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 2895, "name": "Context", "nameLocations": ["1421:7:19"], "nodeType": "IdentifierPath", "referencedDeclaration": 5047, "src": "1421:7:19"}, "id": 2896, "nodeType": "InheritanceSpecifier", "src": "1421:7:19"}, {"baseName": {"id": 2897, "name": "IERC20", "nameLocations": ["1430:6:19"], "nodeType": "IdentifierPath", "referencedDeclaration": 3552, "src": "1430:6:19"}, "id": 2898, "nodeType": "InheritanceSpecifier", "src": "1430:6:19"}, {"baseName": {"id": 2899, "name": "IERC20Metadata", "nameLocations": ["1438:14:19"], "nodeType": "IdentifierPath", "referencedDeclaration": 3577, "src": "1438:14:19"}, "id": 2900, "nodeType": "InheritanceSpecifier", "src": "1438:14:19"}], "canonicalName": "ERC20", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2894, "nodeType": "StructuredDocumentation", "src": "230:1172:19", "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 For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\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 ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."}, "fullyImplemented": true, "id": 3474, "linearizedBaseContracts": [3474, 3577, 3552, 5047], "name": "ERC20", "nameLocation": "1412:5:19", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 2904, "mutability": "mutable", "name": "_balances", "nameLocation": "1495:9:19", "nodeType": "VariableDeclaration", "scope": 3474, "src": "1459:45:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "typeName": {"id": 2903, "keyType": {"id": 2901, "name": "address", "nodeType": "ElementaryTypeName", "src": "1467:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1459:27:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "valueType": {"id": 2902, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1478:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, "visibility": "private"}, {"constant": false, "id": 2910, "mutability": "mutable", "name": "_allowances", "nameLocation": "1567:11:19", "nodeType": "VariableDeclaration", "scope": 3474, "src": "1511:67:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))"}, "typeName": {"id": 2909, "keyType": {"id": 2905, "name": "address", "nodeType": "ElementaryTypeName", "src": "1519:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1511:47:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))"}, "valueType": {"id": 2908, "keyType": {"id": 2906, "name": "address", "nodeType": "ElementaryTypeName", "src": "1538:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1530:27:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "valueType": {"id": 2907, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1549:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}}, "visibility": "private"}, {"constant": false, "id": 2912, "mutability": "mutable", "name": "_totalSupply", "nameLocation": "1601:12:19", "nodeType": "VariableDeclaration", "scope": 3474, "src": "1585:28:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2911, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1585:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"constant": false, "id": 2914, "mutability": "mutable", "name": "_name", "nameLocation": "1635:5:19", "nodeType": "VariableDeclaration", "scope": 3474, "src": "1620:20:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 2913, "name": "string", "nodeType": "ElementaryTypeName", "src": "1620:6:19", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"constant": false, "id": 2916, "mutability": "mutable", "name": "_symbol", "nameLocation": "1661:7:19", "nodeType": "VariableDeclaration", "scope": 3474, "src": "1646:22:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 2915, "name": "string", "nodeType": "ElementaryTypeName", "src": "1646:6:19", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"body": {"id": 2932, "nodeType": "Block", "src": "2034:57:19", "statements": [{"expression": {"id": 2926, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2924, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2914, "src": "2044:5:19", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2925, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2919, "src": "2052:5:19", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "2044:13:19", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 2927, "nodeType": "ExpressionStatement", "src": "2044:13:19"}, {"expression": {"id": 2930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2928, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2916, "src": "2067:7:19", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 2929, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2921, "src": "2077:7:19", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "2067:17:19", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 2931, "nodeType": "ExpressionStatement", "src": "2067:17:19"}]}, "documentation": {"id": 2917, "nodeType": "StructuredDocumentation", "src": "1675:298:19", "text": " @dev Sets the values for {name} and {symbol}.\n The default value of {decimals} is 18. To select a different value for\n {decimals} you should overload it.\n All two of these values are immutable: they can only be set once during\n construction."}, "id": 2933, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 2922, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2919, "mutability": "mutable", "name": "name_", "nameLocation": "2004:5:19", "nodeType": "VariableDeclaration", "scope": 2933, "src": "1990:19:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2918, "name": "string", "nodeType": "ElementaryTypeName", "src": "1990:6:19", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 2921, "mutability": "mutable", "name": "symbol_", "nameLocation": "2025:7:19", "nodeType": "VariableDeclaration", "scope": 2933, "src": "2011:21:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2920, "name": "string", "nodeType": "ElementaryTypeName", "src": "2011:6:19", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1989:44:19"}, "returnParameters": {"id": 2923, "nodeType": "ParameterList", "parameters": [], "src": "2034:0:19"}, "scope": 3474, "src": "1978:113:19", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"baseFunctions": [3564], "body": {"id": 2942, "nodeType": "Block", "src": "2225:29:19", "statements": [{"expression": {"id": 2940, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2914, "src": "2242:5:19", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 2939, "id": 2941, "nodeType": "Return", "src": "2235:12:19"}]}, "documentation": {"id": 2934, "nodeType": "StructuredDocumentation", "src": "2097:54:19", "text": " @dev Returns the name of the token."}, "functionSelector": "06fdde03", "id": 2943, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "2165:4:19", "nodeType": "FunctionDefinition", "overrides": {"id": 2936, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2192:8:19"}, "parameters": {"id": 2935, "nodeType": "ParameterList", "parameters": [], "src": "2169:2:19"}, "returnParameters": {"id": 2939, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2938, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2943, "src": "2210:13:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2937, "name": "string", "nodeType": "ElementaryTypeName", "src": "2210:6:19", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2209:15:19"}, "scope": 3474, "src": "2156:98:19", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [3570], "body": {"id": 2952, "nodeType": "Block", "src": "2438:31:19", "statements": [{"expression": {"id": 2950, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2916, "src": "2455:7:19", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 2949, "id": 2951, "nodeType": "Return", "src": "2448:14:19"}]}, "documentation": {"id": 2944, "nodeType": "StructuredDocumentation", "src": "2260:102:19", "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."}, "functionSelector": "95d89b41", "id": 2953, "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "2376:6:19", "nodeType": "FunctionDefinition", "overrides": {"id": 2946, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2405:8:19"}, "parameters": {"id": 2945, "nodeType": "ParameterList", "parameters": [], "src": "2382:2:19"}, "returnParameters": {"id": 2949, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2948, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2953, "src": "2423:13:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2947, "name": "string", "nodeType": "ElementaryTypeName", "src": "2423:6:19", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2422:15:19"}, "scope": 3474, "src": "2367:102:19", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [3576], "body": {"id": 2962, "nodeType": "Block", "src": "3158:26:19", "statements": [{"expression": {"hexValue": "3138", "id": 2960, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3175:2:19", "typeDescriptions": {"typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18"}, "value": "18"}, "functionReturnParameters": 2959, "id": 2961, "nodeType": "Return", "src": "3168:9:19"}]}, "documentation": {"id": 2954, "nodeType": "StructuredDocumentation", "src": "2475:613:19", "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 value {ERC20} uses, unless this function is\n 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": 2963, "implemented": true, "kind": "function", "modifiers": [], "name": "decimals", "nameLocation": "3102:8:19", "nodeType": "FunctionDefinition", "overrides": {"id": 2956, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3133:8:19"}, "parameters": {"id": 2955, "nodeType": "ParameterList", "parameters": [], "src": "3110:2:19"}, "returnParameters": {"id": 2959, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2958, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2963, "src": "3151:5:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2957, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3151:5:19", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "3150:7:19"}, "scope": 3474, "src": "3093:91:19", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [3501], "body": {"id": 2972, "nodeType": "Block", "src": "3314:36:19", "statements": [{"expression": {"id": 2970, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2912, "src": "3331:12:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2969, "id": 2971, "nodeType": "Return", "src": "3324:19:19"}]}, "documentation": {"id": 2964, "nodeType": "StructuredDocumentation", "src": "3190:49:19", "text": " @dev See {IERC20-totalSupply}."}, "functionSelector": "18160ddd", "id": 2973, "implemented": true, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "3253:11:19", "nodeType": "FunctionDefinition", "overrides": {"id": 2966, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3287:8:19"}, "parameters": {"id": 2965, "nodeType": "ParameterList", "parameters": [], "src": "3264:2:19"}, "returnParameters": {"id": 2969, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2968, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2973, "src": "3305:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2967, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3305:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3304:9:19"}, "scope": 3474, "src": "3244:106:19", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [3509], "body": {"id": 2986, "nodeType": "Block", "src": "3491:42:19", "statements": [{"expression": {"baseExpression": {"id": 2982, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "3508:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 2984, "indexExpression": {"id": 2983, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2976, "src": "3518:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3508:18:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2981, "id": 2985, "nodeType": "Return", "src": "3501:25:19"}]}, "documentation": {"id": 2974, "nodeType": "StructuredDocumentation", "src": "3356:47:19", "text": " @dev See {IERC20-balanceOf}."}, "functionSelector": "70a08231", "id": 2987, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "3417:9:19", "nodeType": "FunctionDefinition", "overrides": {"id": 2978, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3464:8:19"}, "parameters": {"id": 2977, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2976, "mutability": "mutable", "name": "account", "nameLocation": "3435:7:19", "nodeType": "VariableDeclaration", "scope": 2987, "src": "3427:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2975, "name": "address", "nodeType": "ElementaryTypeName", "src": "3427:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3426:17:19"}, "returnParameters": {"id": 2981, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2980, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2987, "src": "3482:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2979, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3482:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3481:9:19"}, "scope": 3474, "src": "3408:125:19", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [3519], "body": {"id": 3011, "nodeType": "Block", "src": "3814:104:19", "statements": [{"assignments": [2999], "declarations": [{"constant": false, "id": 2999, "mutability": "mutable", "name": "owner", "nameLocation": "3832:5:19", "nodeType": "VariableDeclaration", "scope": 3011, "src": "3824:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2998, "name": "address", "nodeType": "ElementaryTypeName", "src": "3824:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3002, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 3000, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "3840:10:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3001, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3840:12:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "3824:28:19"}, {"expression": {"arguments": [{"id": 3004, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2999, "src": "3872:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3005, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2990, "src": "3879:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3006, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2992, "src": "3883:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3003, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3235, "src": "3862:9:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3007, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3862:28:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3008, "nodeType": "ExpressionStatement", "src": "3862:28:19"}, {"expression": {"hexValue": "74727565", "id": 3009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3907:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 2997, "id": 3010, "nodeType": "Return", "src": "3900:11:19"}]}, "documentation": {"id": 2988, "nodeType": "StructuredDocumentation", "src": "3539:185:19", "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `amount`."}, "functionSelector": "a9059cbb", "id": 3012, "implemented": true, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "3738:8:19", "nodeType": "FunctionDefinition", "overrides": {"id": 2994, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3790:8:19"}, "parameters": {"id": 2993, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2990, "mutability": "mutable", "name": "to", "nameLocation": "3755:2:19", "nodeType": "VariableDeclaration", "scope": 3012, "src": "3747:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2989, "name": "address", "nodeType": "ElementaryTypeName", "src": "3747:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 2992, "mutability": "mutable", "name": "amount", "nameLocation": "3767:6:19", "nodeType": "VariableDeclaration", "scope": 3012, "src": "3759:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2991, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3759:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3746:28:19"}, "returnParameters": {"id": 2997, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2996, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3012, "src": "3808:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2995, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3808:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "3807:6:19"}, "scope": 3474, "src": "3729:189:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [3529], "body": {"id": 3029, "nodeType": "Block", "src": "4074:51:19", "statements": [{"expression": {"baseExpression": {"baseExpression": {"id": 3023, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2910, "src": "4091:11:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))"}}, "id": 3025, "indexExpression": {"id": 3024, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3015, "src": "4103:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4091:18:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3027, "indexExpression": {"id": 3026, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3017, "src": "4110:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4091:27:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 3022, "id": 3028, "nodeType": "Return", "src": "4084:34:19"}]}, "documentation": {"id": 3013, "nodeType": "StructuredDocumentation", "src": "3924:47:19", "text": " @dev See {IERC20-allowance}."}, "functionSelector": "dd62ed3e", "id": 3030, "implemented": true, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "3985:9:19", "nodeType": "FunctionDefinition", "overrides": {"id": 3019, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4047:8:19"}, "parameters": {"id": 3018, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3015, "mutability": "mutable", "name": "owner", "nameLocation": "4003:5:19", "nodeType": "VariableDeclaration", "scope": 3030, "src": "3995:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3014, "name": "address", "nodeType": "ElementaryTypeName", "src": "3995:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3017, "mutability": "mutable", "name": "spender", "nameLocation": "4018:7:19", "nodeType": "VariableDeclaration", "scope": 3030, "src": "4010:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3016, "name": "address", "nodeType": "ElementaryTypeName", "src": "4010:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3994:32:19"}, "returnParameters": {"id": 3022, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3021, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3030, "src": "4065:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3020, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4065:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4064:9:19"}, "scope": 3474, "src": "3976:149:19", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [3539], "body": {"id": 3054, "nodeType": "Block", "src": "4522:108:19", "statements": [{"assignments": [3042], "declarations": [{"constant": false, "id": 3042, "mutability": "mutable", "name": "owner", "nameLocation": "4540:5:19", "nodeType": "VariableDeclaration", "scope": 3054, "src": "4532:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3041, "name": "address", "nodeType": "ElementaryTypeName", "src": "4532:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3045, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 3043, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "4548:10:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3044, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4548:12:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "4532:28:19"}, {"expression": {"arguments": [{"id": 3047, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3042, "src": "4579:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3048, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3033, "src": "4586:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3049, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3035, "src": "4595:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3046, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3408, "src": "4570:8:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3050, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4570:32:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3051, "nodeType": "ExpressionStatement", "src": "4570:32:19"}, {"expression": {"hexValue": "74727565", "id": 3052, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4619:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 3040, "id": 3053, "nodeType": "Return", "src": "4612:11:19"}]}, "documentation": {"id": 3031, "nodeType": "StructuredDocumentation", "src": "4131:297:19", "text": " @dev See {IERC20-approve}.\n NOTE: If `amount` 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": 3055, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "4442:7:19", "nodeType": "FunctionDefinition", "overrides": {"id": 3037, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4498:8:19"}, "parameters": {"id": 3036, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3033, "mutability": "mutable", "name": "spender", "nameLocation": "4458:7:19", "nodeType": "VariableDeclaration", "scope": 3055, "src": "4450:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3032, "name": "address", "nodeType": "ElementaryTypeName", "src": "4450:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3035, "mutability": "mutable", "name": "amount", "nameLocation": "4475:6:19", "nodeType": "VariableDeclaration", "scope": 3055, "src": "4467:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3034, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4467:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4449:33:19"}, "returnParameters": {"id": 3040, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3039, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3055, "src": "4516:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3038, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4516:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4515:6:19"}, "scope": 3474, "src": "4433:197:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [3551], "body": {"id": 3087, "nodeType": "Block", "src": "5325:153:19", "statements": [{"assignments": [3069], "declarations": [{"constant": false, "id": 3069, "mutability": "mutable", "name": "spender", "nameLocation": "5343:7:19", "nodeType": "VariableDeclaration", "scope": 3087, "src": "5335:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3068, "name": "address", "nodeType": "ElementaryTypeName", "src": "5335:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3072, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 3070, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "5353:10:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3071, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5353:12:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "5335:30:19"}, {"expression": {"arguments": [{"id": 3074, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3058, "src": "5391:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3075, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3069, "src": "5397:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3076, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3062, "src": "5406:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3073, "name": "_spendAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3451, "src": "5375:15:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3077, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5375:38:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3078, "nodeType": "ExpressionStatement", "src": "5375:38:19"}, {"expression": {"arguments": [{"id": 3080, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3058, "src": "5433:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3081, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3060, "src": "5439:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3082, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3062, "src": "5443:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3079, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3235, "src": "5423:9:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3083, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5423:27:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3084, "nodeType": "ExpressionStatement", "src": "5423:27:19"}, {"expression": {"hexValue": "74727565", "id": 3085, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5467:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 3067, "id": 3086, "nodeType": "Return", "src": "5460:11:19"}]}, "documentation": {"id": 3056, "nodeType": "StructuredDocumentation", "src": "4636:551:19", "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\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 `amount`.\n - the caller must have allowance for ``from``'s tokens of at least\n `amount`."}, "functionSelector": "23b872dd", "id": 3088, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "5201:12:19", "nodeType": "FunctionDefinition", "overrides": {"id": 3064, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5301:8:19"}, "parameters": {"id": 3063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3058, "mutability": "mutable", "name": "from", "nameLocation": "5231:4:19", "nodeType": "VariableDeclaration", "scope": 3088, "src": "5223:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3057, "name": "address", "nodeType": "ElementaryTypeName", "src": "5223:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3060, "mutability": "mutable", "name": "to", "nameLocation": "5253:2:19", "nodeType": "VariableDeclaration", "scope": 3088, "src": "5245:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3059, "name": "address", "nodeType": "ElementaryTypeName", "src": "5245:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3062, "mutability": "mutable", "name": "amount", "nameLocation": "5273:6:19", "nodeType": "VariableDeclaration", "scope": 3088, "src": "5265:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3061, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5265:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5213:72:19"}, "returnParameters": {"id": 3067, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3066, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3088, "src": "5319:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3065, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5319:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "5318:6:19"}, "scope": 3474, "src": "5192:286:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 3116, "nodeType": "Block", "src": "5967:140:19", "statements": [{"assignments": [3099], "declarations": [{"constant": false, "id": 3099, "mutability": "mutable", "name": "owner", "nameLocation": "5985:5:19", "nodeType": "VariableDeclaration", "scope": 3116, "src": "5977:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3098, "name": "address", "nodeType": "ElementaryTypeName", "src": "5977:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3102, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 3100, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "5993:10:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3101, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5993:12:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "5977:28:19"}, {"expression": {"arguments": [{"id": 3104, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3099, "src": "6024:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3105, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3091, "src": "6031:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 3107, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3099, "src": "6050:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3108, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3091, "src": "6057:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 3106, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3030, "src": "6040:9:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view returns (uint256)"}}, "id": 3109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6040:25:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 3110, "name": "addedValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3093, "src": "6068:10:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6040:38:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3103, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3408, "src": "6015:8:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3112, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6015:64:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3113, "nodeType": "ExpressionStatement", "src": "6015:64:19"}, {"expression": {"hexValue": "74727565", "id": 3114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6096:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 3097, "id": 3115, "nodeType": "Return", "src": "6089:11:19"}]}, "documentation": {"id": 3089, "nodeType": "StructuredDocumentation", "src": "5484:384:19", "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."}, "functionSelector": "39509351", "id": 3117, "implemented": true, "kind": "function", "modifiers": [], "name": "increaseAllowance", "nameLocation": "5882:17:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3094, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3091, "mutability": "mutable", "name": "spender", "nameLocation": "5908:7:19", "nodeType": "VariableDeclaration", "scope": 3117, "src": "5900:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3090, "name": "address", "nodeType": "ElementaryTypeName", "src": "5900:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3093, "mutability": "mutable", "name": "addedValue", "nameLocation": "5925:10:19", "nodeType": "VariableDeclaration", "scope": 3117, "src": "5917:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3092, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5917:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5899:37:19"}, "returnParameters": {"id": 3097, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3096, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3117, "src": "5961:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3095, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5961:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "5960:6:19"}, "scope": 3474, "src": "5873:234:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 3157, "nodeType": "Block", "src": "6693:328:19", "statements": [{"assignments": [3128], "declarations": [{"constant": false, "id": 3128, "mutability": "mutable", "name": "owner", "nameLocation": "6711:5:19", "nodeType": "VariableDeclaration", "scope": 3157, "src": "6703:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3127, "name": "address", "nodeType": "ElementaryTypeName", "src": "6703:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3131, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 3129, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "6719:10:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3130, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6719:12:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "6703:28:19"}, {"assignments": [3133], "declarations": [{"constant": false, "id": 3133, "mutability": "mutable", "name": "currentAllowance", "nameLocation": "6749:16:19", "nodeType": "VariableDeclaration", "scope": 3157, "src": "6741:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3132, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6741:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 3138, "initialValue": {"arguments": [{"id": 3135, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3128, "src": "6778:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3136, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3120, "src": "6785:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 3134, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3030, "src": "6768:9:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view returns (uint256)"}}, "id": 3137, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6768:25:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "6741:52:19"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3140, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3133, "src": "6811:16:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 3141, "name": "subtractedValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3122, "src": "6831:15:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6811:35:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", "id": 3143, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6848:39:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", "typeString": "literal_string \"ERC20: decreased allowance below zero\""}, "value": "ERC20: decreased allowance below zero"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", "typeString": "literal_string \"ERC20: decreased allowance below zero\""}], "id": 3139, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6803:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3144, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6803:85:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3145, "nodeType": "ExpressionStatement", "src": "6803:85:19"}, {"id": 3154, "nodeType": "UncheckedBlock", "src": "6898:95:19", "statements": [{"expression": {"arguments": [{"id": 3147, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3128, "src": "6931:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3148, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3120, "src": "6938:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3151, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3149, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3133, "src": "6947:16:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 3150, "name": "subtractedValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3122, "src": "6966:15:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6947:34:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3146, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3408, "src": "6922:8:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3152, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6922:60:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3153, "nodeType": "ExpressionStatement", "src": "6922:60:19"}]}, {"expression": {"hexValue": "74727565", "id": 3155, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7010:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 3126, "id": 3156, "nodeType": "Return", "src": "7003:11:19"}]}, "documentation": {"id": 3118, "nodeType": "StructuredDocumentation", "src": "6113:476:19", "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."}, "functionSelector": "a457c2d7", "id": 3158, "implemented": true, "kind": "function", "modifiers": [], "name": "decreaseAllowance", "nameLocation": "6603:17:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3123, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3120, "mutability": "mutable", "name": "spender", "nameLocation": "6629:7:19", "nodeType": "VariableDeclaration", "scope": 3158, "src": "6621:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3119, "name": "address", "nodeType": "ElementaryTypeName", "src": "6621:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3122, "mutability": "mutable", "name": "subtractedValue", "nameLocation": "6646:15:19", "nodeType": "VariableDeclaration", "scope": 3158, "src": "6638:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3121, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6638:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6620:42:19"}, "returnParameters": {"id": 3126, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3125, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3158, "src": "6687:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3124, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6687:4:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "6686:6:19"}, "scope": 3474, "src": "6594:427:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 3234, "nodeType": "Block", "src": "7583:543:19", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3169, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3161, "src": "7601:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7617:1:19", "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": 3171, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7609:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3170, "name": "address", "nodeType": "ElementaryTypeName", "src": "7609:7:19", "typeDescriptions": {}}}, "id": 3173, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7609:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7601:18:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", "id": 3175, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7621:39:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", "typeString": "literal_string \"ERC20: transfer from the zero address\""}, "value": "ERC20: transfer from the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", "typeString": "literal_string \"ERC20: transfer from the zero address\""}], "id": 3168, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7593:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3176, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7593:68:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3177, "nodeType": "ExpressionStatement", "src": "7593:68:19"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3179, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, "src": "7679:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3182, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7693:1:19", "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": 3181, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7685:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3180, "name": "address", "nodeType": "ElementaryTypeName", "src": "7685:7:19", "typeDescriptions": {}}}, "id": 3183, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7685:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7679:16:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", "id": 3185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7697:37:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", "typeString": "literal_string \"ERC20: transfer to the zero address\""}, "value": "ERC20: transfer to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", "typeString": "literal_string \"ERC20: transfer to the zero address\""}], "id": 3178, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7671:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3186, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7671:64:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3187, "nodeType": "ExpressionStatement", "src": "7671:64:19"}, {"expression": {"arguments": [{"id": 3189, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3161, "src": "7767:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3190, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, "src": "7773:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3191, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3165, "src": "7777:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3188, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3462, "src": "7746:20:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3192, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7746:38:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3193, "nodeType": "ExpressionStatement", "src": "7746:38:19"}, {"assignments": [3195], "declarations": [{"constant": false, "id": 3195, "mutability": "mutable", "name": "fromBalance", "nameLocation": "7803:11:19", "nodeType": "VariableDeclaration", "scope": 3234, "src": "7795:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3194, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7795:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 3199, "initialValue": {"baseExpression": {"id": 3196, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "7817:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3198, "indexExpression": {"id": 3197, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3161, "src": "7827:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7817:15:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "7795:37:19"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3201, "name": "fromBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3195, "src": "7850:11:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 3202, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3165, "src": "7865:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7850:21:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", "id": 3204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7873:40:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""}, "value": "ERC20: transfer amount exceeds balance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""}], "id": 3200, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7842:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3205, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7842:72:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3206, "nodeType": "ExpressionStatement", "src": "7842:72:19"}, {"id": 3215, "nodeType": "UncheckedBlock", "src": "7924:73:19", "statements": [{"expression": {"id": 3213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 3207, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "7948:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3209, "indexExpression": {"id": 3208, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3161, "src": "7958:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7948:15:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3210, "name": "fromBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3195, "src": "7966:11:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 3211, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3165, "src": "7980:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7966:20:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7948:38:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3214, "nodeType": "ExpressionStatement", "src": "7948:38:19"}]}, {"expression": {"id": 3220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 3216, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "8006:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3218, "indexExpression": {"id": 3217, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, "src": "8016:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8006:13:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 3219, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3165, "src": "8023:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8006:23:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3221, "nodeType": "ExpressionStatement", "src": "8006:23:19"}, {"eventCall": {"arguments": [{"id": 3223, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3161, "src": "8054:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3224, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, "src": "8060:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3225, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3165, "src": "8064:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3222, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3486, "src": "8045:8:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3226, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8045:26:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3227, "nodeType": "EmitStatement", "src": "8040:31:19"}, {"expression": {"arguments": [{"id": 3229, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3161, "src": "8102:4:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3230, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, "src": "8108:2:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3231, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3165, "src": "8112:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3228, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3473, "src": "8082:19:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3232, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8082:37:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3233, "nodeType": "ExpressionStatement", "src": "8082:37:19"}]}, "documentation": {"id": 3159, "nodeType": "StructuredDocumentation", "src": "7027:443:19", "text": " @dev Moves `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 Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`."}, "id": 3235, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nameLocation": "7484:9:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3166, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3161, "mutability": "mutable", "name": "from", "nameLocation": "7511:4:19", "nodeType": "VariableDeclaration", "scope": 3235, "src": "7503:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3160, "name": "address", "nodeType": "ElementaryTypeName", "src": "7503:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3163, "mutability": "mutable", "name": "to", "nameLocation": "7533:2:19", "nodeType": "VariableDeclaration", "scope": 3235, "src": "7525:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3162, "name": "address", "nodeType": "ElementaryTypeName", "src": "7525:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3165, "mutability": "mutable", "name": "amount", "nameLocation": "7553:6:19", "nodeType": "VariableDeclaration", "scope": 3235, "src": "7545:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3164, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7545:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7493:72:19"}, "returnParameters": {"id": 3167, "nodeType": "ParameterList", "parameters": [], "src": "7583:0:19"}, "scope": 3474, "src": "7475:651:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 3290, "nodeType": "Block", "src": "8467:324:19", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3244, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3238, "src": "8485:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3247, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8504:1:19", "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": 3246, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8496:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3245, "name": "address", "nodeType": "ElementaryTypeName", "src": "8496:7:19", "typeDescriptions": {}}}, "id": 3248, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8496:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "8485:21:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", "id": 3250, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8508:33:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", "typeString": "literal_string \"ERC20: mint to the zero address\""}, "value": "ERC20: mint to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", "typeString": "literal_string \"ERC20: mint to the zero address\""}], "id": 3243, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8477:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3251, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8477:65:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3252, "nodeType": "ExpressionStatement", "src": "8477:65:19"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 3256, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8582:1:19", "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": 3255, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8574:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3254, "name": "address", "nodeType": "ElementaryTypeName", "src": "8574:7:19", "typeDescriptions": {}}}, "id": 3257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8574:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3258, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3238, "src": "8586:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3259, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3240, "src": "8595:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3253, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3462, "src": "8553:20:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3260, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8553:49:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3261, "nodeType": "ExpressionStatement", "src": "8553:49:19"}, {"expression": {"id": 3264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3262, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2912, "src": "8613:12:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 3263, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3240, "src": "8629:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8613:22:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3265, "nodeType": "ExpressionStatement", "src": "8613:22:19"}, {"expression": {"id": 3270, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 3266, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "8645:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3268, "indexExpression": {"id": 3267, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3238, "src": "8655:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8645:18:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 3269, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3240, "src": "8667:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8645:28:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3271, "nodeType": "ExpressionStatement", "src": "8645:28:19"}, {"eventCall": {"arguments": [{"arguments": [{"hexValue": "30", "id": 3275, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8705:1:19", "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": 3274, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8697:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3273, "name": "address", "nodeType": "ElementaryTypeName", "src": "8697:7:19", "typeDescriptions": {}}}, "id": 3276, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8697:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3277, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3238, "src": "8709:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3278, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3240, "src": "8718:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3272, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3486, "src": "8688:8:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3279, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8688:37:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3280, "nodeType": "EmitStatement", "src": "8683:42:19"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 3284, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8764:1:19", "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": 3283, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8756:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3282, "name": "address", "nodeType": "ElementaryTypeName", "src": "8756:7:19", "typeDescriptions": {}}}, "id": 3285, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8756:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3286, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3238, "src": "8768:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3287, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3240, "src": "8777:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3281, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3473, "src": "8736:19:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3288, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8736:48:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3289, "nodeType": "ExpressionStatement", "src": "8736:48:19"}]}, "documentation": {"id": 3236, "nodeType": "StructuredDocumentation", "src": "8132:265:19", "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address."}, "id": 3291, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nameLocation": "8411:5:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3241, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3238, "mutability": "mutable", "name": "account", "nameLocation": "8425:7:19", "nodeType": "VariableDeclaration", "scope": 3291, "src": "8417:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3237, "name": "address", "nodeType": "ElementaryTypeName", "src": "8417:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3240, "mutability": "mutable", "name": "amount", "nameLocation": "8442:6:19", "nodeType": "VariableDeclaration", "scope": 3291, "src": "8434:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3239, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8434:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "8416:33:19"}, "returnParameters": {"id": 3242, "nodeType": "ParameterList", "parameters": [], "src": "8467:0:19"}, "scope": 3474, "src": "8402:389:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 3362, "nodeType": "Block", "src": "9176:511:19", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3300, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3294, "src": "9194:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9213:1:19", "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": 3302, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9205:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3301, "name": "address", "nodeType": "ElementaryTypeName", "src": "9205:7:19", "typeDescriptions": {}}}, "id": 3304, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9205:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9194:21:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", "id": 3306, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9217:35:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", "typeString": "literal_string \"ERC20: burn from the zero address\""}, "value": "ERC20: burn from the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", "typeString": "literal_string \"ERC20: burn from the zero address\""}], "id": 3299, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9186:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9186:67:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3308, "nodeType": "ExpressionStatement", "src": "9186:67:19"}, {"expression": {"arguments": [{"id": 3310, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3294, "src": "9285:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 3313, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9302:1:19", "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": 3312, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9294:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3311, "name": "address", "nodeType": "ElementaryTypeName", "src": "9294:7:19", "typeDescriptions": {}}}, "id": 3314, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9294:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3315, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3296, "src": "9306:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3309, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3462, "src": "9264:20:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3316, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9264:49:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3317, "nodeType": "ExpressionStatement", "src": "9264:49:19"}, {"assignments": [3319], "declarations": [{"constant": false, "id": 3319, "mutability": "mutable", "name": "accountBalance", "nameLocation": "9332:14:19", "nodeType": "VariableDeclaration", "scope": 3362, "src": "9324:22:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3318, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9324:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 3323, "initialValue": {"baseExpression": {"id": 3320, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "9349:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3322, "indexExpression": {"id": 3321, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3294, "src": "9359:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9349:18:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "9324:43:19"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3325, "name": "accountBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3319, "src": "9385:14:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 3326, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3296, "src": "9403:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9385:24:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", "id": 3328, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9411:36:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", "typeString": "literal_string \"ERC20: burn amount exceeds balance\""}, "value": "ERC20: burn amount exceeds balance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", "typeString": "literal_string \"ERC20: burn amount exceeds balance\""}], "id": 3324, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9377:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9377:71:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3330, "nodeType": "ExpressionStatement", "src": "9377:71:19"}, {"id": 3339, "nodeType": "UncheckedBlock", "src": "9458:79:19", "statements": [{"expression": {"id": 3337, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 3331, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2904, "src": "9482:9:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3333, "indexExpression": {"id": 3332, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3294, "src": "9492:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9482:18:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3334, "name": "accountBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3319, "src": "9503:14:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 3335, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3296, "src": "9520:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9503:23:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9482:44:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3338, "nodeType": "ExpressionStatement", "src": "9482:44:19"}]}, {"expression": {"id": 3342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3340, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2912, "src": "9546:12:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 3341, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3296, "src": "9562:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9546:22:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3343, "nodeType": "ExpressionStatement", "src": "9546:22:19"}, {"eventCall": {"arguments": [{"id": 3345, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3294, "src": "9593:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 3348, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9610:1:19", "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": 3347, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9602:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3346, "name": "address", "nodeType": "ElementaryTypeName", "src": "9602:7:19", "typeDescriptions": {}}}, "id": 3349, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9602:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3350, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3296, "src": "9614:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3344, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3486, "src": "9584:8:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3351, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9584:37:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3352, "nodeType": "EmitStatement", "src": "9579:42:19"}, {"expression": {"arguments": [{"id": 3354, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3294, "src": "9652:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 3357, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9669:1:19", "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": 3356, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9661:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3355, "name": "address", "nodeType": "ElementaryTypeName", "src": "9661:7:19", "typeDescriptions": {}}}, "id": 3358, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9661:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3359, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3296, "src": "9673:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3353, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3473, "src": "9632:19:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3360, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9632:48:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3361, "nodeType": "ExpressionStatement", "src": "9632:48:19"}]}, "documentation": {"id": 3292, "nodeType": "StructuredDocumentation", "src": "8797:309:19", "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."}, "id": 3363, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "9120:5:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3297, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3294, "mutability": "mutable", "name": "account", "nameLocation": "9134:7:19", "nodeType": "VariableDeclaration", "scope": 3363, "src": "9126:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3293, "name": "address", "nodeType": "ElementaryTypeName", "src": "9126:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3296, "mutability": "mutable", "name": "amount", "nameLocation": "9151:6:19", "nodeType": "VariableDeclaration", "scope": 3363, "src": "9143:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3295, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9143:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "9125:33:19"}, "returnParameters": {"id": 3298, "nodeType": "ParameterList", "parameters": [], "src": "9176:0:19"}, "scope": 3474, "src": "9111:576:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 3407, "nodeType": "Block", "src": "10223:257:19", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3374, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3366, "src": "10241:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10258:1:19", "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": 3376, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10250:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3375, "name": "address", "nodeType": "ElementaryTypeName", "src": "10250:7:19", "typeDescriptions": {}}}, "id": 3378, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10250:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10241:19:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", "id": 3380, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10262:38:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", "typeString": "literal_string \"ERC20: approve from the zero address\""}, "value": "ERC20: approve from the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", "typeString": "literal_string \"ERC20: approve from the zero address\""}], "id": 3373, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10233:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3381, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10233:68:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3382, "nodeType": "ExpressionStatement", "src": "10233:68:19"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3389, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3384, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3368, "src": "10319:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3387, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10338:1:19", "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": 3386, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10330:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3385, "name": "address", "nodeType": "ElementaryTypeName", "src": "10330:7:19", "typeDescriptions": {}}}, "id": 3388, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10330:10:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10319:21:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", "id": 3390, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10342:36:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", "typeString": "literal_string \"ERC20: approve to the zero address\""}, "value": "ERC20: approve to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", "typeString": "literal_string \"ERC20: approve to the zero address\""}], "id": 3383, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10311:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3391, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10311:68:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3392, "nodeType": "ExpressionStatement", "src": "10311:68:19"}, {"expression": {"id": 3399, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"baseExpression": {"id": 3393, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2910, "src": "10390:11:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))"}}, "id": 3396, "indexExpression": {"id": 3394, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3366, "src": "10402:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10390:18:19", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3397, "indexExpression": {"id": 3395, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3368, "src": "10409:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10390:27:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 3398, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3370, "src": "10420:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10390:36:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3400, "nodeType": "ExpressionStatement", "src": "10390:36:19"}, {"eventCall": {"arguments": [{"id": 3402, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3366, "src": "10450:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3403, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3368, "src": "10457:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3404, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3370, "src": "10466:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3401, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3495, "src": "10441:8:19", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3405, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10441:32:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3406, "nodeType": "EmitStatement", "src": "10436:37:19"}]}, "documentation": {"id": 3364, "nodeType": "StructuredDocumentation", "src": "9693:412:19", "text": " @dev Sets `amount` 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."}, "id": 3408, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nameLocation": "10119:8:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3371, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3366, "mutability": "mutable", "name": "owner", "nameLocation": "10145:5:19", "nodeType": "VariableDeclaration", "scope": 3408, "src": "10137:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3365, "name": "address", "nodeType": "ElementaryTypeName", "src": "10137:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3368, "mutability": "mutable", "name": "spender", "nameLocation": "10168:7:19", "nodeType": "VariableDeclaration", "scope": 3408, "src": "10160:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3367, "name": "address", "nodeType": "ElementaryTypeName", "src": "10160:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3370, "mutability": "mutable", "name": "amount", "nameLocation": "10193:6:19", "nodeType": "VariableDeclaration", "scope": 3408, "src": "10185:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3369, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10185:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10127:78:19"}, "returnParameters": {"id": 3372, "nodeType": "ParameterList", "parameters": [], "src": "10223:0:19"}, "scope": 3474, "src": "10110:370:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 3450, "nodeType": "Block", "src": "10881:321:19", "statements": [{"assignments": [3419], "declarations": [{"constant": false, "id": 3419, "mutability": "mutable", "name": "currentAllowance", "nameLocation": "10899:16:19", "nodeType": "VariableDeclaration", "scope": 3450, "src": "10891:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3418, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10891:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 3424, "initialValue": {"arguments": [{"id": 3421, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3411, "src": "10928:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3422, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3413, "src": "10935:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 3420, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3030, "src": "10918:9:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view returns (uint256)"}}, "id": 3423, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10918:25:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "10891:52:19"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3431, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3425, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3419, "src": "10957:16:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"arguments": [{"id": 3428, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10982:7:19", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 3427, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10982:7:19", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}], "id": 3426, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "10977:4:19", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 3429, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10977:13:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint256", "typeString": "type(uint256)"}}, "id": 3430, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "10991:3:19", "memberName": "max", "nodeType": "MemberAccess", "src": "10977:17:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10957:37:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3449, "nodeType": "IfStatement", "src": "10953:243:19", "trueBody": {"id": 3448, "nodeType": "Block", "src": "10996:200:19", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3435, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3433, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3419, "src": "11018:16:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 3434, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3415, "src": "11038:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11018:26:19", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365", "id": 3436, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11046:31:19", "typeDescriptions": {"typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe", "typeString": "literal_string \"ERC20: insufficient allowance\""}, "value": "ERC20: insufficient allowance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe", "typeString": "literal_string \"ERC20: insufficient allowance\""}], "id": 3432, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11010:7:19", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3437, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11010:68:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3438, "nodeType": "ExpressionStatement", "src": "11010:68:19"}, {"id": 3447, "nodeType": "UncheckedBlock", "src": "11092:94:19", "statements": [{"expression": {"arguments": [{"id": 3440, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3411, "src": "11129:5:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3441, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3413, "src": "11136:7:19", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3444, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3442, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3419, "src": "11145:16:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 3443, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3415, "src": "11164:6:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "11145:25:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3439, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3408, "src": "11120:8:19", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3445, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11120:51:19", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3446, "nodeType": "ExpressionStatement", "src": "11120:51:19"}]}]}}]}, "documentation": {"id": 3409, "nodeType": "StructuredDocumentation", "src": "10486:270:19", "text": " @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event."}, "id": 3451, "implemented": true, "kind": "function", "modifiers": [], "name": "_spendAllowance", "nameLocation": "10770:15:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3416, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3411, "mutability": "mutable", "name": "owner", "nameLocation": "10803:5:19", "nodeType": "VariableDeclaration", "scope": 3451, "src": "10795:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3410, "name": "address", "nodeType": "ElementaryTypeName", "src": "10795:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3413, "mutability": "mutable", "name": "spender", "nameLocation": "10826:7:19", "nodeType": "VariableDeclaration", "scope": 3451, "src": "10818:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3412, "name": "address", "nodeType": "ElementaryTypeName", "src": "10818:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3415, "mutability": "mutable", "name": "amount", "nameLocation": "10851:6:19", "nodeType": "VariableDeclaration", "scope": 3451, "src": "10843:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3414, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10843:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10785:78:19"}, "returnParameters": {"id": 3417, "nodeType": "ParameterList", "parameters": [], "src": "10881:0:19"}, "scope": 3474, "src": "10761:441:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 3461, "nodeType": "Block", "src": "11905:2:19", "statements": []}, "documentation": {"id": 3452, "nodeType": "StructuredDocumentation", "src": "11208:573:19", "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."}, "id": 3462, "implemented": true, "kind": "function", "modifiers": [], "name": "_beforeTokenTransfer", "nameLocation": "11795:20:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3459, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3454, "mutability": "mutable", "name": "from", "nameLocation": "11833:4:19", "nodeType": "VariableDeclaration", "scope": 3462, "src": "11825:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3453, "name": "address", "nodeType": "ElementaryTypeName", "src": "11825:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3456, "mutability": "mutable", "name": "to", "nameLocation": "11855:2:19", "nodeType": "VariableDeclaration", "scope": 3462, "src": "11847:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3455, "name": "address", "nodeType": "ElementaryTypeName", "src": "11847:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3458, "mutability": "mutable", "name": "amount", "nameLocation": "11875:6:19", "nodeType": "VariableDeclaration", "scope": 3462, "src": "11867:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3457, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11867:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "11815:72:19"}, "returnParameters": {"id": 3460, "nodeType": "ParameterList", "parameters": [], "src": "11905:0:19"}, "scope": 3474, "src": "11786:121:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 3472, "nodeType": "Block", "src": "12613:2:19", "statements": []}, "documentation": {"id": 3463, "nodeType": "StructuredDocumentation", "src": "11913:577:19", "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."}, "id": 3473, "implemented": true, "kind": "function", "modifiers": [], "name": "_afterTokenTransfer", "nameLocation": "12504:19:19", "nodeType": "FunctionDefinition", "parameters": {"id": 3470, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3465, "mutability": "mutable", "name": "from", "nameLocation": "12541:4:19", "nodeType": "VariableDeclaration", "scope": 3473, "src": "12533:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3464, "name": "address", "nodeType": "ElementaryTypeName", "src": "12533:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3467, "mutability": "mutable", "name": "to", "nameLocation": "12563:2:19", "nodeType": "VariableDeclaration", "scope": 3473, "src": "12555:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3466, "name": "address", "nodeType": "ElementaryTypeName", "src": "12555:7:19", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3469, "mutability": "mutable", "name": "amount", "nameLocation": "12583:6:19", "nodeType": "VariableDeclaration", "scope": 3473, "src": "12575:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3468, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12575:7:19", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "12523:72:19"}, "returnParameters": {"id": 3471, "nodeType": "ParameterList", "parameters": [], "src": "12613:0:19"}, "scope": 3474, "src": "12495:120:19", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}], "scope": 3475, "src": "1403:11214:19", "usedErrors": []}], "src": "105:12513:19"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [3552]}, "id": 3553, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3476, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:20"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 3477, "nodeType": "StructuredDocumentation", "src": "131:70:20", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 3552, "linearizedBaseContracts": [3552], "name": "IERC20", "nameLocation": "212:6:20", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 3478, "nodeType": "StructuredDocumentation", "src": "225:158:20", "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": 3486, "name": "Transfer", "nameLocation": "394:8:20", "nodeType": "EventDefinition", "parameters": {"id": 3485, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3480, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:20", "nodeType": "VariableDeclaration", "scope": 3486, "src": "403:20:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3479, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3482, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:20", "nodeType": "VariableDeclaration", "scope": 3486, "src": "425:18:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3481, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3484, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:20", "nodeType": "VariableDeclaration", "scope": 3486, "src": "445:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3483, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:20"}, "src": "388:72:20"}, {"anonymous": false, "documentation": {"id": 3487, "nodeType": "StructuredDocumentation", "src": "466:148:20", "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": 3495, "name": "Approval", "nameLocation": "625:8:20", "nodeType": "EventDefinition", "parameters": {"id": 3494, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3489, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:20", "nodeType": "VariableDeclaration", "scope": 3495, "src": "634:21:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3488, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3491, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:20", "nodeType": "VariableDeclaration", "scope": 3495, "src": "657:23:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3490, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3493, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:20", "nodeType": "VariableDeclaration", "scope": 3495, "src": "682:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3492, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:20"}, "src": "619:78:20"}, {"documentation": {"id": 3496, "nodeType": "StructuredDocumentation", "src": "703:66:20", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 3501, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:20", "nodeType": "FunctionDefinition", "parameters": {"id": 3497, "nodeType": "ParameterList", "parameters": [], "src": "794:2:20"}, "returnParameters": {"id": 3500, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3499, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3501, "src": "820:7:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3498, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:20"}, "scope": 3552, "src": "774:55:20", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3502, "nodeType": "StructuredDocumentation", "src": "835:72:20", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 3509, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:20", "nodeType": "FunctionDefinition", "parameters": {"id": 3505, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3504, "mutability": "mutable", "name": "account", "nameLocation": "939:7:20", "nodeType": "VariableDeclaration", "scope": 3509, "src": "931:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3503, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:20"}, "returnParameters": {"id": 3508, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3507, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3509, "src": "971:7:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3506, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:20"}, "scope": 3552, "src": "912:68:20", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3510, "nodeType": "StructuredDocumentation", "src": "986:202:20", "text": " @dev Moves `amount` 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": 3519, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:20", "nodeType": "FunctionDefinition", "parameters": {"id": 3515, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3512, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:20", "nodeType": "VariableDeclaration", "scope": 3519, "src": "1211:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3511, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3514, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:20", "nodeType": "VariableDeclaration", "scope": 3519, "src": "1223:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3513, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:20"}, "returnParameters": {"id": 3518, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3517, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3519, "src": "1257:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3516, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:20"}, "scope": 3552, "src": "1193:70:20", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3520, "nodeType": "StructuredDocumentation", "src": "1269:264:20", "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": 3529, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:20", "nodeType": "FunctionDefinition", "parameters": {"id": 3525, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3522, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:20", "nodeType": "VariableDeclaration", "scope": 3529, "src": "1557:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3521, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3524, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:20", "nodeType": "VariableDeclaration", "scope": 3529, "src": "1572:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3523, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:20"}, "returnParameters": {"id": 3528, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3527, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3529, "src": "1612:7:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3526, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:20"}, "scope": 3552, "src": "1538:83:20", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3530, "nodeType": "StructuredDocumentation", "src": "1627:642:20", "text": " @dev Sets `amount` as the allowance of `spender` over the 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": 3539, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:20", "nodeType": "FunctionDefinition", "parameters": {"id": 3535, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3532, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:20", "nodeType": "VariableDeclaration", "scope": 3539, "src": "2291:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3531, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3534, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:20", "nodeType": "VariableDeclaration", "scope": 3539, "src": "2308:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3533, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:20"}, "returnParameters": {"id": 3538, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3537, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3539, "src": "2342:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3536, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:20"}, "scope": 3552, "src": "2274:74:20", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3540, "nodeType": "StructuredDocumentation", "src": "2354:287:20", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` 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": 3551, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:20", "nodeType": "FunctionDefinition", "parameters": {"id": 3547, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3542, "mutability": "mutable", "name": "from", "nameLocation": "2685:4:20", "nodeType": "VariableDeclaration", "scope": 3551, "src": "2677:12:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3541, "name": "address", "nodeType": "ElementaryTypeName", "src": "2677:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3544, "mutability": "mutable", "name": "to", "nameLocation": "2707:2:20", "nodeType": "VariableDeclaration", "scope": 3551, "src": "2699:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3543, "name": "address", "nodeType": "ElementaryTypeName", "src": "2699:7:20", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3546, "mutability": "mutable", "name": "amount", "nameLocation": "2727:6:20", "nodeType": "VariableDeclaration", "scope": 3551, "src": "2719:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3545, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2719:7:20", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:72:20"}, "returnParameters": {"id": 3550, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3549, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3551, "src": "2758:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3548, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2758:4:20", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2757:6:20"}, "scope": 3552, "src": "2646:118:20", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 3553, "src": "202:2564:20", "usedErrors": []}], "src": "106:2661:20"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", "exportedSymbols": {"IERC20": [3552], "IERC20Metadata": [3577]}, "id": 3578, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3554, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "110:23:21"}, {"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "../IERC20.sol", "id": 3555, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 3578, "sourceUnit": 3553, "src": "135:23:21", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3557, "name": "IERC20", "nameLocations": ["305:6:21"], "nodeType": "IdentifierPath", "referencedDeclaration": 3552, "src": "305:6:21"}, "id": 3558, "nodeType": "InheritanceSpecifier", "src": "305:6:21"}], "canonicalName": "IERC20Metadata", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 3556, "nodeType": "StructuredDocumentation", "src": "160:116:21", "text": " @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"}, "fullyImplemented": false, "id": 3577, "linearizedBaseContracts": [3577, 3552], "name": "IERC20Metadata", "nameLocation": "287:14:21", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 3559, "nodeType": "StructuredDocumentation", "src": "318:54:21", "text": " @dev Returns the name of the token."}, "functionSelector": "06fdde03", "id": 3564, "implemented": false, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "386:4:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3560, "nodeType": "ParameterList", "parameters": [], "src": "390:2:21"}, "returnParameters": {"id": 3563, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3562, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3564, "src": "416:13:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3561, "name": "string", "nodeType": "ElementaryTypeName", "src": "416:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "415:15:21"}, "scope": 3577, "src": "377:54:21", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3565, "nodeType": "StructuredDocumentation", "src": "437:56:21", "text": " @dev Returns the symbol of the token."}, "functionSelector": "95d89b41", "id": 3570, "implemented": false, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "507:6:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3566, "nodeType": "ParameterList", "parameters": [], "src": "513:2:21"}, "returnParameters": {"id": 3569, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3568, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3570, "src": "539:13:21", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3567, "name": "string", "nodeType": "ElementaryTypeName", "src": "539:6:21", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "538:15:21"}, "scope": 3577, "src": "498:56:21", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 3571, "nodeType": "StructuredDocumentation", "src": "560:65:21", "text": " @dev Returns the decimals places of the token."}, "functionSelector": "313ce567", "id": 3576, "implemented": false, "kind": "function", "modifiers": [], "name": "decimals", "nameLocation": "639:8:21", "nodeType": "FunctionDefinition", "parameters": {"id": 3572, "nodeType": "ParameterList", "parameters": [], "src": "647:2:21"}, "returnParameters": {"id": 3575, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3574, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3576, "src": "673:5:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 3573, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "673:5:21", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "visibility": "internal"}], "src": "672:7:21"}, "scope": 3577, "src": "630:50:21", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 3578, "src": "277:405:21", "usedErrors": []}], "src": "110:573:21"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol", "exportedSymbols": {"Address": [5025], "Context": [5047], "ERC165": [5297], "ERC721": [4444], "IERC165": [5309], "IERC721": [4560], "IERC721Metadata": [4730], "IERC721Receiver": [4578], "Strings": [5273]}, "id": 4445, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3579, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "107:23:22"}, {"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", "file": "./IERC721.sol", "id": 3580, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 4561, "src": "132:23:22", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", "file": "./IERC721Receiver.sol", "id": 3581, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 4579, "src": "156:31:22", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", "file": "./extensions/IERC721Metadata.sol", "id": 3582, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 4731, "src": "188:42:22", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/utils/Address.sol", "file": "../../utils/Address.sol", "id": 3583, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 5026, "src": "231:33:22", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/utils/Context.sol", "file": "../../utils/Context.sol", "id": 3584, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 5048, "src": "265:33:22", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/utils/Strings.sol", "file": "../../utils/Strings.sol", "id": 3585, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 5274, "src": "299:33:22", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol", "file": "../../utils/introspection/ERC165.sol", "id": 3586, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4445, "sourceUnit": 5298, "src": "333:46:22", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3588, "name": "Context", "nameLocations": ["647:7:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 5047, "src": "647:7:22"}, "id": 3589, "nodeType": "InheritanceSpecifier", "src": "647:7:22"}, {"baseName": {"id": 3590, "name": "ERC165", "nameLocations": ["656:6:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 5297, "src": "656:6:22"}, "id": 3591, "nodeType": "InheritanceSpecifier", "src": "656:6:22"}, {"baseName": {"id": 3592, "name": "IERC721", "nameLocations": ["664:7:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 4560, "src": "664:7:22"}, "id": 3593, "nodeType": "InheritanceSpecifier", "src": "664:7:22"}, {"baseName": {"id": 3594, "name": "IERC721Metadata", "nameLocations": ["673:15:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 4730, "src": "673:15:22"}, "id": 3595, "nodeType": "InheritanceSpecifier", "src": "673:15:22"}], "canonicalName": "ERC721", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 3587, "nodeType": "StructuredDocumentation", "src": "381:246:22", "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."}, "fullyImplemented": true, "id": 4444, "linearizedBaseContracts": [4444, 4730, 4560, 5297, 5309, 5047], "name": "ERC721", "nameLocation": "637:6:22", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 3598, "libraryName": {"id": 3596, "name": "Address", "nameLocations": ["701:7:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 5025, "src": "701:7:22"}, "nodeType": "UsingForDirective", "src": "695:26:22", "typeName": {"id": 3597, "name": "address", "nodeType": "ElementaryTypeName", "src": "713:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, {"global": false, "id": 3601, "libraryName": {"id": 3599, "name": "Strings", "nameLocations": ["732:7:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 5273, "src": "732:7:22"}, "nodeType": "UsingForDirective", "src": "726:26:22", "typeName": {"id": 3600, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "744:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"constant": false, "id": 3603, "mutability": "mutable", "name": "_name", "nameLocation": "791:5:22", "nodeType": "VariableDeclaration", "scope": 4444, "src": "776:20:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 3602, "name": "string", "nodeType": "ElementaryTypeName", "src": "776:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"constant": false, "id": 3605, "mutability": "mutable", "name": "_symbol", "nameLocation": "838:7:22", "nodeType": "VariableDeclaration", "scope": 4444, "src": "823:22:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 3604, "name": "string", "nodeType": "ElementaryTypeName", "src": "823:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"constant": false, "id": 3609, "mutability": "mutable", "name": "_owners", "nameLocation": "934:7:22", "nodeType": "VariableDeclaration", "scope": 4444, "src": "898:43:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "typeName": {"id": 3608, "keyType": {"id": 3606, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "906:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "898:27:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "valueType": {"id": 3607, "name": "address", "nodeType": "ElementaryTypeName", "src": "917:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "private"}, {"constant": false, "id": 3613, "mutability": "mutable", "name": "_balances", "nameLocation": "1028:9:22", "nodeType": "VariableDeclaration", "scope": 4444, "src": "992:45:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "typeName": {"id": 3612, "keyType": {"id": 3610, "name": "address", "nodeType": "ElementaryTypeName", "src": "1000:7:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "992:27:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "valueType": {"id": 3611, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1011:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, "visibility": "private"}, {"constant": false, "id": 3617, "mutability": "mutable", "name": "_tokenApprovals", "nameLocation": "1129:15:22", "nodeType": "VariableDeclaration", "scope": 4444, "src": "1093:51:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "typeName": {"id": 3616, "keyType": {"id": 3614, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1101:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "1093:27:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "valueType": {"id": 3615, "name": "address", "nodeType": "ElementaryTypeName", "src": "1112:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "private"}, {"constant": false, "id": 3623, "mutability": "mutable", "name": "_operatorApprovals", "nameLocation": "1252:18:22", "nodeType": "VariableDeclaration", "scope": 4444, "src": "1199:71:22", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}, "typeName": {"id": 3622, "keyType": {"id": 3618, "name": "address", "nodeType": "ElementaryTypeName", "src": "1207:7:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1199:44:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}, "valueType": {"id": 3621, "keyType": {"id": 3619, "name": "address", "nodeType": "ElementaryTypeName", "src": "1226:7:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1218:24:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}, "valueType": {"id": 3620, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1237:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}}}, "visibility": "private"}, {"body": {"id": 3639, "nodeType": "Block", "src": "1446:57:22", "statements": [{"expression": {"id": 3633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3631, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3603, "src": "1456:5:22", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 3632, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3626, "src": "1464:5:22", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1456:13:22", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 3634, "nodeType": "ExpressionStatement", "src": "1456:13:22"}, {"expression": {"id": 3637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3635, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3605, "src": "1479:7:22", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 3636, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3628, "src": "1489:7:22", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1479:17:22", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 3638, "nodeType": "ExpressionStatement", "src": "1479:17:22"}]}, "documentation": {"id": 3624, "nodeType": "StructuredDocumentation", "src": "1277:108:22", "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."}, "id": 3640, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 3629, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3626, "mutability": "mutable", "name": "name_", "nameLocation": "1416:5:22", "nodeType": "VariableDeclaration", "scope": 3640, "src": "1402:19:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3625, "name": "string", "nodeType": "ElementaryTypeName", "src": "1402:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 3628, "mutability": "mutable", "name": "symbol_", "nameLocation": "1437:7:22", "nodeType": "VariableDeclaration", "scope": 3640, "src": "1423:21:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3627, "name": "string", "nodeType": "ElementaryTypeName", "src": "1423:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1401:44:22"}, "returnParameters": {"id": 3630, "nodeType": "ParameterList", "parameters": [], "src": "1446:0:22"}, "scope": 4444, "src": "1390:113:22", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"baseFunctions": [5296, 5308], "body": {"id": 3670, "nodeType": "Block", "src": "1678:192:22", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 3668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 3663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 3656, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3651, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3643, "src": "1707:11:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 3653, "name": "IERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4560, "src": "1727:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721_$4560_$", "typeString": "type(contract IERC721)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC721_$4560_$", "typeString": "type(contract IERC721)"}], "id": 3652, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1722:4:22", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 3654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1722:13:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$4560", "typeString": "type(contract IERC721)"}}, "id": 3655, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1736:11:22", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1722:25:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "1707:40:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 3662, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3657, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3643, "src": "1763:11:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 3659, "name": "IERC721Metadata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4730, "src": "1783:15:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$4730_$", "typeString": "type(contract IERC721Metadata)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$4730_$", "typeString": "type(contract IERC721Metadata)"}], "id": 3658, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1778:4:22", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 3660, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1778:21:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$4730", "typeString": "type(contract IERC721Metadata)"}}, "id": 3661, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1800:11:22", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1778:33:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "1763:48:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1707:104:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 3666, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3643, "src": "1851:11:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"id": 3664, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "1827:5:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_ERC721_$4444_$", "typeString": "type(contract super ERC721)"}}, "id": 3665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1833:17:22", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 5296, "src": "1827:23:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function (bytes4) view returns (bool)"}}, "id": 3667, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1827:36:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1707:156:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 3650, "id": 3669, "nodeType": "Return", "src": "1688:175:22"}]}, "documentation": {"id": 3641, "nodeType": "StructuredDocumentation", "src": "1509:56:22", "text": " @dev See {IERC165-supportsInterface}."}, "functionSelector": "01ffc9a7", "id": 3671, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "1579:17:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3647, "nodeType": "OverrideSpecifier", "overrides": [{"id": 3645, "name": "ERC165", "nameLocations": ["1646:6:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 5297, "src": "1646:6:22"}, {"id": 3646, "name": "IERC165", "nameLocations": ["1654:7:22"], "nodeType": "IdentifierPath", "referencedDeclaration": 5309, "src": "1654:7:22"}], "src": "1637:25:22"}, "parameters": {"id": 3644, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3643, "mutability": "mutable", "name": "interfaceId", "nameLocation": "1604:11:22", "nodeType": "VariableDeclaration", "scope": 3671, "src": "1597:18:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 3642, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1597:6:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "1596:20:22"}, "returnParameters": {"id": 3650, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3649, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3671, "src": "1672:4:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3648, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1672:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1671:6:22"}, "scope": 4444, "src": "1570:300:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4485], "body": {"id": 3694, "nodeType": "Block", "src": "2010:123:22", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3686, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3681, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3674, "src": "2028:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3684, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2045:1:22", "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": 3683, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2037:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3682, "name": "address", "nodeType": "ElementaryTypeName", "src": "2037:7:22", "typeDescriptions": {}}}, "id": 3685, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2037:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2028:19:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572", "id": 3687, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2049:43:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159", "typeString": "literal_string \"ERC721: address zero is not a valid owner\""}, "value": "ERC721: address zero is not a valid owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159", "typeString": "literal_string \"ERC721: address zero is not a valid owner\""}], "id": 3680, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2020:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3688, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2020:73:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3689, "nodeType": "ExpressionStatement", "src": "2020:73:22"}, {"expression": {"baseExpression": {"id": 3690, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3613, "src": "2110:9:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 3692, "indexExpression": {"id": 3691, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3674, "src": "2120:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2110:16:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 3679, "id": 3693, "nodeType": "Return", "src": "2103:23:22"}]}, "documentation": {"id": 3672, "nodeType": "StructuredDocumentation", "src": "1876:48:22", "text": " @dev See {IERC721-balanceOf}."}, "functionSelector": "70a08231", "id": 3695, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "1938:9:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3676, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1983:8:22"}, "parameters": {"id": 3675, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3674, "mutability": "mutable", "name": "owner", "nameLocation": "1956:5:22", "nodeType": "VariableDeclaration", "scope": 3695, "src": "1948:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3673, "name": "address", "nodeType": "ElementaryTypeName", "src": "1948:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1947:15:22"}, "returnParameters": {"id": 3679, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3678, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3695, "src": "2001:7:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3677, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2001:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2000:9:22"}, "scope": 4444, "src": "1929:204:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4493], "body": {"id": 3722, "nodeType": "Block", "src": "2271:137:22", "statements": [{"assignments": [3705], "declarations": [{"constant": false, "id": 3705, "mutability": "mutable", "name": "owner", "nameLocation": "2289:5:22", "nodeType": "VariableDeclaration", "scope": 3722, "src": "2281:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3704, "name": "address", "nodeType": "ElementaryTypeName", "src": "2281:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3709, "initialValue": {"baseExpression": {"id": 3706, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "2297:7:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 3708, "indexExpression": {"id": 3707, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3698, "src": "2305:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2297:16:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2281:32:22"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3716, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3711, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3705, "src": "2331:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 3714, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2348:1:22", "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": 3713, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2340:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 3712, "name": "address", "nodeType": "ElementaryTypeName", "src": "2340:7:22", "typeDescriptions": {}}}, "id": 3715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2340:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2331:19:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20696e76616c696420746f6b656e204944", "id": 3717, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2352:26:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}, "value": "ERC721: invalid token ID"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}], "id": 3710, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2323:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3718, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2323:56:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3719, "nodeType": "ExpressionStatement", "src": "2323:56:22"}, {"expression": {"id": 3720, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3705, "src": "2396:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 3703, "id": 3721, "nodeType": "Return", "src": "2389:12:22"}]}, "documentation": {"id": 3696, "nodeType": "StructuredDocumentation", "src": "2139:46:22", "text": " @dev See {IERC721-ownerOf}."}, "functionSelector": "6352211e", "id": 3723, "implemented": true, "kind": "function", "modifiers": [], "name": "ownerOf", "nameLocation": "2199:7:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3700, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2244:8:22"}, "parameters": {"id": 3699, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3698, "mutability": "mutable", "name": "tokenId", "nameLocation": "2215:7:22", "nodeType": "VariableDeclaration", "scope": 3723, "src": "2207:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3697, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2207:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2206:17:22"}, "returnParameters": {"id": 3703, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3702, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3723, "src": "2262:7:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3701, "name": "address", "nodeType": "ElementaryTypeName", "src": "2262:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2261:9:22"}, "scope": 4444, "src": "2190:218:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4715], "body": {"id": 3732, "nodeType": "Block", "src": "2539:29:22", "statements": [{"expression": {"id": 3730, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3603, "src": "2556:5:22", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 3729, "id": 3731, "nodeType": "Return", "src": "2549:12:22"}]}, "documentation": {"id": 3724, "nodeType": "StructuredDocumentation", "src": "2414:51:22", "text": " @dev See {IERC721Metadata-name}."}, "functionSelector": "06fdde03", "id": 3733, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "2479:4:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3726, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2506:8:22"}, "parameters": {"id": 3725, "nodeType": "ParameterList", "parameters": [], "src": "2483:2:22"}, "returnParameters": {"id": 3729, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3728, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3733, "src": "2524:13:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3727, "name": "string", "nodeType": "ElementaryTypeName", "src": "2524:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2523:15:22"}, "scope": 4444, "src": "2470:98:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4721], "body": {"id": 3742, "nodeType": "Block", "src": "2703:31:22", "statements": [{"expression": {"id": 3740, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3605, "src": "2720:7:22", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 3739, "id": 3741, "nodeType": "Return", "src": "2713:14:22"}]}, "documentation": {"id": 3734, "nodeType": "StructuredDocumentation", "src": "2574:53:22", "text": " @dev See {IERC721Metadata-symbol}."}, "functionSelector": "95d89b41", "id": 3743, "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "2641:6:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3736, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2670:8:22"}, "parameters": {"id": 3735, "nodeType": "ParameterList", "parameters": [], "src": "2647:2:22"}, "returnParameters": {"id": 3739, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3738, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3743, "src": "2688:13:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3737, "name": "string", "nodeType": "ElementaryTypeName", "src": "2688:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2687:15:22"}, "scope": 4444, "src": "2632:102:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4729], "body": {"id": 3781, "nodeType": "Block", "src": "2888:188:22", "statements": [{"expression": {"arguments": [{"id": 3753, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3746, "src": "2913:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3752, "name": "_requireMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4359, "src": "2898:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view"}}, "id": 3754, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2898:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3755, "nodeType": "ExpressionStatement", "src": "2898:23:22"}, {"assignments": [3757], "declarations": [{"constant": false, "id": 3757, "mutability": "mutable", "name": "baseURI", "nameLocation": "2946:7:22", "nodeType": "VariableDeclaration", "scope": 3781, "src": "2932:21:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3756, "name": "string", "nodeType": "ElementaryTypeName", "src": "2932:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 3760, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 3758, "name": "_baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3791, "src": "2956:8:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", "typeString": "function () view returns (string memory)"}}, "id": 3759, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2956:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2932:34:22"}, {"expression": {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3767, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 3763, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3757, "src": "2989:7:22", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 3762, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2983:5:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 3761, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2983:5:22", "typeDescriptions": {}}}, "id": 3764, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2983:14:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 3765, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2998:6:22", "memberName": "length", "nodeType": "MemberAccess", "src": "2983:21:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3007:1:22", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2983:25:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"hexValue": "", "id": 3778, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3067:2:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}, "id": 3779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "2983:86:22", "trueExpression": {"arguments": [{"arguments": [{"id": 3772, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3757, "src": "3035:7:22", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 3773, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3746, "src": "3044:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3052:8:22", "memberName": "toString", "nodeType": "MemberAccess", "referencedDeclaration": 5135, "src": "3044:16:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$", "typeString": "function (uint256) pure returns (string memory)"}}, "id": 3775, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3044:18:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "expression": {"id": 3770, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "3018:3:22", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 3771, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "3022:12:22", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "3018:16:22", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 3776, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3018:45:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 3769, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3011:6:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 3768, "name": "string", "nodeType": "ElementaryTypeName", "src": "3011:6:22", "typeDescriptions": {}}}, "id": 3777, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3011:53:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 3751, "id": 3780, "nodeType": "Return", "src": "2976:93:22"}]}, "documentation": {"id": 3744, "nodeType": "StructuredDocumentation", "src": "2740:55:22", "text": " @dev See {IERC721Metadata-tokenURI}."}, "functionSelector": "c87b56dd", "id": 3782, "implemented": true, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "2809:8:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3748, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2855:8:22"}, "parameters": {"id": 3747, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3746, "mutability": "mutable", "name": "tokenId", "nameLocation": "2826:7:22", "nodeType": "VariableDeclaration", "scope": 3782, "src": "2818:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3745, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2818:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2817:17:22"}, "returnParameters": {"id": 3751, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3750, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3782, "src": "2873:13:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3749, "name": "string", "nodeType": "ElementaryTypeName", "src": "2873:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2872:15:22"}, "scope": 4444, "src": "2800:276:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 3790, "nodeType": "Block", "src": "3384:26:22", "statements": [{"expression": {"hexValue": "", "id": 3788, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3401:2:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}, "functionReturnParameters": 3787, "id": 3789, "nodeType": "Return", "src": "3394:9:22"}]}, "documentation": {"id": 3783, "nodeType": "StructuredDocumentation", "src": "3082:231:22", "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."}, "id": 3791, "implemented": true, "kind": "function", "modifiers": [], "name": "_baseURI", "nameLocation": "3327:8:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3784, "nodeType": "ParameterList", "parameters": [], "src": "3335:2:22"}, "returnParameters": {"id": 3787, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3786, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3791, "src": "3369:13:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 3785, "name": "string", "nodeType": "ElementaryTypeName", "src": "3369:6:22", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3368:15:22"}, "scope": 4444, "src": "3318:92:22", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"baseFunctions": [4533], "body": {"id": 3833, "nodeType": "Block", "src": "3537:337:22", "statements": [{"assignments": [3801], "declarations": [{"constant": false, "id": 3801, "mutability": "mutable", "name": "owner", "nameLocation": "3555:5:22", "nodeType": "VariableDeclaration", "scope": 3833, "src": "3547:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3800, "name": "address", "nodeType": "ElementaryTypeName", "src": "3547:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 3806, "initialValue": {"arguments": [{"id": 3804, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3796, "src": "3578:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 3802, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4444, "src": "3563:6:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721_$4444_$", "typeString": "type(contract ERC721)"}}, "id": 3803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3570:7:22", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 3723, "src": "3563:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 3805, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3563:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "3547:39:22"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3810, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3808, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3794, "src": "3604:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 3809, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3801, "src": "3610:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3604:11:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572", "id": 3811, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3617:35:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", "typeString": "literal_string \"ERC721: approval to current owner\""}, "value": "ERC721: approval to current owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", "typeString": "literal_string \"ERC721: approval to current owner\""}], "id": 3807, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3596:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3812, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3596:57:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3813, "nodeType": "ExpressionStatement", "src": "3596:57:22"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 3824, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 3818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 3815, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "3685:10:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3816, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3685:12:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 3817, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3801, "src": "3701:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3685:21:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 3820, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3801, "src": "3727:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [], "expression": {"argumentTypes": [], "id": 3821, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "3734:10:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3822, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3734:12:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 3819, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3887, "src": "3710:16:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)"}}, "id": 3823, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3710:37:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3685:62:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c", "id": 3825, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3761:64:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304", "typeString": "literal_string \"ERC721: approve caller is not token owner nor approved for all\""}, "value": "ERC721: approve caller is not token owner nor approved for all"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304", "typeString": "literal_string \"ERC721: approve caller is not token owner nor approved for all\""}], "id": 3814, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3664:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3826, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3664:171:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3827, "nodeType": "ExpressionStatement", "src": "3664:171:22"}, {"expression": {"arguments": [{"id": 3829, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3794, "src": "3855:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3830, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3796, "src": "3859:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3828, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4313, "src": "3846:8:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 3831, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3846:21:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3832, "nodeType": "ExpressionStatement", "src": "3846:21:22"}]}, "documentation": {"id": 3792, "nodeType": "StructuredDocumentation", "src": "3416:46:22", "text": " @dev See {IERC721-approve}."}, "functionSelector": "095ea7b3", "id": 3834, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "3476:7:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3798, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3528:8:22"}, "parameters": {"id": 3797, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3794, "mutability": "mutable", "name": "to", "nameLocation": "3492:2:22", "nodeType": "VariableDeclaration", "scope": 3834, "src": "3484:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3793, "name": "address", "nodeType": "ElementaryTypeName", "src": "3484:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3796, "mutability": "mutable", "name": "tokenId", "nameLocation": "3504:7:22", "nodeType": "VariableDeclaration", "scope": 3834, "src": "3496:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3795, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3496:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3483:29:22"}, "returnParameters": {"id": 3799, "nodeType": "ParameterList", "parameters": [], "src": "3537:0:22"}, "scope": 4444, "src": "3467:407:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [4549], "body": {"id": 3851, "nodeType": "Block", "src": "4020:82:22", "statements": [{"expression": {"arguments": [{"id": 3844, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3837, "src": "4045:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3843, "name": "_requireMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4359, "src": "4030:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view"}}, "id": 3845, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4030:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3846, "nodeType": "ExpressionStatement", "src": "4030:23:22"}, {"expression": {"baseExpression": {"id": 3847, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3617, "src": "4071:15:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 3849, "indexExpression": {"id": 3848, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3837, "src": "4087:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4071:24:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 3842, "id": 3850, "nodeType": "Return", "src": "4064:31:22"}]}, "documentation": {"id": 3835, "nodeType": "StructuredDocumentation", "src": "3880:50:22", "text": " @dev See {IERC721-getApproved}."}, "functionSelector": "081812fc", "id": 3852, "implemented": true, "kind": "function", "modifiers": [], "name": "getApproved", "nameLocation": "3944:11:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3839, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3993:8:22"}, "parameters": {"id": 3838, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3837, "mutability": "mutable", "name": "tokenId", "nameLocation": "3964:7:22", "nodeType": "VariableDeclaration", "scope": 3852, "src": "3956:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3836, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3956:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3955:17:22"}, "returnParameters": {"id": 3842, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3841, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3852, "src": "4011:7:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3840, "name": "address", "nodeType": "ElementaryTypeName", "src": "4011:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4010:9:22"}, "scope": 4444, "src": "3935:167:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4541], "body": {"id": 3868, "nodeType": "Block", "src": "4253:69:22", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 3862, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "4282:10:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3863, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4282:12:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3864, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3855, "src": "4296:8:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3865, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3857, "src": "4306:8:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 3861, "name": "_setApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4345, "src": "4263:18:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)"}}, "id": 3866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4263:52:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3867, "nodeType": "ExpressionStatement", "src": "4263:52:22"}]}, "documentation": {"id": 3853, "nodeType": "StructuredDocumentation", "src": "4108:56:22", "text": " @dev See {IERC721-setApprovalForAll}."}, "functionSelector": "a22cb465", "id": 3869, "implemented": true, "kind": "function", "modifiers": [], "name": "setApprovalForAll", "nameLocation": "4178:17:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3859, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4244:8:22"}, "parameters": {"id": 3858, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3855, "mutability": "mutable", "name": "operator", "nameLocation": "4204:8:22", "nodeType": "VariableDeclaration", "scope": 3869, "src": "4196:16:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3854, "name": "address", "nodeType": "ElementaryTypeName", "src": "4196:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3857, "mutability": "mutable", "name": "approved", "nameLocation": "4219:8:22", "nodeType": "VariableDeclaration", "scope": 3869, "src": "4214:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3856, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4214:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4195:33:22"}, "returnParameters": {"id": 3860, "nodeType": "ParameterList", "parameters": [], "src": "4253:0:22"}, "scope": 4444, "src": "4169:153:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [4559], "body": {"id": 3886, "nodeType": "Block", "src": "4491:59:22", "statements": [{"expression": {"baseExpression": {"baseExpression": {"id": 3880, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3623, "src": "4508:18:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}}, "id": 3882, "indexExpression": {"id": 3881, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3872, "src": "4527:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4508:25:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 3884, "indexExpression": {"id": 3883, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "4534:8:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4508:35:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 3879, "id": 3885, "nodeType": "Return", "src": "4501:42:22"}]}, "documentation": {"id": 3870, "nodeType": "StructuredDocumentation", "src": "4328:55:22", "text": " @dev See {IERC721-isApprovedForAll}."}, "functionSelector": "e985e9c5", "id": 3887, "implemented": true, "kind": "function", "modifiers": [], "name": "isApprovedForAll", "nameLocation": "4397:16:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3876, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4467:8:22"}, "parameters": {"id": 3875, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3872, "mutability": "mutable", "name": "owner", "nameLocation": "4422:5:22", "nodeType": "VariableDeclaration", "scope": 3887, "src": "4414:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3871, "name": "address", "nodeType": "ElementaryTypeName", "src": "4414:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3874, "mutability": "mutable", "name": "operator", "nameLocation": "4437:8:22", "nodeType": "VariableDeclaration", "scope": 3887, "src": "4429:16:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3873, "name": "address", "nodeType": "ElementaryTypeName", "src": "4429:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4413:33:22"}, "returnParameters": {"id": 3879, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3878, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3887, "src": "4485:4:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3877, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4485:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4484:6:22"}, "scope": 4444, "src": "4388:162:22", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [4525], "body": {"id": 3913, "nodeType": "Block", "src": "4731:208:22", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 3900, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "4820:10:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3901, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4820:12:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3902, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3894, "src": "4834:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3899, "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4044, "src": "4801:18:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)"}}, "id": 3903, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4801:41:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564", "id": 3904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4844:48:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}, "value": "ERC721: caller is not token owner nor approved"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}], "id": 3898, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4793:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3905, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4793:100:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3906, "nodeType": "ExpressionStatement", "src": "4793:100:22"}, {"expression": {"arguments": [{"id": 3908, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3890, "src": "4914:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3909, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3892, "src": "4920:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3910, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3894, "src": "4924:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3907, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4289, "src": "4904:9:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3911, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4904:28:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3912, "nodeType": "ExpressionStatement", "src": "4904:28:22"}]}, "documentation": {"id": 3888, "nodeType": "StructuredDocumentation", "src": "4556:51:22", "text": " @dev See {IERC721-transferFrom}."}, "functionSelector": "23b872dd", "id": 3914, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "4621:12:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3896, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4722:8:22"}, "parameters": {"id": 3895, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3890, "mutability": "mutable", "name": "from", "nameLocation": "4651:4:22", "nodeType": "VariableDeclaration", "scope": 3914, "src": "4643:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3889, "name": "address", "nodeType": "ElementaryTypeName", "src": "4643:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3892, "mutability": "mutable", "name": "to", "nameLocation": "4673:2:22", "nodeType": "VariableDeclaration", "scope": 3914, "src": "4665:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3891, "name": "address", "nodeType": "ElementaryTypeName", "src": "4665:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3894, "mutability": "mutable", "name": "tokenId", "nameLocation": "4693:7:22", "nodeType": "VariableDeclaration", "scope": 3914, "src": "4685:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3893, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4685:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4633:73:22"}, "returnParameters": {"id": 3897, "nodeType": "ParameterList", "parameters": [], "src": "4731:0:22"}, "scope": 4444, "src": "4612:327:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [4515], "body": {"id": 3932, "nodeType": "Block", "src": "5128:56:22", "statements": [{"expression": {"arguments": [{"id": 3926, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3917, "src": "5155:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3927, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3919, "src": "5161:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3928, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3921, "src": "5165:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "", "id": 3929, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5174:2:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "id": 3925, "name": "safeTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [3933, 3963], "referencedDeclaration": 3963, "src": "5138:16:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)"}}, "id": 3930, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5138:39:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3931, "nodeType": "ExpressionStatement", "src": "5138:39:22"}]}, "documentation": {"id": 3915, "nodeType": "StructuredDocumentation", "src": "4945:55:22", "text": " @dev See {IERC721-safeTransferFrom}."}, "functionSelector": "42842e0e", "id": 3933, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "5014:16:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3923, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5119:8:22"}, "parameters": {"id": 3922, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3917, "mutability": "mutable", "name": "from", "nameLocation": "5048:4:22", "nodeType": "VariableDeclaration", "scope": 3933, "src": "5040:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3916, "name": "address", "nodeType": "ElementaryTypeName", "src": "5040:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3919, "mutability": "mutable", "name": "to", "nameLocation": "5070:2:22", "nodeType": "VariableDeclaration", "scope": 3933, "src": "5062:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3918, "name": "address", "nodeType": "ElementaryTypeName", "src": "5062:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3921, "mutability": "mutable", "name": "tokenId", "nameLocation": "5090:7:22", "nodeType": "VariableDeclaration", "scope": 3933, "src": "5082:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3920, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5082:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5030:73:22"}, "returnParameters": {"id": 3924, "nodeType": "ParameterList", "parameters": [], "src": "5128:0:22"}, "scope": 4444, "src": "5005:179:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [4505], "body": {"id": 3962, "nodeType": "Block", "src": "5400:165:22", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 3948, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "5437:10:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 3949, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5437:12:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3950, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3940, "src": "5451:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3947, "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4044, "src": "5418:18:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)"}}, "id": 3951, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5418:41:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564", "id": 3952, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5461:48:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}, "value": "ERC721: caller is not token owner nor approved"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b", "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""}], "id": 3946, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5410:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3953, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5410:100:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3954, "nodeType": "ExpressionStatement", "src": "5410:100:22"}, {"expression": {"arguments": [{"id": 3956, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3936, "src": "5534:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3957, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3938, "src": "5540:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3958, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3940, "src": "5544:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 3959, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3942, "src": "5553:4:22", "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"}], "id": 3955, "name": "_safeTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3992, "src": "5520:13:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)"}}, "id": 3960, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5520:38:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3961, "nodeType": "ExpressionStatement", "src": "5520:38:22"}]}, "documentation": {"id": 3934, "nodeType": "StructuredDocumentation", "src": "5190:55:22", "text": " @dev See {IERC721-safeTransferFrom}."}, "functionSelector": "b88d4fde", "id": 3963, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "5259:16:22", "nodeType": "FunctionDefinition", "overrides": {"id": 3944, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5391:8:22"}, "parameters": {"id": 3943, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3936, "mutability": "mutable", "name": "from", "nameLocation": "5293:4:22", "nodeType": "VariableDeclaration", "scope": 3963, "src": "5285:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3935, "name": "address", "nodeType": "ElementaryTypeName", "src": "5285:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3938, "mutability": "mutable", "name": "to", "nameLocation": "5315:2:22", "nodeType": "VariableDeclaration", "scope": 3963, "src": "5307:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3937, "name": "address", "nodeType": "ElementaryTypeName", "src": "5307:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3940, "mutability": "mutable", "name": "tokenId", "nameLocation": "5335:7:22", "nodeType": "VariableDeclaration", "scope": 3963, "src": "5327:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3939, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5327:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 3942, "mutability": "mutable", "name": "data", "nameLocation": "5365:4:22", "nodeType": "VariableDeclaration", "scope": 3963, "src": "5352:17:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3941, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5352:5:22", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5275:100:22"}, "returnParameters": {"id": 3945, "nodeType": "ParameterList", "parameters": [], "src": "5400:0:22"}, "scope": 4444, "src": "5250:315:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 3991, "nodeType": "Block", "src": "6566:165:22", "statements": [{"expression": {"arguments": [{"id": 3976, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3966, "src": "6586:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3977, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3968, "src": "6592:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3978, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3970, "src": "6596:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3975, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4289, "src": "6576:9:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 3979, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6576:28:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3980, "nodeType": "ExpressionStatement", "src": "6576:28:22"}, {"expression": {"arguments": [{"arguments": [{"id": 3983, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3966, "src": "6645:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3984, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3968, "src": "6651:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 3985, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3970, "src": "6655:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 3986, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3972, "src": "6664:4:22", "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"}], "id": 3982, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4421, "src": "6622:22:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)"}}, "id": 3987, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6622:47:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 3988, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6671:52:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}, "value": "ERC721: transfer to non ERC721Receiver implementer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}], "id": 3981, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6614:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 3989, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6614:110:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 3990, "nodeType": "ExpressionStatement", "src": "6614:110:22"}]}, "documentation": {"id": 3964, "nodeType": "StructuredDocumentation", "src": "5571:850:22", "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "id": 3992, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeTransfer", "nameLocation": "6435:13:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3973, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3966, "mutability": "mutable", "name": "from", "nameLocation": "6466:4:22", "nodeType": "VariableDeclaration", "scope": 3992, "src": "6458:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3965, "name": "address", "nodeType": "ElementaryTypeName", "src": "6458:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3968, "mutability": "mutable", "name": "to", "nameLocation": "6488:2:22", "nodeType": "VariableDeclaration", "scope": 3992, "src": "6480:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 3967, "name": "address", "nodeType": "ElementaryTypeName", "src": "6480:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 3970, "mutability": "mutable", "name": "tokenId", "nameLocation": "6508:7:22", "nodeType": "VariableDeclaration", "scope": 3992, "src": "6500:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3969, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6500:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 3972, "mutability": "mutable", "name": "data", "nameLocation": "6538:4:22", "nodeType": "VariableDeclaration", "scope": 3992, "src": "6525:17:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 3971, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6525:5:22", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6448:100:22"}, "returnParameters": {"id": 3974, "nodeType": "ParameterList", "parameters": [], "src": "6566:0:22"}, "scope": 4444, "src": "6426:305:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4009, "nodeType": "Block", "src": "7105:54:22", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 4000, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "7122:7:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 4002, "indexExpression": {"id": 4001, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3995, "src": "7130:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7122:16:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 4005, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7150:1:22", "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": 4004, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7142:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4003, "name": "address", "nodeType": "ElementaryTypeName", "src": "7142:7:22", "typeDescriptions": {}}}, "id": 4006, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7142:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7122:30:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 3999, "id": 4008, "nodeType": "Return", "src": "7115:37:22"}]}, "documentation": {"id": 3993, "nodeType": "StructuredDocumentation", "src": "6737:292:22", "text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."}, "id": 4010, "implemented": true, "kind": "function", "modifiers": [], "name": "_exists", "nameLocation": "7043:7:22", "nodeType": "FunctionDefinition", "parameters": {"id": 3996, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3995, "mutability": "mutable", "name": "tokenId", "nameLocation": "7059:7:22", "nodeType": "VariableDeclaration", "scope": 4010, "src": "7051:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3994, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7051:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7050:17:22"}, "returnParameters": {"id": 3999, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3998, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4010, "src": "7099:4:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3997, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7099:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "7098:6:22"}, "scope": 4444, "src": "7034:125:22", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 4043, "nodeType": "Block", "src": "7416:162:22", "statements": [{"assignments": [4021], "declarations": [{"constant": false, "id": 4021, "mutability": "mutable", "name": "owner", "nameLocation": "7434:5:22", "nodeType": "VariableDeclaration", "scope": 4043, "src": "7426:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4020, "name": "address", "nodeType": "ElementaryTypeName", "src": "7426:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 4026, "initialValue": {"arguments": [{"id": 4024, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4015, "src": "7457:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 4022, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4444, "src": "7442:6:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721_$4444_$", "typeString": "type(contract ERC721)"}}, "id": 4023, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7449:7:22", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 3723, "src": "7442:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 4025, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7442:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "7426:39:22"}, {"expression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 4040, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 4034, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 4027, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4013, "src": "7483:7:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 4028, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4021, "src": "7494:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7483:16:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 4031, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4021, "src": "7520:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4032, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4013, "src": "7527:7:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 4030, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3887, "src": "7503:16:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)"}}, "id": 4033, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7503:32:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7483:52:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4039, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 4036, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4015, "src": "7551:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4035, "name": "getApproved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3852, "src": "7539:11:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 4037, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7539:20:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 4038, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4013, "src": "7563:7:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7539:31:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "7483:87:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 4041, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "7482:89:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 4019, "id": 4042, "nodeType": "Return", "src": "7475:96:22"}]}, "documentation": {"id": 4011, "nodeType": "StructuredDocumentation", "src": "7165:147:22", "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."}, "id": 4044, "implemented": true, "kind": "function", "modifiers": [], "name": "_isApprovedOrOwner", "nameLocation": "7326:18:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4016, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4013, "mutability": "mutable", "name": "spender", "nameLocation": "7353:7:22", "nodeType": "VariableDeclaration", "scope": 4044, "src": "7345:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4012, "name": "address", "nodeType": "ElementaryTypeName", "src": "7345:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4015, "mutability": "mutable", "name": "tokenId", "nameLocation": "7370:7:22", "nodeType": "VariableDeclaration", "scope": 4044, "src": "7362:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4014, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7362:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7344:34:22"}, "returnParameters": {"id": 4019, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4018, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4044, "src": "7410:4:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4017, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7410:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "7409:6:22"}, "scope": 4444, "src": "7317:261:22", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 4058, "nodeType": "Block", "src": "7973:43:22", "statements": [{"expression": {"arguments": [{"id": 4053, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4047, "src": "7993:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4054, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4049, "src": "7997:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "", "id": 4055, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8006:2:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "id": 4052, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [4059, 4088], "referencedDeclaration": 4088, "src": "7983:9:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,uint256,bytes memory)"}}, "id": 4056, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7983:26:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4057, "nodeType": "ExpressionStatement", "src": "7983:26:22"}]}, "documentation": {"id": 4045, "nodeType": "StructuredDocumentation", "src": "7584:319:22", "text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "id": 4059, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "7917:9:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4047, "mutability": "mutable", "name": "to", "nameLocation": "7935:2:22", "nodeType": "VariableDeclaration", "scope": 4059, "src": "7927:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4046, "name": "address", "nodeType": "ElementaryTypeName", "src": "7927:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4049, "mutability": "mutable", "name": "tokenId", "nameLocation": "7947:7:22", "nodeType": "VariableDeclaration", "scope": 4059, "src": "7939:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7939:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7926:29:22"}, "returnParameters": {"id": 4051, "nodeType": "ParameterList", "parameters": [], "src": "7973:0:22"}, "scope": 4444, "src": "7908:108:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4087, "nodeType": "Block", "src": "8351:195:22", "statements": [{"expression": {"arguments": [{"id": 4070, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4062, "src": "8367:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4071, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4064, "src": "8371:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4069, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4154, "src": "8361:5:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 4072, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8361:18:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4073, "nodeType": "ExpressionStatement", "src": "8361:18:22"}, {"expression": {"arguments": [{"arguments": [{"arguments": [{"hexValue": "30", "id": 4078, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8441:1:22", "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": 4077, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8433:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4076, "name": "address", "nodeType": "ElementaryTypeName", "src": "8433:7:22", "typeDescriptions": {}}}, "id": 4079, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8433:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4080, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4062, "src": "8445:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4081, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4064, "src": "8449:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 4082, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4066, "src": "8458:4:22", "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"}], "id": 4075, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4421, "src": "8410:22:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)"}}, "id": 4083, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8410:53:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 4084, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8477:52:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}, "value": "ERC721: transfer to non ERC721Receiver implementer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}], "id": 4074, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8389:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4085, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8389:150:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4086, "nodeType": "ExpressionStatement", "src": "8389:150:22"}]}, "documentation": {"id": 4060, "nodeType": "StructuredDocumentation", "src": "8022:210:22", "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."}, "id": 4088, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "8246:9:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4067, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4062, "mutability": "mutable", "name": "to", "nameLocation": "8273:2:22", "nodeType": "VariableDeclaration", "scope": 4088, "src": "8265:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4061, "name": "address", "nodeType": "ElementaryTypeName", "src": "8265:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4064, "mutability": "mutable", "name": "tokenId", "nameLocation": "8293:7:22", "nodeType": "VariableDeclaration", "scope": 4088, "src": "8285:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4063, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8285:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 4066, "mutability": "mutable", "name": "data", "nameLocation": "8323:4:22", "nodeType": "VariableDeclaration", "scope": 4088, "src": "8310:17:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4065, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8310:5:22", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "8255:78:22"}, "returnParameters": {"id": 4068, "nodeType": "ParameterList", "parameters": [], "src": "8351:0:22"}, "scope": 4444, "src": "8237:309:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4153, "nodeType": "Block", "src": "8929:366:22", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 4097, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4091, "src": "8947:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 4100, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8961:1:22", "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": 4099, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8953:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4098, "name": "address", "nodeType": "ElementaryTypeName", "src": "8953:7:22", "typeDescriptions": {}}}, "id": 4101, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8953:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "8947:16:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373", "id": 4103, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8965:34:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", "typeString": "literal_string \"ERC721: mint to the zero address\""}, "value": "ERC721: mint to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", "typeString": "literal_string \"ERC721: mint to the zero address\""}], "id": 4096, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8939:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4104, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8939:61:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4105, "nodeType": "ExpressionStatement", "src": "8939:61:22"}, {"expression": {"arguments": [{"id": 4110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "9018:17:22", "subExpression": {"arguments": [{"id": 4108, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4093, "src": "9027:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4107, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4010, "src": "9019:7:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)"}}, "id": 4109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9019:16:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564", "id": 4111, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9037:30:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", "typeString": "literal_string \"ERC721: token already minted\""}, "value": "ERC721: token already minted"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", "typeString": "literal_string \"ERC721: token already minted\""}], "id": 4106, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9010:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4112, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9010:58:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4113, "nodeType": "ExpressionStatement", "src": "9010:58:22"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 4117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9108:1:22", "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": 4116, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9100:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4115, "name": "address", "nodeType": "ElementaryTypeName", "src": "9100:7:22", "typeDescriptions": {}}}, "id": 4118, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9100:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4119, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4091, "src": "9112:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4120, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4093, "src": "9116:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4114, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4432, "src": "9079:20:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4121, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9079:45:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4122, "nodeType": "ExpressionStatement", "src": "9079:45:22"}, {"expression": {"id": 4127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4123, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3613, "src": "9135:9:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 4125, "indexExpression": {"id": 4124, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4091, "src": "9145:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9135:13:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 4126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9152:1:22", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9135:18:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4128, "nodeType": "ExpressionStatement", "src": "9135:18:22"}, {"expression": {"id": 4133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4129, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "9163:7:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 4131, "indexExpression": {"id": 4130, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4093, "src": "9171:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9163:16:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 4132, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4091, "src": "9182:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9163:21:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4134, "nodeType": "ExpressionStatement", "src": "9163:21:22"}, {"eventCall": {"arguments": [{"arguments": [{"hexValue": "30", "id": 4138, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9217:1:22", "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": 4137, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9209:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4136, "name": "address", "nodeType": "ElementaryTypeName", "src": "9209:7:22", "typeDescriptions": {}}}, "id": 4139, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9209:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4140, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4091, "src": "9221:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4141, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4093, "src": "9225:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4135, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4459, "src": "9200:8:22", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4142, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9200:33:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4143, "nodeType": "EmitStatement", "src": "9195:38:22"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 4147, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9272:1:22", "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": 4146, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9264:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4145, "name": "address", "nodeType": "ElementaryTypeName", "src": "9264:7:22", "typeDescriptions": {}}}, "id": 4148, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9264:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4149, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4091, "src": "9276:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4150, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4093, "src": "9280:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4144, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4443, "src": "9244:19:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4151, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9244:44:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4152, "nodeType": "ExpressionStatement", "src": "9244:44:22"}]}, "documentation": {"id": 4089, "nodeType": "StructuredDocumentation", "src": "8552:311:22", "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."}, "id": 4154, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nameLocation": "8877:5:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4094, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4091, "mutability": "mutable", "name": "to", "nameLocation": "8891:2:22", "nodeType": "VariableDeclaration", "scope": 4154, "src": "8883:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4090, "name": "address", "nodeType": "ElementaryTypeName", "src": "8883:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4093, "mutability": "mutable", "name": "tokenId", "nameLocation": "8903:7:22", "nodeType": "VariableDeclaration", "scope": 4154, "src": "8895:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4092, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8895:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "8882:29:22"}, "returnParameters": {"id": 4095, "nodeType": "ParameterList", "parameters": [], "src": "8929:0:22"}, "scope": 4444, "src": "8868:427:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4213, "nodeType": "Block", "src": "9561:357:22", "statements": [{"assignments": [4161], "declarations": [{"constant": false, "id": 4161, "mutability": "mutable", "name": "owner", "nameLocation": "9579:5:22", "nodeType": "VariableDeclaration", "scope": 4213, "src": "9571:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4160, "name": "address", "nodeType": "ElementaryTypeName", "src": "9571:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 4166, "initialValue": {"arguments": [{"id": 4164, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4157, "src": "9602:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 4162, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4444, "src": "9587:6:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721_$4444_$", "typeString": "type(contract ERC721)"}}, "id": 4163, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9594:7:22", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 3723, "src": "9587:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 4165, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9587:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "9571:39:22"}, {"expression": {"arguments": [{"id": 4168, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4161, "src": "9642:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 4171, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9657:1:22", "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": 4170, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9649:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4169, "name": "address", "nodeType": "ElementaryTypeName", "src": "9649:7:22", "typeDescriptions": {}}}, "id": 4172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9649:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4173, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4157, "src": "9661:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4167, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4432, "src": "9621:20:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4174, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9621:48:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4175, "nodeType": "ExpressionStatement", "src": "9621:48:22"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 4179, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9724:1:22", "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": 4178, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9716:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4177, "name": "address", "nodeType": "ElementaryTypeName", "src": "9716:7:22", "typeDescriptions": {}}}, "id": 4180, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9716:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4181, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4157, "src": "9728:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4176, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4313, "src": "9707:8:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 4182, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9707:29:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4183, "nodeType": "ExpressionStatement", "src": "9707:29:22"}, {"expression": {"id": 4188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4184, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3613, "src": "9747:9:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 4186, "indexExpression": {"id": 4185, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4161, "src": "9757:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9747:16:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"hexValue": "31", "id": 4187, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9767:1:22", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9747:21:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4189, "nodeType": "ExpressionStatement", "src": "9747:21:22"}, {"expression": {"id": 4193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "9778:23:22", "subExpression": {"baseExpression": {"id": 4190, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "9785:7:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 4192, "indexExpression": {"id": 4191, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4157, "src": "9793:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9785:16:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4194, "nodeType": "ExpressionStatement", "src": "9778:23:22"}, {"eventCall": {"arguments": [{"id": 4196, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4161, "src": "9826:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 4199, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9841:1:22", "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": 4198, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9833:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4197, "name": "address", "nodeType": "ElementaryTypeName", "src": "9833:7:22", "typeDescriptions": {}}}, "id": 4200, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9833:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4201, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4157, "src": "9845:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4195, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4459, "src": "9817:8:22", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9817:36:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4203, "nodeType": "EmitStatement", "src": "9812:41:22"}, {"expression": {"arguments": [{"id": 4205, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4161, "src": "9884:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"hexValue": "30", "id": 4208, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9899:1:22", "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": 4207, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9891:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4206, "name": "address", "nodeType": "ElementaryTypeName", "src": "9891:7:22", "typeDescriptions": {}}}, "id": 4209, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9891:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4210, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4157, "src": "9903:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4204, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4443, "src": "9864:19:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4211, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9864:47:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4212, "nodeType": "ExpressionStatement", "src": "9864:47:22"}]}, "documentation": {"id": 4155, "nodeType": "StructuredDocumentation", "src": "9301:206:22", "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."}, "id": 4214, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "9521:5:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4158, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4157, "mutability": "mutable", "name": "tokenId", "nameLocation": "9535:7:22", "nodeType": "VariableDeclaration", "scope": 4214, "src": "9527:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4156, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9527:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "9526:17:22"}, "returnParameters": {"id": 4159, "nodeType": "ParameterList", "parameters": [], "src": "9561:0:22"}, "scope": 4444, "src": "9512:406:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4288, "nodeType": "Block", "src": "10351:496:22", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 4227, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4221, "src": "10384:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 4225, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4444, "src": "10369:6:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721_$4444_$", "typeString": "type(contract ERC721)"}}, "id": 4226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "10376:7:22", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 3723, "src": "10369:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 4228, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10369:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 4229, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4217, "src": "10396:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10369:31:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572", "id": 4231, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10402:39:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48", "typeString": "literal_string \"ERC721: transfer from incorrect owner\""}, "value": "ERC721: transfer from incorrect owner"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48", "typeString": "literal_string \"ERC721: transfer from incorrect owner\""}], "id": 4224, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10361:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4232, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10361:81:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4233, "nodeType": "ExpressionStatement", "src": "10361:81:22"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 4235, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4219, "src": "10460:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 4238, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10474:1:22", "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": 4237, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10466:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4236, "name": "address", "nodeType": "ElementaryTypeName", "src": "10466:7:22", "typeDescriptions": {}}}, "id": 4239, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10466:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10460:16:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373", "id": 4241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10478:38:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", "typeString": "literal_string \"ERC721: transfer to the zero address\""}, "value": "ERC721: transfer to the zero address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", "typeString": "literal_string \"ERC721: transfer to the zero address\""}], "id": 4234, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10452:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4242, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10452:65:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4243, "nodeType": "ExpressionStatement", "src": "10452:65:22"}, {"expression": {"arguments": [{"id": 4245, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4217, "src": "10549:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4246, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4219, "src": "10555:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4247, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4221, "src": "10559:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4244, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4432, "src": "10528:20:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4248, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10528:39:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4249, "nodeType": "ExpressionStatement", "src": "10528:39:22"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 4253, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10646:1:22", "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": 4252, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10638:7:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4251, "name": "address", "nodeType": "ElementaryTypeName", "src": "10638:7:22", "typeDescriptions": {}}}, "id": 4254, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10638:10:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4255, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4221, "src": "10650:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4250, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4313, "src": "10629:8:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 4256, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10629:29:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4257, "nodeType": "ExpressionStatement", "src": "10629:29:22"}, {"expression": {"id": 4262, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4258, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3613, "src": "10669:9:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 4260, "indexExpression": {"id": 4259, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4217, "src": "10679:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10669:15:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"hexValue": "31", "id": 4261, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10688:1:22", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "10669:20:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4263, "nodeType": "ExpressionStatement", "src": "10669:20:22"}, {"expression": {"id": 4268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4264, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3613, "src": "10699:9:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 4266, "indexExpression": {"id": 4265, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4219, "src": "10709:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10699:13:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 4267, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10716:1:22", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "10699:18:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 4269, "nodeType": "ExpressionStatement", "src": "10699:18:22"}, {"expression": {"id": 4274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4270, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3609, "src": "10727:7:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 4272, "indexExpression": {"id": 4271, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4221, "src": "10735:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10727:16:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 4273, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4219, "src": "10746:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10727:21:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4275, "nodeType": "ExpressionStatement", "src": "10727:21:22"}, {"eventCall": {"arguments": [{"id": 4277, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4217, "src": "10773:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4278, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4219, "src": "10779:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4279, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4221, "src": "10783:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4276, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4459, "src": "10764:8:22", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4280, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10764:27:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4281, "nodeType": "EmitStatement", "src": "10759:32:22"}, {"expression": {"arguments": [{"id": 4283, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4217, "src": "10822:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4284, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4219, "src": "10828:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4285, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4221, "src": "10832:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4282, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4443, "src": "10802:19:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10802:38:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4287, "nodeType": "ExpressionStatement", "src": "10802:38:22"}]}, "documentation": {"id": 4215, "nodeType": "StructuredDocumentation", "src": "9924:313:22", "text": " @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."}, "id": 4289, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nameLocation": "10251:9:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4222, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4217, "mutability": "mutable", "name": "from", "nameLocation": "10278:4:22", "nodeType": "VariableDeclaration", "scope": 4289, "src": "10270:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4216, "name": "address", "nodeType": "ElementaryTypeName", "src": "10270:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4219, "mutability": "mutable", "name": "to", "nameLocation": "10300:2:22", "nodeType": "VariableDeclaration", "scope": 4289, "src": "10292:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4218, "name": "address", "nodeType": "ElementaryTypeName", "src": "10292:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4221, "mutability": "mutable", "name": "tokenId", "nameLocation": "10320:7:22", "nodeType": "VariableDeclaration", "scope": 4289, "src": "10312:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4220, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10312:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10260:73:22"}, "returnParameters": {"id": 4223, "nodeType": "ParameterList", "parameters": [], "src": "10351:0:22"}, "scope": 4444, "src": "10242:605:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4312, "nodeType": "Block", "src": "11023:107:22", "statements": [{"expression": {"id": 4301, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4297, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3617, "src": "11033:15:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 4299, "indexExpression": {"id": 4298, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294, "src": "11049:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11033:24:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 4300, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4292, "src": "11060:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "11033:29:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4302, "nodeType": "ExpressionStatement", "src": "11033:29:22"}, {"eventCall": {"arguments": [{"arguments": [{"id": 4306, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294, "src": "11101:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 4304, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4444, "src": "11086:6:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ERC721_$4444_$", "typeString": "type(contract ERC721)"}}, "id": 4305, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11093:7:22", "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 3723, "src": "11086:14:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 4307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11086:23:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4308, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4292, "src": "11111:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4309, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294, "src": "11115:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4303, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4468, "src": "11077:8:22", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 4310, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11077:46:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4311, "nodeType": "EmitStatement", "src": "11072:51:22"}]}, "documentation": {"id": 4290, "nodeType": "StructuredDocumentation", "src": "10853:101:22", "text": " @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."}, "id": 4313, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nameLocation": "10968:8:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4295, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4292, "mutability": "mutable", "name": "to", "nameLocation": "10985:2:22", "nodeType": "VariableDeclaration", "scope": 4313, "src": "10977:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4291, "name": "address", "nodeType": "ElementaryTypeName", "src": "10977:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4294, "mutability": "mutable", "name": "tokenId", "nameLocation": "10997:7:22", "nodeType": "VariableDeclaration", "scope": 4313, "src": "10989:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4293, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10989:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10976:29:22"}, "returnParameters": {"id": 4296, "nodeType": "ParameterList", "parameters": [], "src": "11023:0:22"}, "scope": 4444, "src": "10959:171:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4344, "nodeType": "Block", "src": "11389:184:22", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 4326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 4324, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4316, "src": "11407:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 4325, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4318, "src": "11416:8:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "11407:17:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20617070726f766520746f2063616c6c6572", "id": 4327, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11426:27:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", "typeString": "literal_string \"ERC721: approve to caller\""}, "value": "ERC721: approve to caller"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", "typeString": "literal_string \"ERC721: approve to caller\""}], "id": 4323, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11399:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4328, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11399:55:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4329, "nodeType": "ExpressionStatement", "src": "11399:55:22"}, {"expression": {"id": 4336, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"baseExpression": {"id": 4330, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3623, "src": "11464:18:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}}, "id": 4333, "indexExpression": {"id": 4331, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4316, "src": "11483:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11464:25:22", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 4334, "indexExpression": {"id": 4332, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4318, "src": "11490:8:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11464:35:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 4335, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4320, "src": "11502:8:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "11464:46:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 4337, "nodeType": "ExpressionStatement", "src": "11464:46:22"}, {"eventCall": {"arguments": [{"id": 4339, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4316, "src": "11540:5:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4340, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4318, "src": "11547:8:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4341, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4320, "src": "11557:8:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 4338, "name": "ApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4477, "src": "11525:14:22", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)"}}, "id": 4342, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11525:41:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4343, "nodeType": "EmitStatement", "src": "11520:46:22"}]}, "documentation": {"id": 4314, "nodeType": "StructuredDocumentation", "src": "11136:125:22", "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."}, "id": 4345, "implemented": true, "kind": "function", "modifiers": [], "name": "_setApprovalForAll", "nameLocation": "11275:18:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4321, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4316, "mutability": "mutable", "name": "owner", "nameLocation": "11311:5:22", "nodeType": "VariableDeclaration", "scope": 4345, "src": "11303:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4315, "name": "address", "nodeType": "ElementaryTypeName", "src": "11303:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4318, "mutability": "mutable", "name": "operator", "nameLocation": "11334:8:22", "nodeType": "VariableDeclaration", "scope": 4345, "src": "11326:16:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4317, "name": "address", "nodeType": "ElementaryTypeName", "src": "11326:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4320, "mutability": "mutable", "name": "approved", "nameLocation": "11357:8:22", "nodeType": "VariableDeclaration", "scope": 4345, "src": "11352:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4319, "name": "bool", "nodeType": "ElementaryTypeName", "src": "11352:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "11293:78:22"}, "returnParameters": {"id": 4322, "nodeType": "ParameterList", "parameters": [], "src": "11389:0:22"}, "scope": 4444, "src": "11266:307:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4358, "nodeType": "Block", "src": "11720:70:22", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 4353, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4348, "src": "11746:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4352, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4010, "src": "11738:7:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)"}}, "id": 4354, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11738:16:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4552433732313a20696e76616c696420746f6b656e204944", "id": 4355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11756:26:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}, "value": "ERC721: invalid token ID"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f", "typeString": "literal_string \"ERC721: invalid token ID\""}], "id": 4351, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11730:7:22", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4356, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11730:53:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4357, "nodeType": "ExpressionStatement", "src": "11730:53:22"}]}, "documentation": {"id": 4346, "nodeType": "StructuredDocumentation", "src": "11579:73:22", "text": " @dev Reverts if the `tokenId` has not been minted yet."}, "id": 4359, "implemented": true, "kind": "function", "modifiers": [], "name": "_requireMinted", "nameLocation": "11666:14:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4349, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4348, "mutability": "mutable", "name": "tokenId", "nameLocation": "11689:7:22", "nodeType": "VariableDeclaration", "scope": 4359, "src": "11681:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4347, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11681:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "11680:17:22"}, "returnParameters": {"id": 4350, "nodeType": "ParameterList", "parameters": [], "src": "11720:0:22"}, "scope": 4444, "src": "11657:133:22", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 4420, "nodeType": "Block", "src": "12497:676:22", "statements": [{"condition": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 4373, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4364, "src": "12511:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4374, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12514:10:22", "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 4748, "src": "12511:13:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address) view returns (bool)"}}, "id": 4375, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12511:15:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 4418, "nodeType": "Block", "src": "13131:36:22", "statements": [{"expression": {"hexValue": "74727565", "id": 4416, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "13152:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 4372, "id": 4417, "nodeType": "Return", "src": "13145:11:22"}]}, "id": 4419, "nodeType": "IfStatement", "src": "12507:660:22", "trueBody": {"id": 4415, "nodeType": "Block", "src": "12528:597:22", "statements": [{"clauses": [{"block": {"id": 4395, "nodeType": "Block", "src": "12642:91:22", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 4393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 4389, "name": "retval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4387, "src": "12667:6:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"expression": {"id": 4390, "name": "IERC721Receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4578, "src": "12677:15:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$4578_$", "typeString": "type(contract IERC721Receiver)"}}, "id": 4391, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "12693:16:22", "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 4577, "src": "12677:32:22", "typeDescriptions": {"typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", "typeString": "function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}}, "id": 4392, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "12710:8:22", "memberName": "selector", "nodeType": "MemberAccess", "src": "12677:41:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "12667:51:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 4372, "id": 4394, "nodeType": "Return", "src": "12660:58:22"}]}, "errorName": "", "id": 4396, "nodeType": "TryCatchClause", "parameters": {"id": 4388, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4387, "mutability": "mutable", "name": "retval", "nameLocation": "12634:6:22", "nodeType": "VariableDeclaration", "scope": 4396, "src": "12627:13:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4386, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "12627:6:22", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "12626:15:22"}, "src": "12618:115:22"}, {"block": {"id": 4412, "nodeType": "Block", "src": "12762:353:22", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 4400, "name": "reason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4398, "src": "12784:6:22", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 4401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12791:6:22", "memberName": "length", "nodeType": "MemberAccess", "src": "12784:13:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 4402, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12801:1:22", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "12784:18:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 4410, "nodeType": "Block", "src": "12911:190:22", "statements": [{"AST": {"nodeType": "YulBlock", "src": "12997:86:22", "statements": [{"expression": {"arguments": [{"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "13034:2:22", "type": "", "value": "32"}, {"name": "reason", "nodeType": "YulIdentifier", "src": "13038:6:22"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "13030:3:22"}, "nodeType": "YulFunctionCall", "src": "13030:15:22"}, {"arguments": [{"name": "reason", "nodeType": "YulIdentifier", "src": "13053:6:22"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "13047:5:22"}, "nodeType": "YulFunctionCall", "src": "13047:13:22"}], "functionName": {"name": "revert", "nodeType": "YulIdentifier", "src": "13023:6:22"}, "nodeType": "YulFunctionCall", "src": "13023:38:22"}, "nodeType": "YulExpressionStatement", "src": "13023:38:22"}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 4398, "isOffset": false, "isSlot": false, "src": "13038:6:22", "valueSize": 1}, {"declaration": 4398, "isOffset": false, "isSlot": false, "src": "13053:6:22", "valueSize": 1}], "id": 4409, "nodeType": "InlineAssembly", "src": "12988:95:22"}]}, "id": 4411, "nodeType": "IfStatement", "src": "12780:321:22", "trueBody": {"id": 4408, "nodeType": "Block", "src": "12804:101:22", "statements": [{"expression": {"arguments": [{"hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 4405, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "12833:52:22", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}, "value": "ERC721: transfer to non ERC721Receiver implementer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}], "id": 4404, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "12826:6:22", "typeDescriptions": {"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure"}}, "id": 4406, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12826:60:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4407, "nodeType": "ExpressionStatement", "src": "12826:60:22"}]}}]}, "errorName": "", "id": 4413, "nodeType": "TryCatchClause", "parameters": {"id": 4399, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4398, "mutability": "mutable", "name": "reason", "nameLocation": "12754:6:22", "nodeType": "VariableDeclaration", "scope": 4413, "src": "12741:19:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4397, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12741:5:22", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "12740:21:22"}, "src": "12734:381:22"}], "externalCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 4380, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "12583:10:22", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 4381, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12583:12:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4382, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4362, "src": "12597:4:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4383, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4366, "src": "12603:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 4384, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4368, "src": "12612:4:22", "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": {"arguments": [{"id": 4377, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4364, "src": "12562:2:22", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 4376, "name": "IERC721Receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4578, "src": "12546:15:22", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$4578_$", "typeString": "type(contract IERC721Receiver)"}}, "id": 4378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12546:19:22", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC721Receiver_$4578", "typeString": "contract IERC721Receiver"}}, "id": 4379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12566:16:22", "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 4577, "src": "12546:36:22", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"}}, "id": 4385, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12546:71:22", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "id": 4414, "nodeType": "TryStatement", "src": "12542:573:22"}]}}]}, "documentation": {"id": 4360, "nodeType": "StructuredDocumentation", "src": "11796:541:22", "text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"}, "id": 4421, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOnERC721Received", "nameLocation": "12351:22:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4362, "mutability": "mutable", "name": "from", "nameLocation": "12391:4:22", "nodeType": "VariableDeclaration", "scope": 4421, "src": "12383:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4361, "name": "address", "nodeType": "ElementaryTypeName", "src": "12383:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4364, "mutability": "mutable", "name": "to", "nameLocation": "12413:2:22", "nodeType": "VariableDeclaration", "scope": 4421, "src": "12405:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4363, "name": "address", "nodeType": "ElementaryTypeName", "src": "12405:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4366, "mutability": "mutable", "name": "tokenId", "nameLocation": "12433:7:22", "nodeType": "VariableDeclaration", "scope": 4421, "src": "12425:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4365, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12425:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 4368, "mutability": "mutable", "name": "data", "nameLocation": "12463:4:22", "nodeType": "VariableDeclaration", "scope": 4421, "src": "12450:17:22", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4367, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12450:5:22", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "12373:100:22"}, "returnParameters": {"id": 4372, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4371, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4421, "src": "12491:4:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4370, "name": "bool", "nodeType": "ElementaryTypeName", "src": "12491:4:22", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "12490:6:22"}, "scope": 4444, "src": "12342:831:22", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 4431, "nodeType": "Block", "src": "13849:2:22", "statements": []}, "documentation": {"id": 4422, "nodeType": "StructuredDocumentation", "src": "13179:545:22", "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."}, "id": 4432, "implemented": true, "kind": "function", "modifiers": [], "name": "_beforeTokenTransfer", "nameLocation": "13738:20:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4429, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4424, "mutability": "mutable", "name": "from", "nameLocation": "13776:4:22", "nodeType": "VariableDeclaration", "scope": 4432, "src": "13768:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4423, "name": "address", "nodeType": "ElementaryTypeName", "src": "13768:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4426, "mutability": "mutable", "name": "to", "nameLocation": "13798:2:22", "nodeType": "VariableDeclaration", "scope": 4432, "src": "13790:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4425, "name": "address", "nodeType": "ElementaryTypeName", "src": "13790:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4428, "mutability": "mutable", "name": "tokenId", "nameLocation": "13818:7:22", "nodeType": "VariableDeclaration", "scope": 4432, "src": "13810:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4427, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13810:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "13758:73:22"}, "returnParameters": {"id": 4430, "nodeType": "ParameterList", "parameters": [], "src": "13849:0:22"}, "scope": 4444, "src": "13729:122:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 4442, "nodeType": "Block", "src": "14342:2:22", "statements": []}, "documentation": {"id": 4433, "nodeType": "StructuredDocumentation", "src": "13857:361:22", "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."}, "id": 4443, "implemented": true, "kind": "function", "modifiers": [], "name": "_afterTokenTransfer", "nameLocation": "14232:19:22", "nodeType": "FunctionDefinition", "parameters": {"id": 4440, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4435, "mutability": "mutable", "name": "from", "nameLocation": "14269:4:22", "nodeType": "VariableDeclaration", "scope": 4443, "src": "14261:12:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4434, "name": "address", "nodeType": "ElementaryTypeName", "src": "14261:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4437, "mutability": "mutable", "name": "to", "nameLocation": "14291:2:22", "nodeType": "VariableDeclaration", "scope": 4443, "src": "14283:10:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4436, "name": "address", "nodeType": "ElementaryTypeName", "src": "14283:7:22", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4439, "mutability": "mutable", "name": "tokenId", "nameLocation": "14311:7:22", "nodeType": "VariableDeclaration", "scope": 4443, "src": "14303:15:22", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4438, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14303:7:22", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "14251:73:22"}, "returnParameters": {"id": 4441, "nodeType": "ParameterList", "parameters": [], "src": "14342:0:22"}, "scope": 4444, "src": "14223:121:22", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}], "scope": 4445, "src": "628:13718:22", "usedErrors": []}], "src": "107:14240:22"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", "exportedSymbols": {"IERC165": [5309], "IERC721": [4560]}, "id": 4561, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 4446, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "108:23:23"}, {"absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", "file": "../../utils/introspection/IERC165.sol", "id": 4447, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4561, "sourceUnit": 5310, "src": "133:47:23", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 4449, "name": "IERC165", "nameLocations": ["271:7:23"], "nodeType": "IdentifierPath", "referencedDeclaration": 5309, "src": "271:7:23"}, "id": 4450, "nodeType": "InheritanceSpecifier", "src": "271:7:23"}], "canonicalName": "IERC721", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 4448, "nodeType": "StructuredDocumentation", "src": "182:67:23", "text": " @dev Required interface of an ERC721 compliant contract."}, "fullyImplemented": false, "id": 4560, "linearizedBaseContracts": [4560, 5309], "name": "IERC721", "nameLocation": "260:7:23", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 4451, "nodeType": "StructuredDocumentation", "src": "285:88:23", "text": " @dev Emitted when `tokenId` token is transferred from `from` to `to`."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 4459, "name": "Transfer", "nameLocation": "384:8:23", "nodeType": "EventDefinition", "parameters": {"id": 4458, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4453, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "409:4:23", "nodeType": "VariableDeclaration", "scope": 4459, "src": "393:20:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4452, "name": "address", "nodeType": "ElementaryTypeName", "src": "393:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4455, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "431:2:23", "nodeType": "VariableDeclaration", "scope": 4459, "src": "415:18:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4454, "name": "address", "nodeType": "ElementaryTypeName", "src": "415:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4457, "indexed": true, "mutability": "mutable", "name": "tokenId", "nameLocation": "451:7:23", "nodeType": "VariableDeclaration", "scope": 4459, "src": "435:23:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4456, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "435:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "392:67:23"}, "src": "378:82:23"}, {"anonymous": false, "documentation": {"id": 4460, "nodeType": "StructuredDocumentation", "src": "466:94:23", "text": " @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 4468, "name": "Approval", "nameLocation": "571:8:23", "nodeType": "EventDefinition", "parameters": {"id": 4467, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4462, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "596:5:23", "nodeType": "VariableDeclaration", "scope": 4468, "src": "580:21:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4461, "name": "address", "nodeType": "ElementaryTypeName", "src": "580:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4464, "indexed": true, "mutability": "mutable", "name": "approved", "nameLocation": "619:8:23", "nodeType": "VariableDeclaration", "scope": 4468, "src": "603:24:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4463, "name": "address", "nodeType": "ElementaryTypeName", "src": "603:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4466, "indexed": true, "mutability": "mutable", "name": "tokenId", "nameLocation": "645:7:23", "nodeType": "VariableDeclaration", "scope": 4468, "src": "629:23:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4465, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "629:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "579:74:23"}, "src": "565:89:23"}, {"anonymous": false, "documentation": {"id": 4469, "nodeType": "StructuredDocumentation", "src": "660:117:23", "text": " @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."}, "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31", "id": 4477, "name": "ApprovalForAll", "nameLocation": "788:14:23", "nodeType": "EventDefinition", "parameters": {"id": 4476, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4471, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "819:5:23", "nodeType": "VariableDeclaration", "scope": 4477, "src": "803:21:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4470, "name": "address", "nodeType": "ElementaryTypeName", "src": "803:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4473, "indexed": true, "mutability": "mutable", "name": "operator", "nameLocation": "842:8:23", "nodeType": "VariableDeclaration", "scope": 4477, "src": "826:24:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4472, "name": "address", "nodeType": "ElementaryTypeName", "src": "826:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4475, "indexed": false, "mutability": "mutable", "name": "approved", "nameLocation": "857:8:23", "nodeType": "VariableDeclaration", "scope": 4477, "src": "852:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4474, "name": "bool", "nodeType": "ElementaryTypeName", "src": "852:4:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "802:64:23"}, "src": "782:85:23"}, {"documentation": {"id": 4478, "nodeType": "StructuredDocumentation", "src": "873:76:23", "text": " @dev Returns the number of tokens in ``owner``'s account."}, "functionSelector": "70a08231", "id": 4485, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "963:9:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4481, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4480, "mutability": "mutable", "name": "owner", "nameLocation": "981:5:23", "nodeType": "VariableDeclaration", "scope": 4485, "src": "973:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4479, "name": "address", "nodeType": "ElementaryTypeName", "src": "973:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "972:15:23"}, "returnParameters": {"id": 4484, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4483, "mutability": "mutable", "name": "balance", "nameLocation": "1019:7:23", "nodeType": "VariableDeclaration", "scope": 4485, "src": "1011:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4482, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1011:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1010:17:23"}, "scope": 4560, "src": "954:74:23", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4486, "nodeType": "StructuredDocumentation", "src": "1034:131:23", "text": " @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."}, "functionSelector": "6352211e", "id": 4493, "implemented": false, "kind": "function", "modifiers": [], "name": "ownerOf", "nameLocation": "1179:7:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4489, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4488, "mutability": "mutable", "name": "tokenId", "nameLocation": "1195:7:23", "nodeType": "VariableDeclaration", "scope": 4493, "src": "1187:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4487, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1187:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1186:17:23"}, "returnParameters": {"id": 4492, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4491, "mutability": "mutable", "name": "owner", "nameLocation": "1235:5:23", "nodeType": "VariableDeclaration", "scope": 4493, "src": "1227:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4490, "name": "address", "nodeType": "ElementaryTypeName", "src": "1227:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1226:15:23"}, "scope": 4560, "src": "1170:72:23", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4494, "nodeType": "StructuredDocumentation", "src": "1248:556:23", "text": " @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "functionSelector": "b88d4fde", "id": 4505, "implemented": false, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "1818:16:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4503, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4496, "mutability": "mutable", "name": "from", "nameLocation": "1852:4:23", "nodeType": "VariableDeclaration", "scope": 4505, "src": "1844:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4495, "name": "address", "nodeType": "ElementaryTypeName", "src": "1844:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4498, "mutability": "mutable", "name": "to", "nameLocation": "1874:2:23", "nodeType": "VariableDeclaration", "scope": 4505, "src": "1866:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4497, "name": "address", "nodeType": "ElementaryTypeName", "src": "1866:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4500, "mutability": "mutable", "name": "tokenId", "nameLocation": "1894:7:23", "nodeType": "VariableDeclaration", "scope": 4505, "src": "1886:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4499, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1886:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 4502, "mutability": "mutable", "name": "data", "nameLocation": "1926:4:23", "nodeType": "VariableDeclaration", "scope": 4505, "src": "1911:19:23", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 4501, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1911:5:23", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1834:102:23"}, "returnParameters": {"id": 4504, "nodeType": "ParameterList", "parameters": [], "src": "1945:0:23"}, "scope": 4560, "src": "1809:137:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4506, "nodeType": "StructuredDocumentation", "src": "1952:687:23", "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "functionSelector": "42842e0e", "id": 4515, "implemented": false, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "2653:16:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4513, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4508, "mutability": "mutable", "name": "from", "nameLocation": "2687:4:23", "nodeType": "VariableDeclaration", "scope": 4515, "src": "2679:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4507, "name": "address", "nodeType": "ElementaryTypeName", "src": "2679:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4510, "mutability": "mutable", "name": "to", "nameLocation": "2709:2:23", "nodeType": "VariableDeclaration", "scope": 4515, "src": "2701:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4509, "name": "address", "nodeType": "ElementaryTypeName", "src": "2701:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4512, "mutability": "mutable", "name": "tokenId", "nameLocation": "2729:7:23", "nodeType": "VariableDeclaration", "scope": 4515, "src": "2721:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4511, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2721:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2669:73:23"}, "returnParameters": {"id": 4514, "nodeType": "ParameterList", "parameters": [], "src": "2751:0:23"}, "scope": 4560, "src": "2644:108:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4516, "nodeType": "StructuredDocumentation", "src": "2758:504:23", "text": " @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 4525, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "3276:12:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4523, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4518, "mutability": "mutable", "name": "from", "nameLocation": "3306:4:23", "nodeType": "VariableDeclaration", "scope": 4525, "src": "3298:12:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4517, "name": "address", "nodeType": "ElementaryTypeName", "src": "3298:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4520, "mutability": "mutable", "name": "to", "nameLocation": "3328:2:23", "nodeType": "VariableDeclaration", "scope": 4525, "src": "3320:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4519, "name": "address", "nodeType": "ElementaryTypeName", "src": "3320:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4522, "mutability": "mutable", "name": "tokenId", "nameLocation": "3348:7:23", "nodeType": "VariableDeclaration", "scope": 4525, "src": "3340:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4521, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3340:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3288:73:23"}, "returnParameters": {"id": 4524, "nodeType": "ParameterList", "parameters": [], "src": "3370:0:23"}, "scope": 4560, "src": "3267:104:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4526, "nodeType": "StructuredDocumentation", "src": "3377:452:23", "text": " @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 4533, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "3843:7:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4531, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4528, "mutability": "mutable", "name": "to", "nameLocation": "3859:2:23", "nodeType": "VariableDeclaration", "scope": 4533, "src": "3851:10:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4527, "name": "address", "nodeType": "ElementaryTypeName", "src": "3851:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4530, "mutability": "mutable", "name": "tokenId", "nameLocation": "3871:7:23", "nodeType": "VariableDeclaration", "scope": 4533, "src": "3863:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4529, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3863:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3850:29:23"}, "returnParameters": {"id": 4532, "nodeType": "ParameterList", "parameters": [], "src": "3888:0:23"}, "scope": 4560, "src": "3834:55:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4534, "nodeType": "StructuredDocumentation", "src": "3895:309:23", "text": " @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."}, "functionSelector": "a22cb465", "id": 4541, "implemented": false, "kind": "function", "modifiers": [], "name": "setApprovalForAll", "nameLocation": "4218:17:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4539, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4536, "mutability": "mutable", "name": "operator", "nameLocation": "4244:8:23", "nodeType": "VariableDeclaration", "scope": 4541, "src": "4236:16:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4535, "name": "address", "nodeType": "ElementaryTypeName", "src": "4236:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4538, "mutability": "mutable", "name": "_approved", "nameLocation": "4259:9:23", "nodeType": "VariableDeclaration", "scope": 4541, "src": "4254:14:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4537, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4254:4:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4235:34:23"}, "returnParameters": {"id": 4540, "nodeType": "ParameterList", "parameters": [], "src": "4278:0:23"}, "scope": 4560, "src": "4209:70:23", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4542, "nodeType": "StructuredDocumentation", "src": "4285:139:23", "text": " @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."}, "functionSelector": "081812fc", "id": 4549, "implemented": false, "kind": "function", "modifiers": [], "name": "getApproved", "nameLocation": "4438:11:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4545, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4544, "mutability": "mutable", "name": "tokenId", "nameLocation": "4458:7:23", "nodeType": "VariableDeclaration", "scope": 4549, "src": "4450:15:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4543, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4450:7:23", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4449:17:23"}, "returnParameters": {"id": 4548, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4547, "mutability": "mutable", "name": "operator", "nameLocation": "4498:8:23", "nodeType": "VariableDeclaration", "scope": 4549, "src": "4490:16:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4546, "name": "address", "nodeType": "ElementaryTypeName", "src": "4490:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4489:18:23"}, "scope": 4560, "src": "4429:79:23", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4550, "nodeType": "StructuredDocumentation", "src": "4514:138:23", "text": " @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"}, "functionSelector": "e985e9c5", "id": 4559, "implemented": false, "kind": "function", "modifiers": [], "name": "isApprovedForAll", "nameLocation": "4666:16:23", "nodeType": "FunctionDefinition", "parameters": {"id": 4555, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4552, "mutability": "mutable", "name": "owner", "nameLocation": "4691:5:23", "nodeType": "VariableDeclaration", "scope": 4559, "src": "4683:13:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4551, "name": "address", "nodeType": "ElementaryTypeName", "src": "4683:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4554, "mutability": "mutable", "name": "operator", "nameLocation": "4706:8:23", "nodeType": "VariableDeclaration", "scope": 4559, "src": "4698:16:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4553, "name": "address", "nodeType": "ElementaryTypeName", "src": "4698:7:23", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4682:33:23"}, "returnParameters": {"id": 4558, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4557, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4559, "src": "4739:4:23", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4556, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4739:4:23", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4738:6:23"}, "scope": 4560, "src": "4657:88:23", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 4561, "src": "250:4497:23", "usedErrors": []}], "src": "108:4640:23"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", "exportedSymbols": {"IERC721Receiver": [4578]}, "id": 4579, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 4562, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "116:23:24"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC721Receiver", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 4563, "nodeType": "StructuredDocumentation", "src": "141:152:24", "text": " @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."}, "fullyImplemented": false, "id": 4578, "linearizedBaseContracts": [4578], "name": "IERC721Receiver", "nameLocation": "304:15:24", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 4564, "nodeType": "StructuredDocumentation", "src": "326:493:24", "text": " @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}, "functionSelector": "150b7a02", "id": 4577, "implemented": false, "kind": "function", "modifiers": [], "name": "onERC721Received", "nameLocation": "833:16:24", "nodeType": "FunctionDefinition", "parameters": {"id": 4573, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4566, "mutability": "mutable", "name": "operator", "nameLocation": "867:8:24", "nodeType": "VariableDeclaration", "scope": 4577, "src": "859:16:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4565, "name": "address", "nodeType": "ElementaryTypeName", "src": "859:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4568, "mutability": "mutable", "name": "from", "nameLocation": "893:4:24", "nodeType": "VariableDeclaration", "scope": 4577, "src": "885:12:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4567, "name": "address", "nodeType": "ElementaryTypeName", "src": "885:7:24", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4570, "mutability": "mutable", "name": "tokenId", "nameLocation": "915:7:24", "nodeType": "VariableDeclaration", "scope": 4577, "src": "907:15:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4569, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "907:7:24", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 4572, "mutability": "mutable", "name": "data", "nameLocation": "947:4:24", "nodeType": "VariableDeclaration", "scope": 4577, "src": "932:19:24", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 4571, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "932:5:24", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "849:108:24"}, "returnParameters": {"id": 4576, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4575, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4577, "src": "976:6:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 4574, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "976:6:24", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "975:8:24"}, "scope": 4578, "src": "824:160:24", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 4579, "src": "294:692:24", "usedErrors": []}], "src": "116:871:24"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol", "exportedSymbols": {"Address": [5025], "Context": [5047], "ERC165": [5297], "ERC721": [4444], "ERC721URIStorage": [4703], "IERC165": [5309], "IERC721": [4560], "IERC721Metadata": [4730], "IERC721Receiver": [4578], "Strings": [5273]}, "id": 4704, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 4580, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "128:23:25"}, {"absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol", "file": "../ERC721.sol", "id": 4581, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4704, "sourceUnit": 4445, "src": "153:23:25", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 4583, "name": "ERC721", "nameLocations": ["286:6:25"], "nodeType": "IdentifierPath", "referencedDeclaration": 4444, "src": "286:6:25"}, "id": 4584, "nodeType": "InheritanceSpecifier", "src": "286:6:25"}], "canonicalName": "ERC721URIStorage", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 4582, "nodeType": "StructuredDocumentation", "src": "178:69:25", "text": " @dev ERC721 token with storage based token URI management."}, "fullyImplemented": false, "id": 4703, "linearizedBaseContracts": [4703, 4444, 4730, 4560, 5297, 5309, 5047], "name": "ERC721URIStorage", "nameLocation": "266:16:25", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 4587, "libraryName": {"id": 4585, "name": "Strings", "nameLocations": ["305:7:25"], "nodeType": "IdentifierPath", "referencedDeclaration": 5273, "src": "305:7:25"}, "nodeType": "UsingForDirective", "src": "299:26:25", "typeName": {"id": 4586, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "317:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"constant": false, "id": 4591, "mutability": "mutable", "name": "_tokenURIs", "nameLocation": "405:10:25", "nodeType": "VariableDeclaration", "scope": 4703, "src": "370:45:25", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string)"}, "typeName": {"id": 4590, "keyType": {"id": 4588, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "378:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "370:26:25", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string)"}, "valueType": {"id": 4589, "name": "string", "nodeType": "ElementaryTypeName", "src": "389:6:25", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}}, "visibility": "private"}, {"baseFunctions": [3782], "body": {"id": 4649, "nodeType": "Block", "src": "570:520:25", "statements": [{"expression": {"arguments": [{"id": 4601, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4594, "src": "595:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4600, "name": "_requireMinted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4359, "src": "580:14:25", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", "typeString": "function (uint256) view"}}, "id": 4602, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "580:23:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4603, "nodeType": "ExpressionStatement", "src": "580:23:25"}, {"assignments": [4605], "declarations": [{"constant": false, "id": 4605, "mutability": "mutable", "name": "_tokenURI", "nameLocation": "628:9:25", "nodeType": "VariableDeclaration", "scope": 4649, "src": "614:23:25", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4604, "name": "string", "nodeType": "ElementaryTypeName", "src": "614:6:25", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 4609, "initialValue": {"baseExpression": {"id": 4606, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4591, "src": "640:10:25", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 4608, "indexExpression": {"id": 4607, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4594, "src": "651:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "640:19:25", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "614:45:25"}, {"assignments": [4611], "declarations": [{"constant": false, "id": 4611, "mutability": "mutable", "name": "base", "nameLocation": "683:4:25", "nodeType": "VariableDeclaration", "scope": 4649, "src": "669:18:25", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4610, "name": "string", "nodeType": "ElementaryTypeName", "src": "669:6:25", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 4614, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 4612, "name": "_baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3791, "src": "690:8:25", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", "typeString": "function () view returns (string memory)"}}, "id": 4613, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "690:10:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "nodeType": "VariableDeclarationStatement", "src": "669:31:25"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4621, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 4617, "name": "base", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4611, "src": "779:4:25", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 4616, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "773:5:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 4615, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "773:5:25", "typeDescriptions": {}}}, "id": 4618, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "773:11:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 4619, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "785:6:25", "memberName": "length", "nodeType": "MemberAccess", "src": "773:18:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 4620, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "795:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "773:23:25", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 4625, "nodeType": "IfStatement", "src": "769:70:25", "trueBody": {"id": 4624, "nodeType": "Block", "src": "798:41:25", "statements": [{"expression": {"id": 4622, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4605, "src": "819:9:25", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 4599, "id": 4623, "nodeType": "Return", "src": "812:16:25"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 4628, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4605, "src": "947:9:25", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 4627, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "941:5:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 4626, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "941:5:25", "typeDescriptions": {}}}, "id": 4629, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "941:16:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 4630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "958:6:25", "memberName": "length", "nodeType": "MemberAccess", "src": "941:23:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 4631, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "967:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "941:27:25", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 4643, "nodeType": "IfStatement", "src": "937:106:25", "trueBody": {"id": 4642, "nodeType": "Block", "src": "970:73:25", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 4637, "name": "base", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4611, "src": "1015:4:25", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 4638, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4605, "src": "1021:9:25", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "expression": {"id": 4635, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "998:3:25", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 4636, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1002:12:25", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "998:16:25", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 4639, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "998:33:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 4634, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "991:6:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 4633, "name": "string", "nodeType": "ElementaryTypeName", "src": "991:6:25", "typeDescriptions": {}}}, "id": 4640, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "991:41:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 4599, "id": 4641, "nodeType": "Return", "src": "984:48:25"}]}}, {"expression": {"arguments": [{"id": 4646, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4594, "src": "1075:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 4644, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "1060:5:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_ERC721URIStorage_$4703_$", "typeString": "type(contract super ERC721URIStorage)"}}, "id": 4645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1066:8:25", "memberName": "tokenURI", "nodeType": "MemberAccess", "referencedDeclaration": 3782, "src": "1060:14:25", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) view returns (string memory)"}}, "id": 4647, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1060:23:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 4599, "id": 4648, "nodeType": "Return", "src": "1053:30:25"}]}, "documentation": {"id": 4592, "nodeType": "StructuredDocumentation", "src": "422:55:25", "text": " @dev See {IERC721Metadata-tokenURI}."}, "functionSelector": "c87b56dd", "id": 4650, "implemented": true, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "491:8:25", "nodeType": "FunctionDefinition", "overrides": {"id": 4596, "nodeType": "OverrideSpecifier", "overrides": [], "src": "537:8:25"}, "parameters": {"id": 4595, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4594, "mutability": "mutable", "name": "tokenId", "nameLocation": "508:7:25", "nodeType": "VariableDeclaration", "scope": 4650, "src": "500:15:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4593, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "500:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "499:17:25"}, "returnParameters": {"id": 4599, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4598, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4650, "src": "555:13:25", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4597, "name": "string", "nodeType": "ElementaryTypeName", "src": "555:6:25", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "554:15:25"}, "scope": 4703, "src": "482:608:25", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 4671, "nodeType": "Block", "src": "1318:133:25", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 4660, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4653, "src": "1344:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 4659, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4010, "src": "1336:7:25", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)"}}, "id": 4661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1336:16:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "45524337323155524953746f726167653a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e", "id": 4662, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1354:48:25", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7521de1f20ce4d7bb86b61090bad73a87315a1f4baff36cc352901c7777280c4", "typeString": "literal_string \"ERC721URIStorage: URI set of nonexistent token\""}, "value": "ERC721URIStorage: URI set of nonexistent token"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7521de1f20ce4d7bb86b61090bad73a87315a1f4baff36cc352901c7777280c4", "typeString": "literal_string \"ERC721URIStorage: URI set of nonexistent token\""}], "id": 4658, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1328:7:25", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4663, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1328:75:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4664, "nodeType": "ExpressionStatement", "src": "1328:75:25"}, {"expression": {"id": 4669, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 4665, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4591, "src": "1413:10:25", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 4667, "indexExpression": {"id": 4666, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4653, "src": "1424:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1413:19:25", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 4668, "name": "_tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4655, "src": "1435:9:25", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1413:31:25", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 4670, "nodeType": "ExpressionStatement", "src": "1413:31:25"}]}, "documentation": {"id": 4651, "nodeType": "StructuredDocumentation", "src": "1096:136:25", "text": " @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Requirements:\n - `tokenId` must exist."}, "id": 4672, "implemented": true, "kind": "function", "modifiers": [], "name": "_setTokenURI", "nameLocation": "1246:12:25", "nodeType": "FunctionDefinition", "parameters": {"id": 4656, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4653, "mutability": "mutable", "name": "tokenId", "nameLocation": "1267:7:25", "nodeType": "VariableDeclaration", "scope": 4672, "src": "1259:15:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4652, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1259:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 4655, "mutability": "mutable", "name": "_tokenURI", "nameLocation": "1290:9:25", "nodeType": "VariableDeclaration", "scope": 4672, "src": "1276:23:25", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4654, "name": "string", "nodeType": "ElementaryTypeName", "src": "1276:6:25", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1258:42:25"}, "returnParameters": {"id": 4657, "nodeType": "ParameterList", "parameters": [], "src": "1318:0:25"}, "scope": 4703, "src": "1237:214:25", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"baseFunctions": [4214], "body": {"id": 4701, "nodeType": "Block", "src": "1727:142:25", "statements": [{"expression": {"arguments": [{"id": 4682, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4675, "src": "1749:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 4679, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "1737:5:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_ERC721URIStorage_$4703_$", "typeString": "type(contract super ERC721URIStorage)"}}, "id": 4681, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1743:5:25", "memberName": "_burn", "nodeType": "MemberAccess", "referencedDeclaration": 4214, "src": "1737:11:25", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 4683, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1737:20:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4684, "nodeType": "ExpressionStatement", "src": "1737:20:25"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4693, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"baseExpression": {"id": 4687, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4591, "src": "1778:10:25", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 4689, "indexExpression": {"id": 4688, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4675, "src": "1789:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1778:19:25", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}], "id": 4686, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1772:5:25", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 4685, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1772:5:25", "typeDescriptions": {}}}, "id": 4690, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1772:26:25", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes storage pointer"}}, "id": 4691, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1799:6:25", "memberName": "length", "nodeType": "MemberAccess", "src": "1772:33:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 4692, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1809:1:25", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1772:38:25", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 4700, "nodeType": "IfStatement", "src": "1768:95:25", "trueBody": {"id": 4699, "nodeType": "Block", "src": "1812:51:25", "statements": [{"expression": {"id": 4697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "1826:26:25", "subExpression": {"baseExpression": {"id": 4694, "name": "_tokenURIs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4591, "src": "1833:10:25", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", "typeString": "mapping(uint256 => string storage ref)"}}, "id": 4696, "indexExpression": {"id": 4695, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4675, "src": "1844:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1833:19:25", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4698, "nodeType": "ExpressionStatement", "src": "1826:26:25"}]}}]}, "documentation": {"id": 4673, "nodeType": "StructuredDocumentation", "src": "1457:207:25", "text": " @dev See {ERC721-_burn}. This override additionally checks to see if a\n token-specific URI was set for the token, and if so, it deletes the token URI from\n the storage mapping."}, "id": 4702, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "1678:5:25", "nodeType": "FunctionDefinition", "overrides": {"id": 4677, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1718:8:25"}, "parameters": {"id": 4676, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4675, "mutability": "mutable", "name": "tokenId", "nameLocation": "1692:7:25", "nodeType": "VariableDeclaration", "scope": 4702, "src": "1684:15:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4674, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1684:7:25", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1683:17:25"}, "returnParameters": {"id": 4678, "nodeType": "ParameterList", "parameters": [], "src": "1727:0:25"}, "scope": 4703, "src": "1669:200:25", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}], "scope": 4704, "src": "248:1623:25", "usedErrors": []}], "src": "128:1744:25"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", "exportedSymbols": {"IERC165": [5309], "IERC721": [4560], "IERC721Metadata": [4730]}, "id": 4731, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 4705, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "112:23:26"}, {"absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", "file": "../IERC721.sol", "id": 4706, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 4731, "sourceUnit": 4561, "src": "137:24:26", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 4708, "name": "IERC721", "nameLocations": ["326:7:26"], "nodeType": "IdentifierPath", "referencedDeclaration": 4560, "src": "326:7:26"}, "id": 4709, "nodeType": "InheritanceSpecifier", "src": "326:7:26"}], "canonicalName": "IERC721Metadata", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 4707, "nodeType": "StructuredDocumentation", "src": "163:133:26", "text": " @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"}, "fullyImplemented": false, "id": 4730, "linearizedBaseContracts": [4730, 4560, 5309], "name": "IERC721Metadata", "nameLocation": "307:15:26", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 4710, "nodeType": "StructuredDocumentation", "src": "340:58:26", "text": " @dev Returns the token collection name."}, "functionSelector": "06fdde03", "id": 4715, "implemented": false, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "412:4:26", "nodeType": "FunctionDefinition", "parameters": {"id": 4711, "nodeType": "ParameterList", "parameters": [], "src": "416:2:26"}, "returnParameters": {"id": 4714, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4713, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4715, "src": "442:13:26", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4712, "name": "string", "nodeType": "ElementaryTypeName", "src": "442:6:26", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "441:15:26"}, "scope": 4730, "src": "403:54:26", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4716, "nodeType": "StructuredDocumentation", "src": "463:60:26", "text": " @dev Returns the token collection symbol."}, "functionSelector": "95d89b41", "id": 4721, "implemented": false, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "537:6:26", "nodeType": "FunctionDefinition", "parameters": {"id": 4717, "nodeType": "ParameterList", "parameters": [], "src": "543:2:26"}, "returnParameters": {"id": 4720, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4719, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4721, "src": "569:13:26", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4718, "name": "string", "nodeType": "ElementaryTypeName", "src": "569:6:26", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "568:15:26"}, "scope": 4730, "src": "528:56:26", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 4722, "nodeType": "StructuredDocumentation", "src": "590:90:26", "text": " @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."}, "functionSelector": "c87b56dd", "id": 4729, "implemented": false, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "694:8:26", "nodeType": "FunctionDefinition", "parameters": {"id": 4725, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4724, "mutability": "mutable", "name": "tokenId", "nameLocation": "711:7:26", "nodeType": "VariableDeclaration", "scope": 4729, "src": "703:15:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4723, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "703:7:26", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "702:17:26"}, "returnParameters": {"id": 4728, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4727, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4729, "src": "743:13:26", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4726, "name": "string", "nodeType": "ElementaryTypeName", "src": "743:6:26", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "742:15:26"}, "scope": 4730, "src": "685:73:26", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 4731, "src": "297:463:26", "usedErrors": []}], "src": "112:649:26"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Address.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/utils/Address.sol", "exportedSymbols": {"Address": [5025]}, "id": 5026, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 4732, "literals": ["solidity", "^", "0.8", ".1"], "nodeType": "PragmaDirective", "src": "101:23:27"}, {"abstract": false, "baseContracts": [], "canonicalName": "Address", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 4733, "nodeType": "StructuredDocumentation", "src": "126:67:27", "text": " @dev Collection of functions related to the address type"}, "fullyImplemented": true, "id": 5025, "linearizedBaseContracts": [5025], "name": "Address", "nameLocation": "202:7:27", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 4747, "nodeType": "Block", "src": "1241:254:27", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4745, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 4741, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4736, "src": "1465:7:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4742, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1473:4:27", "memberName": "code", "nodeType": "MemberAccess", "src": "1465:12:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 4743, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1478:6:27", "memberName": "length", "nodeType": "MemberAccess", "src": "1465:19:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 4744, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1487:1:27", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1465:23:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 4740, "id": 4746, "nodeType": "Return", "src": "1458:30:27"}]}, "documentation": {"id": 4734, "nodeType": "StructuredDocumentation", "src": "216:954:27", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="}, "id": 4748, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1184:10:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4737, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4736, "mutability": "mutable", "name": "account", "nameLocation": "1203:7:27", "nodeType": "VariableDeclaration", "scope": 4748, "src": "1195:15:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4735, "name": "address", "nodeType": "ElementaryTypeName", "src": "1195:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1194:17:27"}, "returnParameters": {"id": 4740, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4739, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4748, "src": "1235:4:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4738, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1235:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1234:6:27"}, "scope": 5025, "src": "1175:320:27", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 4781, "nodeType": "Block", "src": "2483:241:27", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4763, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 4759, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2509:4:27", "typeDescriptions": {"typeIdentifier": "t_contract$_Address_$5025", "typeString": "library Address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_Address_$5025", "typeString": "library Address"}], "id": 4758, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2501:7:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4757, "name": "address", "nodeType": "ElementaryTypeName", "src": "2501:7:27", "typeDescriptions": {}}}, "id": 4760, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2501:13:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4761, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2515:7:27", "memberName": "balance", "nodeType": "MemberAccess", "src": "2501:21:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 4762, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4753, "src": "2526:6:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2501:31:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", "id": 4764, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2534:31:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", "typeString": "literal_string \"Address: insufficient balance\""}, "value": "Address: insufficient balance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", "typeString": "literal_string \"Address: insufficient balance\""}], "id": 4756, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2493:7:27", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4765, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2493:73:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4766, "nodeType": "ExpressionStatement", "src": "2493:73:27"}, {"assignments": [4768, null], "declarations": [{"constant": false, "id": 4768, "mutability": "mutable", "name": "success", "nameLocation": "2583:7:27", "nodeType": "VariableDeclaration", "scope": 4781, "src": "2578:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4767, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2578:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, null], "id": 4775, "initialValue": {"arguments": [{"hexValue": "", "id": 4773, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2626:2:27", "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": 4769, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4751, "src": "2596:9:27", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "id": 4770, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2606:4:27", "memberName": "call", "nodeType": "MemberAccess", "src": "2596:14:27", "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": 4772, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{"id": 4771, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4753, "src": "2618:6:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "src": "2596:29:27", "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": 4774, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2596:33:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "2577:52:27"}, {"expression": {"arguments": [{"id": 4777, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4768, "src": "2647:7:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", "id": 4778, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2656:60:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""}, "value": "Address: unable to send value, recipient may have reverted"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""}], "id": 4776, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2639:7:27", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4779, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2639:78:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4780, "nodeType": "ExpressionStatement", "src": "2639:78:27"}]}, "documentation": {"id": 4749, "nodeType": "StructuredDocumentation", "src": "1501:906:27", "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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."}, "id": 4782, "implemented": true, "kind": "function", "modifiers": [], "name": "sendValue", "nameLocation": "2421:9:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4754, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4751, "mutability": "mutable", "name": "recipient", "nameLocation": "2447:9:27", "nodeType": "VariableDeclaration", "scope": 4782, "src": "2431:25:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}, "typeName": {"id": 4750, "name": "address", "nodeType": "ElementaryTypeName", "src": "2431:15:27", "stateMutability": "payable", "typeDescriptions": {"typeIdentifier": "t_address_payable", "typeString": "address payable"}}, "visibility": "internal"}, {"constant": false, "id": 4753, "mutability": "mutable", "name": "amount", "nameLocation": "2466:6:27", "nodeType": "VariableDeclaration", "scope": 4782, "src": "2458:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4752, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2458:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2430:43:27"}, "returnParameters": {"id": 4755, "nodeType": "ParameterList", "parameters": [], "src": "2483:0:27"}, "scope": 5025, "src": "2412:312:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 4798, "nodeType": "Block", "src": "3555:84:27", "statements": [{"expression": {"arguments": [{"id": 4793, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4785, "src": "3585:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4794, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4787, "src": "3593:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", "id": 4795, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3599:32:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", "typeString": "literal_string \"Address: low-level call failed\""}, "value": "Address: low-level call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", "typeString": "literal_string \"Address: low-level call failed\""}], "id": 4792, "name": "functionCall", "nodeType": "Identifier", "overloadedDeclarations": [4799, 4819], "referencedDeclaration": 4819, "src": "3572:12:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"}}, "id": 4796, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3572:60:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4791, "id": 4797, "nodeType": "Return", "src": "3565:67:27"}]}, "documentation": {"id": 4783, "nodeType": "StructuredDocumentation", "src": "2730:731:27", "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, it is bubbled up by this\n function (like regular Solidity function calls).\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.\n _Available since v3.1._"}, "id": 4799, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCall", "nameLocation": "3475:12:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4788, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4785, "mutability": "mutable", "name": "target", "nameLocation": "3496:6:27", "nodeType": "VariableDeclaration", "scope": 4799, "src": "3488:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4784, "name": "address", "nodeType": "ElementaryTypeName", "src": "3488:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4787, "mutability": "mutable", "name": "data", "nameLocation": "3517:4:27", "nodeType": "VariableDeclaration", "scope": 4799, "src": "3504:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4786, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3504:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3487:35:27"}, "returnParameters": {"id": 4791, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4790, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4799, "src": "3541:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4789, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3541:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3540:14:27"}, "scope": 5025, "src": "3466:173:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 4818, "nodeType": "Block", "src": "4008:76:27", "statements": [{"expression": {"arguments": [{"id": 4812, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4802, "src": "4047:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4813, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4804, "src": "4055:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "30", "id": 4814, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4061:1:27", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"id": 4815, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4806, "src": "4064:12:27", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "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"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 4811, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [4839, 4889], "referencedDeclaration": 4889, "src": "4025:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 4816, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4025:52:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4810, "id": 4817, "nodeType": "Return", "src": "4018:59:27"}]}, "documentation": {"id": 4800, "nodeType": "StructuredDocumentation", "src": "3645:211:27", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"}, "id": 4819, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCall", "nameLocation": "3870:12:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4807, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4802, "mutability": "mutable", "name": "target", "nameLocation": "3900:6:27", "nodeType": "VariableDeclaration", "scope": 4819, "src": "3892:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4801, "name": "address", "nodeType": "ElementaryTypeName", "src": "3892:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4804, "mutability": "mutable", "name": "data", "nameLocation": "3929:4:27", "nodeType": "VariableDeclaration", "scope": 4819, "src": "3916:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4803, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3916:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 4806, "mutability": "mutable", "name": "errorMessage", "nameLocation": "3957:12:27", "nodeType": "VariableDeclaration", "scope": 4819, "src": "3943:26:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4805, "name": "string", "nodeType": "ElementaryTypeName", "src": "3943:6:27", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3882:93:27"}, "returnParameters": {"id": 4810, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4809, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4819, "src": "3994:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4808, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3994:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "3993:14:27"}, "scope": 5025, "src": "3861:223:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 4838, "nodeType": "Block", "src": "4589:111:27", "statements": [{"expression": {"arguments": [{"id": 4832, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4822, "src": "4628:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4833, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4824, "src": "4636:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 4834, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4826, "src": "4642:5:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", "id": 4835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4649:43:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", "typeString": "literal_string \"Address: low-level call with value failed\""}, "value": "Address: low-level call with value failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", "typeString": "literal_string \"Address: low-level call with value failed\""}], "id": 4831, "name": "functionCallWithValue", "nodeType": "Identifier", "overloadedDeclarations": [4839, 4889], "referencedDeclaration": 4889, "src": "4606:21:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"}}, "id": 4836, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4606:87:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4830, "id": 4837, "nodeType": "Return", "src": "4599:94:27"}]}, "documentation": {"id": 4820, "nodeType": "StructuredDocumentation", "src": "4090:351:27", "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`.\n _Available since v3.1._"}, "id": 4839, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCallWithValue", "nameLocation": "4455:21:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4827, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4822, "mutability": "mutable", "name": "target", "nameLocation": "4494:6:27", "nodeType": "VariableDeclaration", "scope": 4839, "src": "4486:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4821, "name": "address", "nodeType": "ElementaryTypeName", "src": "4486:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4824, "mutability": "mutable", "name": "data", "nameLocation": "4523:4:27", "nodeType": "VariableDeclaration", "scope": 4839, "src": "4510:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4823, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4510:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 4826, "mutability": "mutable", "name": "value", "nameLocation": "4545:5:27", "nodeType": "VariableDeclaration", "scope": 4839, "src": "4537:13:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4825, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4537:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4476:80:27"}, "returnParameters": {"id": 4830, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4829, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4839, "src": "4575:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4828, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4575:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "4574:14:27"}, "scope": 5025, "src": "4446:254:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 4888, "nodeType": "Block", "src": "5127:320:27", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 4860, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 4856, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "5153:4:27", "typeDescriptions": {"typeIdentifier": "t_contract$_Address_$5025", "typeString": "library Address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_Address_$5025", "typeString": "library Address"}], "id": 4855, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5145:7:27", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 4854, "name": "address", "nodeType": "ElementaryTypeName", "src": "5145:7:27", "typeDescriptions": {}}}, "id": 4857, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5145:13:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4858, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5159:7:27", "memberName": "balance", "nodeType": "MemberAccess", "src": "5145:21:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 4859, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4846, "src": "5170:5:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5145:30:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", "id": 4861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5177:40:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", "typeString": "literal_string \"Address: insufficient balance for call\""}, "value": "Address: insufficient balance for call"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", "typeString": "literal_string \"Address: insufficient balance for call\""}], "id": 4853, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5137:7:27", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4862, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5137:81:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4863, "nodeType": "ExpressionStatement", "src": "5137:81:27"}, {"expression": {"arguments": [{"arguments": [{"id": 4866, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4842, "src": "5247:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 4865, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4748, "src": "5236:10:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 4867, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5236:18:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", "id": 4868, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5256:31:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", "typeString": "literal_string \"Address: call to non-contract\""}, "value": "Address: call to non-contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", "typeString": "literal_string \"Address: call to non-contract\""}], "id": 4864, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5228:7:27", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4869, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5228:60:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4870, "nodeType": "ExpressionStatement", "src": "5228:60:27"}, {"assignments": [4872, 4874], "declarations": [{"constant": false, "id": 4872, "mutability": "mutable", "name": "success", "nameLocation": "5305:7:27", "nodeType": "VariableDeclaration", "scope": 4888, "src": "5300:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4871, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5300:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 4874, "mutability": "mutable", "name": "returndata", "nameLocation": "5327:10:27", "nodeType": "VariableDeclaration", "scope": 4888, "src": "5314:23:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4873, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5314:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 4881, "initialValue": {"arguments": [{"id": 4879, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4844, "src": "5367:4:27", "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": 4875, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4842, "src": "5341:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5348:4:27", "memberName": "call", "nodeType": "MemberAccess", "src": "5341:11:27", "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": 4878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{"id": 4877, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4846, "src": "5360:5:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "src": "5341:25:27", "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": 4880, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5341:31:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "5299:73:27"}, {"expression": {"arguments": [{"id": 4883, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4872, "src": "5406:7:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 4884, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4874, "src": "5415:10:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 4885, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4848, "src": "5427:12:27", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 4882, "name": "verifyCallResult", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5024, "src": "5389:16:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"}}, "id": 4886, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5389:51:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4852, "id": 4887, "nodeType": "Return", "src": "5382:58:27"}]}, "documentation": {"id": 4840, "nodeType": "StructuredDocumentation", "src": "4706:237:27", "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"}, "id": 4889, "implemented": true, "kind": "function", "modifiers": [], "name": "functionCallWithValue", "nameLocation": "4957:21:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4849, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4842, "mutability": "mutable", "name": "target", "nameLocation": "4996:6:27", "nodeType": "VariableDeclaration", "scope": 4889, "src": "4988:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4841, "name": "address", "nodeType": "ElementaryTypeName", "src": "4988:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4844, "mutability": "mutable", "name": "data", "nameLocation": "5025:4:27", "nodeType": "VariableDeclaration", "scope": 4889, "src": "5012:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4843, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5012:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 4846, "mutability": "mutable", "name": "value", "nameLocation": "5047:5:27", "nodeType": "VariableDeclaration", "scope": 4889, "src": "5039:13:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4845, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5039:7:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 4848, "mutability": "mutable", "name": "errorMessage", "nameLocation": "5076:12:27", "nodeType": "VariableDeclaration", "scope": 4889, "src": "5062:26:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4847, "name": "string", "nodeType": "ElementaryTypeName", "src": "5062:6:27", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "4978:116:27"}, "returnParameters": {"id": 4852, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4851, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4889, "src": "5113:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4850, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5113:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5112:14:27"}, "scope": 5025, "src": "4948:499:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 4905, "nodeType": "Block", "src": "5724:97:27", "statements": [{"expression": {"arguments": [{"id": 4900, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4892, "src": "5760:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4901, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4894, "src": "5768:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", "id": 4902, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5774:39:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", "typeString": "literal_string \"Address: low-level static call failed\""}, "value": "Address: low-level static call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", "typeString": "literal_string \"Address: low-level static call failed\""}], "id": 4899, "name": "functionStaticCall", "nodeType": "Identifier", "overloadedDeclarations": [4906, 4941], "referencedDeclaration": 4941, "src": "5741:18:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"}}, "id": 4903, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5741:73:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4898, "id": 4904, "nodeType": "Return", "src": "5734:80:27"}]}, "documentation": {"id": 4890, "nodeType": "StructuredDocumentation", "src": "5453:166:27", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"}, "id": 4906, "implemented": true, "kind": "function", "modifiers": [], "name": "functionStaticCall", "nameLocation": "5633:18:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4895, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4892, "mutability": "mutable", "name": "target", "nameLocation": "5660:6:27", "nodeType": "VariableDeclaration", "scope": 4906, "src": "5652:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4891, "name": "address", "nodeType": "ElementaryTypeName", "src": "5652:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4894, "mutability": "mutable", "name": "data", "nameLocation": "5681:4:27", "nodeType": "VariableDeclaration", "scope": 4906, "src": "5668:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4893, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5668:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5651:35:27"}, "returnParameters": {"id": 4898, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4897, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4906, "src": "5710:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4896, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5710:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5709:14:27"}, "scope": 5025, "src": "5624:197:27", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 4940, "nodeType": "Block", "src": "6163:228:27", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 4920, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4909, "src": "6192:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 4919, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4748, "src": "6181:10:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 4921, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6181:18:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", "id": 4922, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6201:38:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", "typeString": "literal_string \"Address: static call to non-contract\""}, "value": "Address: static call to non-contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", "typeString": "literal_string \"Address: static call to non-contract\""}], "id": 4918, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6173:7:27", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4923, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6173:67:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4924, "nodeType": "ExpressionStatement", "src": "6173:67:27"}, {"assignments": [4926, 4928], "declarations": [{"constant": false, "id": 4926, "mutability": "mutable", "name": "success", "nameLocation": "6257:7:27", "nodeType": "VariableDeclaration", "scope": 4940, "src": "6252:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4925, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6252:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 4928, "mutability": "mutable", "name": "returndata", "nameLocation": "6279:10:27", "nodeType": "VariableDeclaration", "scope": 4940, "src": "6266:23:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4927, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6266:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 4933, "initialValue": {"arguments": [{"id": 4931, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4911, "src": "6311:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 4929, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4909, "src": "6293:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6300:10:27", "memberName": "staticcall", "nodeType": "MemberAccess", "src": "6293:17:27", "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": 4932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6293:23:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "6251:65:27"}, {"expression": {"arguments": [{"id": 4935, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4926, "src": "6350:7:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 4936, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4928, "src": "6359:10:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 4937, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4913, "src": "6371:12:27", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 4934, "name": "verifyCallResult", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5024, "src": "6333:16:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"}}, "id": 4938, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6333:51:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4917, "id": 4939, "nodeType": "Return", "src": "6326:58:27"}]}, "documentation": {"id": 4907, "nodeType": "StructuredDocumentation", "src": "5827:173:27", "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"}, "id": 4941, "implemented": true, "kind": "function", "modifiers": [], "name": "functionStaticCall", "nameLocation": "6014:18:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4914, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4909, "mutability": "mutable", "name": "target", "nameLocation": "6050:6:27", "nodeType": "VariableDeclaration", "scope": 4941, "src": "6042:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4908, "name": "address", "nodeType": "ElementaryTypeName", "src": "6042:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4911, "mutability": "mutable", "name": "data", "nameLocation": "6079:4:27", "nodeType": "VariableDeclaration", "scope": 4941, "src": "6066:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4910, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6066:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 4913, "mutability": "mutable", "name": "errorMessage", "nameLocation": "6107:12:27", "nodeType": "VariableDeclaration", "scope": 4941, "src": "6093:26:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4912, "name": "string", "nodeType": "ElementaryTypeName", "src": "6093:6:27", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "6032:93:27"}, "returnParameters": {"id": 4917, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4916, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4941, "src": "6149:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4915, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6149:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6148:14:27"}, "scope": 5025, "src": "6005:386:27", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 4957, "nodeType": "Block", "src": "6667:101:27", "statements": [{"expression": {"arguments": [{"id": 4952, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4944, "src": "6705:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 4953, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4946, "src": "6713:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", "id": 4954, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6719:41:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", "typeString": "literal_string \"Address: low-level delegate call failed\""}, "value": "Address: low-level delegate call failed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", "typeString": "literal_string \"Address: low-level delegate call failed\""}], "id": 4951, "name": "functionDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [4958, 4993], "referencedDeclaration": 4993, "src": "6684:20:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"}}, "id": 4955, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6684:77:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4950, "id": 4956, "nodeType": "Return", "src": "6677:84:27"}]}, "documentation": {"id": 4942, "nodeType": "StructuredDocumentation", "src": "6397:168:27", "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"}, "id": 4958, "implemented": true, "kind": "function", "modifiers": [], "name": "functionDelegateCall", "nameLocation": "6579:20:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4947, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4944, "mutability": "mutable", "name": "target", "nameLocation": "6608:6:27", "nodeType": "VariableDeclaration", "scope": 4958, "src": "6600:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4943, "name": "address", "nodeType": "ElementaryTypeName", "src": "6600:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4946, "mutability": "mutable", "name": "data", "nameLocation": "6629:4:27", "nodeType": "VariableDeclaration", "scope": 4958, "src": "6616:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4945, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6616:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6599:35:27"}, "returnParameters": {"id": 4950, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4949, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4958, "src": "6653:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4948, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6653:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "6652:14:27"}, "scope": 5025, "src": "6570:198:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 4992, "nodeType": "Block", "src": "7109:232:27", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 4972, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4961, "src": "7138:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 4971, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4748, "src": "7127:10:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 4973, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7127:18:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", "id": 4974, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7147:40:27", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520", "typeString": "literal_string \"Address: delegate call to non-contract\""}, "value": "Address: delegate call to non-contract"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520", "typeString": "literal_string \"Address: delegate call to non-contract\""}], "id": 4970, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7119:7:27", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 4975, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7119:69:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 4976, "nodeType": "ExpressionStatement", "src": "7119:69:27"}, {"assignments": [4978, 4980], "declarations": [{"constant": false, "id": 4978, "mutability": "mutable", "name": "success", "nameLocation": "7205:7:27", "nodeType": "VariableDeclaration", "scope": 4992, "src": "7200:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4977, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7200:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 4980, "mutability": "mutable", "name": "returndata", "nameLocation": "7227:10:27", "nodeType": "VariableDeclaration", "scope": 4992, "src": "7214:23:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4979, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7214:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 4985, "initialValue": {"arguments": [{"id": 4983, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4963, "src": "7261:4:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"id": 4981, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4961, "src": "7241:6:27", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 4982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7248:12:27", "memberName": "delegatecall", "nodeType": "MemberAccess", "src": "7241:19:27", "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": 4984, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7241:25:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)"}}, "nodeType": "VariableDeclarationStatement", "src": "7199:67:27"}, {"expression": {"arguments": [{"id": 4987, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4978, "src": "7300:7:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 4988, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4980, "src": "7309:10:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, {"id": 4989, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4965, "src": "7321:12:27", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 4986, "name": "verifyCallResult", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5024, "src": "7283:16:27", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"}}, "id": 4990, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7283:51:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 4969, "id": 4991, "nodeType": "Return", "src": "7276:58:27"}]}, "documentation": {"id": 4959, "nodeType": "StructuredDocumentation", "src": "6774:175:27", "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"}, "id": 4993, "implemented": true, "kind": "function", "modifiers": [], "name": "functionDelegateCall", "nameLocation": "6963:20:27", "nodeType": "FunctionDefinition", "parameters": {"id": 4966, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4961, "mutability": "mutable", "name": "target", "nameLocation": "7001:6:27", "nodeType": "VariableDeclaration", "scope": 4993, "src": "6993:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 4960, "name": "address", "nodeType": "ElementaryTypeName", "src": "6993:7:27", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 4963, "mutability": "mutable", "name": "data", "nameLocation": "7030:4:27", "nodeType": "VariableDeclaration", "scope": 4993, "src": "7017:17:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4962, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7017:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 4965, "mutability": "mutable", "name": "errorMessage", "nameLocation": "7058:12:27", "nodeType": "VariableDeclaration", "scope": 4993, "src": "7044:26:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4964, "name": "string", "nodeType": "ElementaryTypeName", "src": "7044:6:27", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "6983:93:27"}, "returnParameters": {"id": 4969, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4968, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 4993, "src": "7095:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4967, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7095:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "7094:14:27"}, "scope": 5025, "src": "6954:387:27", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 5023, "nodeType": "Block", "src": "7721:582:27", "statements": [{"condition": {"id": 5005, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4996, "src": "7735:7:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 5021, "nodeType": "Block", "src": "7792:505:27", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 5009, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4998, "src": "7876:10:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 5010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7887:6:27", "memberName": "length", "nodeType": "MemberAccess", "src": "7876:17:27", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 5011, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7896:1:27", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "7876:21:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 5019, "nodeType": "Block", "src": "8234:53:27", "statements": [{"expression": {"arguments": [{"id": 5016, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5000, "src": "8259:12:27", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 5015, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "8252:6:27", "typeDescriptions": {"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure"}}, "id": 5017, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8252:20:27", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5018, "nodeType": "ExpressionStatement", "src": "8252:20:27"}]}, "id": 5020, "nodeType": "IfStatement", "src": "7872:415:27", "trueBody": {"id": 5014, "nodeType": "Block", "src": "7899:329:27", "statements": [{"AST": {"nodeType": "YulBlock", "src": "8069:145:27", "statements": [{"nodeType": "YulVariableDeclaration", "src": "8091:40:27", "value": {"arguments": [{"name": "returndata", "nodeType": "YulIdentifier", "src": "8120:10:27"}], "functionName": {"name": "mload", "nodeType": "YulIdentifier", "src": "8114:5:27"}, "nodeType": "YulFunctionCall", "src": "8114:17:27"}, "variables": [{"name": "returndata_size", "nodeType": "YulTypedName", "src": "8095:15:27", "type": ""}]}, {"expression": {"arguments": [{"arguments": [{"kind": "number", "nodeType": "YulLiteral", "src": "8163:2:27", "type": "", "value": "32"}, {"name": "returndata", "nodeType": "YulIdentifier", "src": "8167:10:27"}], "functionName": {"name": "add", "nodeType": "YulIdentifier", "src": "8159:3:27"}, "nodeType": "YulFunctionCall", "src": "8159:19:27"}, {"name": "returndata_size", "nodeType": "YulIdentifier", "src": "8180:15:27"}], "functionName": {"name": "revert", "nodeType": "YulIdentifier", "src": "8152:6:27"}, "nodeType": "YulFunctionCall", "src": "8152:44:27"}, "nodeType": "YulExpressionStatement", "src": "8152:44:27"}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "london", "externalReferences": [{"declaration": 4998, "isOffset": false, "isSlot": false, "src": "8120:10:27", "valueSize": 1}, {"declaration": 4998, "isOffset": false, "isSlot": false, "src": "8167:10:27", "valueSize": 1}], "id": 5013, "nodeType": "InlineAssembly", "src": "8060:154:27"}]}}]}, "id": 5022, "nodeType": "IfStatement", "src": "7731:566:27", "trueBody": {"id": 5008, "nodeType": "Block", "src": "7744:42:27", "statements": [{"expression": {"id": 5006, "name": "returndata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4998, "src": "7765:10:27", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "functionReturnParameters": 5004, "id": 5007, "nodeType": "Return", "src": "7758:17:27"}]}}]}, "documentation": {"id": 4994, "nodeType": "StructuredDocumentation", "src": "7347:209:27", "text": " @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"}, "id": 5024, "implemented": true, "kind": "function", "modifiers": [], "name": "verifyCallResult", "nameLocation": "7570:16:27", "nodeType": "FunctionDefinition", "parameters": {"id": 5001, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 4996, "mutability": "mutable", "name": "success", "nameLocation": "7601:7:27", "nodeType": "VariableDeclaration", "scope": 5024, "src": "7596:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 4995, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7596:4:27", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 4998, "mutability": "mutable", "name": "returndata", "nameLocation": "7631:10:27", "nodeType": "VariableDeclaration", "scope": 5024, "src": "7618:23:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 4997, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7618:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}, {"constant": false, "id": 5000, "mutability": "mutable", "name": "errorMessage", "nameLocation": "7665:12:27", "nodeType": "VariableDeclaration", "scope": 5024, "src": "7651:26:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 4999, "name": "string", "nodeType": "ElementaryTypeName", "src": "7651:6:27", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "7586:97:27"}, "returnParameters": {"id": 5004, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5003, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5024, "src": "7707:12:27", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 5002, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7707:5:27", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "7706:14:27"}, "scope": 5025, "src": "7561:742:27", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 5026, "src": "194:8111:27", "usedErrors": []}], "src": "101:8205:27"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Context.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/utils/Context.sol", "exportedSymbols": {"Context": [5047]}, "id": 5048, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5027, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "86:23:28"}, {"abstract": true, "baseContracts": [], "canonicalName": "Context", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 5028, "nodeType": "StructuredDocumentation", "src": "111:496:28", "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": 5047, "linearizedBaseContracts": [5047], "name": "Context", "nameLocation": "626:7:28", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 5036, "nodeType": "Block", "src": "702:34:28", "statements": [{"expression": {"expression": {"id": 5033, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "719:3:28", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 5034, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "723:6:28", "memberName": "sender", "nodeType": "MemberAccess", "src": "719:10:28", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 5032, "id": 5035, "nodeType": "Return", "src": "712:17:28"}]}, "id": 5037, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgSender", "nameLocation": "649:10:28", "nodeType": "FunctionDefinition", "parameters": {"id": 5029, "nodeType": "ParameterList", "parameters": [], "src": "659:2:28"}, "returnParameters": {"id": 5032, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5031, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5037, "src": "693:7:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5030, "name": "address", "nodeType": "ElementaryTypeName", "src": "693:7:28", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "692:9:28"}, "scope": 5047, "src": "640:96:28", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 5045, "nodeType": "Block", "src": "809:32:28", "statements": [{"expression": {"expression": {"id": 5042, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "826:3:28", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 5043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "830:4:28", "memberName": "data", "nodeType": "MemberAccess", "src": "826:8:28", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "functionReturnParameters": 5041, "id": 5044, "nodeType": "Return", "src": "819:15:28"}]}, "id": 5046, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgData", "nameLocation": "751:8:28", "nodeType": "FunctionDefinition", "parameters": {"id": 5038, "nodeType": "ParameterList", "parameters": [], "src": "759:2:28"}, "returnParameters": {"id": 5041, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5040, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5046, "src": "793:14:28", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 5039, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "793:5:28", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "792:16:28"}, "scope": 5047, "src": "742:99:28", "stateMutability": "view", "virtual": true, "visibility": "internal"}], "scope": 5048, "src": "608:235:28", "usedErrors": []}], "src": "86:758:28"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Strings.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/utils/Strings.sol", "exportedSymbols": {"Strings": [5273]}, "id": 5274, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5049, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "101:23:29"}, {"abstract": false, "baseContracts": [], "canonicalName": "Strings", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 5050, "nodeType": "StructuredDocumentation", "src": "126:34:29", "text": " @dev String operations."}, "fullyImplemented": true, "id": 5273, "linearizedBaseContracts": [5273], "name": "Strings", "nameLocation": "169:7:29", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 5053, "mutability": "constant", "name": "_HEX_SYMBOLS", "nameLocation": "208:12:29", "nodeType": "VariableDeclaration", "scope": 5273, "src": "183:58:29", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}, "typeName": {"id": 5051, "name": "bytes16", "nodeType": "ElementaryTypeName", "src": "183:7:29", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}}, "value": {"hexValue": "30313233343536373839616263646566", "id": 5052, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "223:18:29", "typeDescriptions": {"typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f", "typeString": "literal_string \"0123456789abcdef\""}, "value": "0123456789abcdef"}, "visibility": "private"}, {"constant": true, "id": 5056, "mutability": "constant", "name": "_ADDRESS_LENGTH", "nameLocation": "270:15:29", "nodeType": "VariableDeclaration", "scope": 5273, "src": "247:43:29", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 5054, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "247:5:29", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": {"hexValue": "3230", "id": 5055, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "288:2:29", "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "visibility": "private"}, {"body": {"id": 5134, "nodeType": "Block", "src": "463:632:29", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5066, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5064, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5059, "src": "665:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 5065, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "674:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "665:10:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5070, "nodeType": "IfStatement", "src": "661:51:29", "trueBody": {"id": 5069, "nodeType": "Block", "src": "677:35:29", "statements": [{"expression": {"hexValue": "30", "id": 5067, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "698:3:29", "typeDescriptions": {"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\""}, "value": "0"}, "functionReturnParameters": 5063, "id": 5068, "nodeType": "Return", "src": "691:10:29"}]}}, {"assignments": [5072], "declarations": [{"constant": false, "id": 5072, "mutability": "mutable", "name": "temp", "nameLocation": "729:4:29", "nodeType": "VariableDeclaration", "scope": 5134, "src": "721:12:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5071, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "721:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5074, "initialValue": {"id": 5073, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5059, "src": "736:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "721:20:29"}, {"assignments": [5076], "declarations": [{"constant": false, "id": 5076, "mutability": "mutable", "name": "digits", "nameLocation": "759:6:29", "nodeType": "VariableDeclaration", "scope": 5134, "src": "751:14:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5075, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "751:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5077, "nodeType": "VariableDeclarationStatement", "src": "751:14:29"}, {"body": {"id": 5088, "nodeType": "Block", "src": "793:57:29", "statements": [{"expression": {"id": 5082, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "807:8:29", "subExpression": {"id": 5081, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5076, "src": "807:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5083, "nodeType": "ExpressionStatement", "src": "807:8:29"}, {"expression": {"id": 5086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5084, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5072, "src": "829:4:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"hexValue": "3130", "id": 5085, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "837:2:29", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "829:10:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5087, "nodeType": "ExpressionStatement", "src": "829:10:29"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5078, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5072, "src": "782:4:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 5079, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "790:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "782:9:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5089, "nodeType": "WhileStatement", "src": "775:75:29"}, {"assignments": [5091], "declarations": [{"constant": false, "id": 5091, "mutability": "mutable", "name": "buffer", "nameLocation": "872:6:29", "nodeType": "VariableDeclaration", "scope": 5134, "src": "859:19:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 5090, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "859:5:29", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 5096, "initialValue": {"arguments": [{"id": 5094, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5076, "src": "891:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5093, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "881:9:29", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 5092, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "885:5:29", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 5095, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "881:17:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "859:39:29"}, {"body": {"id": 5127, "nodeType": "Block", "src": "927:131:29", "statements": [{"expression": {"id": 5102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5100, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5076, "src": "941:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"hexValue": "31", "id": 5101, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "951:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "941:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5103, "nodeType": "ExpressionStatement", "src": "941:11:29"}, {"expression": {"id": 5121, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 5104, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5091, "src": "966:6:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 5106, "indexExpression": {"id": 5105, "name": "digits", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5076, "src": "973:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "966:14:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "3438", "id": 5111, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "996:2:29", "typeDescriptions": {"typeIdentifier": "t_rational_48_by_1", "typeString": "int_const 48"}, "value": "48"}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5114, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5059, "src": "1009:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"hexValue": "3130", "id": 5115, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1017:2:29", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "1009:10:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5113, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1001:7:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 5112, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1001:7:29", "typeDescriptions": {}}}, "id": 5117, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1001:19:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "996:24:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5110, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "990:5:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 5109, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "990:5:29", "typeDescriptions": {}}}, "id": 5119, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "990:31:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 5108, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "983:6:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)"}, "typeName": {"id": 5107, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "983:6:29", "typeDescriptions": {}}}, "id": 5120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "983:39:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "966:56:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 5122, "nodeType": "ExpressionStatement", "src": "966:56:29"}, {"expression": {"id": 5125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5123, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5059, "src": "1036:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"hexValue": "3130", "id": 5124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1045:2:29", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "1036:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5126, "nodeType": "ExpressionStatement", "src": "1036:11:29"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5097, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5059, "src": "915:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 5098, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "924:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "915:10:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5128, "nodeType": "WhileStatement", "src": "908:150:29"}, {"expression": {"arguments": [{"id": 5131, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5091, "src": "1081:6:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 5130, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1074:6:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 5129, "name": "string", "nodeType": "ElementaryTypeName", "src": "1074:6:29", "typeDescriptions": {}}}, "id": 5132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1074:14:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 5063, "id": 5133, "nodeType": "Return", "src": "1067:21:29"}]}, "documentation": {"id": 5057, "nodeType": "StructuredDocumentation", "src": "297:90:29", "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."}, "id": 5135, "implemented": true, "kind": "function", "modifiers": [], "name": "toString", "nameLocation": "401:8:29", "nodeType": "FunctionDefinition", "parameters": {"id": 5060, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5059, "mutability": "mutable", "name": "value", "nameLocation": "418:5:29", "nodeType": "VariableDeclaration", "scope": 5135, "src": "410:13:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5058, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "410:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "409:15:29"}, "returnParameters": {"id": 5063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5062, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5135, "src": "448:13:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5061, "name": "string", "nodeType": "ElementaryTypeName", "src": "448:6:29", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "447:15:29"}, "scope": 5273, "src": "392:703:29", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 5175, "nodeType": "Block", "src": "1274:255:29", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5143, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5138, "src": "1288:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 5144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1297:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1288:10:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5149, "nodeType": "IfStatement", "src": "1284:54:29", "trueBody": {"id": 5148, "nodeType": "Block", "src": "1300:38:29", "statements": [{"expression": {"hexValue": "30783030", "id": 5146, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1321:6:29", "typeDescriptions": {"typeIdentifier": "t_stringliteral_27489e20a0060b723a1748bdff5e44570ee9fae64141728105692eac6031e8a4", "typeString": "literal_string \"0x00\""}, "value": "0x00"}, "functionReturnParameters": 5142, "id": 5147, "nodeType": "Return", "src": "1314:13:29"}]}}, {"assignments": [5151], "declarations": [{"constant": false, "id": 5151, "mutability": "mutable", "name": "temp", "nameLocation": "1355:4:29", "nodeType": "VariableDeclaration", "scope": 5175, "src": "1347:12:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5150, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1347:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5153, "initialValue": {"id": 5152, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5138, "src": "1362:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1347:20:29"}, {"assignments": [5155], "declarations": [{"constant": false, "id": 5155, "mutability": "mutable", "name": "length", "nameLocation": "1385:6:29", "nodeType": "VariableDeclaration", "scope": 5175, "src": "1377:14:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5154, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1377:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5157, "initialValue": {"hexValue": "30", "id": 5156, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1394:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "1377:18:29"}, {"body": {"id": 5168, "nodeType": "Block", "src": "1423:57:29", "statements": [{"expression": {"id": 5162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1437:8:29", "subExpression": {"id": 5161, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5155, "src": "1437:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5163, "nodeType": "ExpressionStatement", "src": "1437:8:29"}, {"expression": {"id": 5166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5164, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5151, "src": "1459:4:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "38", "id": 5165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1468:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8"}, "value": "8"}, "src": "1459:10:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5167, "nodeType": "ExpressionStatement", "src": "1459:10:29"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5158, "name": "temp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5151, "src": "1412:4:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 5159, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1420:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1412:9:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5169, "nodeType": "WhileStatement", "src": "1405:75:29"}, {"expression": {"arguments": [{"id": 5171, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5138, "src": "1508:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5172, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5155, "src": "1515:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5170, "name": "toHexString", "nodeType": "Identifier", "overloadedDeclarations": [5176, 5252, 5272], "referencedDeclaration": 5252, "src": "1496:11:29", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256,uint256) pure returns (string memory)"}}, "id": 5173, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1496:26:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 5142, "id": 5174, "nodeType": "Return", "src": "1489:33:29"}]}, "documentation": {"id": 5136, "nodeType": "StructuredDocumentation", "src": "1101:94:29", "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."}, "id": 5176, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "1209:11:29", "nodeType": "FunctionDefinition", "parameters": {"id": 5139, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5138, "mutability": "mutable", "name": "value", "nameLocation": "1229:5:29", "nodeType": "VariableDeclaration", "scope": 5176, "src": "1221:13:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5137, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1221:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1220:15:29"}, "returnParameters": {"id": 5142, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5141, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5176, "src": "1259:13:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5140, "name": "string", "nodeType": "ElementaryTypeName", "src": "1259:6:29", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1258:15:29"}, "scope": 5273, "src": "1200:329:29", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 5251, "nodeType": "Block", "src": "1742:351:29", "statements": [{"assignments": [5187], "declarations": [{"constant": false, "id": 5187, "mutability": "mutable", "name": "buffer", "nameLocation": "1765:6:29", "nodeType": "VariableDeclaration", "scope": 5251, "src": "1752:19:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 5186, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1752:5:29", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 5196, "initialValue": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 5190, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 5191, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5181, "src": "1788:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1784:10:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "32", "id": 5193, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1797:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "1784:14:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5189, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1774:9:29", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 5188, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1778:5:29", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 5195, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1774:25:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "1752:47:29"}, {"expression": {"id": 5201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 5197, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5187, "src": "1809:6:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 5199, "indexExpression": {"hexValue": "30", "id": 5198, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1816:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1809:9:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 5200, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1821:3:29", "typeDescriptions": {"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\""}, "value": "0"}, "src": "1809:15:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 5202, "nodeType": "ExpressionStatement", "src": "1809:15:29"}, {"expression": {"id": 5207, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 5203, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5187, "src": "1834:6:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 5205, "indexExpression": {"hexValue": "31", "id": 5204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1841:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1834:9:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "78", "id": 5206, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1846:3:29", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83", "typeString": "literal_string \"x\""}, "value": "x"}, "src": "1834:15:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 5208, "nodeType": "ExpressionStatement", "src": "1834:15:29"}, {"body": {"id": 5237, "nodeType": "Block", "src": "1904:87:29", "statements": [{"expression": {"id": 5231, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 5223, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5187, "src": "1918:6:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 5225, "indexExpression": {"id": 5224, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5210, "src": "1925:1:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1918:9:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"baseExpression": {"id": 5226, "name": "_HEX_SYMBOLS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5053, "src": "1930:12:29", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}}, "id": 5230, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5227, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5179, "src": "1943:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"hexValue": "307866", "id": 5228, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1951:3:29", "typeDescriptions": {"typeIdentifier": "t_rational_15_by_1", "typeString": "int_const 15"}, "value": "0xf"}, "src": "1943:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1930:25:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "1918:37:29", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 5232, "nodeType": "ExpressionStatement", "src": "1918:37:29"}, {"expression": {"id": 5235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5233, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5179, "src": "1969:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "34", "id": 5234, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1979:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "1969:11:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5236, "nodeType": "ExpressionStatement", "src": "1969:11:29"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5217, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5210, "src": "1892:1:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "31", "id": 5218, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1896:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1892:5:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5238, "initializationExpression": {"assignments": [5210], "declarations": [{"constant": false, "id": 5210, "mutability": "mutable", "name": "i", "nameLocation": "1872:1:29", "nodeType": "VariableDeclaration", "scope": 5238, "src": "1864:9:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5209, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1864:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5216, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 5211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1876:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 5212, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5181, "src": "1880:6:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1876:10:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 5214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1889:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1876:14:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1864:26:29"}, "loopExpression": {"expression": {"id": 5221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": true, "src": "1899:3:29", "subExpression": {"id": 5220, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5210, "src": "1901:1:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5222, "nodeType": "ExpressionStatement", "src": "1899:3:29"}, "nodeType": "ForStatement", "src": "1859:132:29"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5240, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5179, "src": "2008:5:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 5241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2017:1:29", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2008:10:29", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74", "id": 5243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2020:34:29", "typeDescriptions": {"typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", "typeString": "literal_string \"Strings: hex length insufficient\""}, "value": "Strings: hex length insufficient"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", "typeString": "literal_string \"Strings: hex length insufficient\""}], "id": 5239, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2000:7:29", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5244, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2000:55:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5245, "nodeType": "ExpressionStatement", "src": "2000:55:29"}, {"expression": {"arguments": [{"id": 5248, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5187, "src": "2079:6:29", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 5247, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2072:6:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 5246, "name": "string", "nodeType": "ElementaryTypeName", "src": "2072:6:29", "typeDescriptions": {}}}, "id": 5249, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2072:14:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 5185, "id": 5250, "nodeType": "Return", "src": "2065:21:29"}]}, "documentation": {"id": 5177, "nodeType": "StructuredDocumentation", "src": "1535:112:29", "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."}, "id": 5252, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "1661:11:29", "nodeType": "FunctionDefinition", "parameters": {"id": 5182, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5179, "mutability": "mutable", "name": "value", "nameLocation": "1681:5:29", "nodeType": "VariableDeclaration", "scope": 5252, "src": "1673:13:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5178, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1673:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5181, "mutability": "mutable", "name": "length", "nameLocation": "1696:6:29", "nodeType": "VariableDeclaration", "scope": 5252, "src": "1688:14:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5180, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1688:7:29", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1672:31:29"}, "returnParameters": {"id": 5185, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5184, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5252, "src": "1727:13:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5183, "name": "string", "nodeType": "ElementaryTypeName", "src": "1727:6:29", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1726:15:29"}, "scope": 5273, "src": "1652:441:29", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 5271, "nodeType": "Block", "src": "2318:76:29", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [{"id": 5265, "name": "addr", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5255, "src": "2363:4:29", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5264, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2355:7:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)"}, "typeName": {"id": 5263, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "2355:7:29", "typeDescriptions": {}}}, "id": 5266, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2355:13:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint160", "typeString": "uint160"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint160", "typeString": "uint160"}], "id": 5262, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2347:7:29", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 5261, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2347:7:29", "typeDescriptions": {}}}, "id": 5267, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2347:22:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5268, "name": "_ADDRESS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5056, "src": "2371:15:29", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 5260, "name": "toHexString", "nodeType": "Identifier", "overloadedDeclarations": [5176, 5252, 5272], "referencedDeclaration": 5252, "src": "2335:11:29", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256,uint256) pure returns (string memory)"}}, "id": 5269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2335:52:29", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 5259, "id": 5270, "nodeType": "Return", "src": "2328:59:29"}]}, "documentation": {"id": 5253, "nodeType": "StructuredDocumentation", "src": "2099:141:29", "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."}, "id": 5272, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "2254:11:29", "nodeType": "FunctionDefinition", "parameters": {"id": 5256, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5255, "mutability": "mutable", "name": "addr", "nameLocation": "2274:4:29", "nodeType": "VariableDeclaration", "scope": 5272, "src": "2266:12:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5254, "name": "address", "nodeType": "ElementaryTypeName", "src": "2266:7:29", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2265:14:29"}, "returnParameters": {"id": 5259, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5258, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5272, "src": "2303:13:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5257, "name": "string", "nodeType": "ElementaryTypeName", "src": "2303:6:29", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2302:15:29"}, "scope": 5273, "src": "2245:149:29", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 5274, "src": "161:2235:29", "usedErrors": []}], "src": "101:2296:29"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol", "exportedSymbols": {"ERC165": [5297], "IERC165": [5309]}, "id": 5298, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5275, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "99:23:30"}, {"absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", "file": "./IERC165.sol", "id": 5276, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 5298, "sourceUnit": 5310, "src": "124:23:30", "symbolAliases": [], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 5278, "name": "IERC165", "nameLocations": ["754:7:30"], "nodeType": "IdentifierPath", "referencedDeclaration": 5309, "src": "754:7:30"}, "id": 5279, "nodeType": "InheritanceSpecifier", "src": "754:7:30"}], "canonicalName": "ERC165", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 5277, "nodeType": "StructuredDocumentation", "src": "149:576:30", "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."}, "fullyImplemented": true, "id": 5297, "linearizedBaseContracts": [5297, 5309], "name": "ERC165", "nameLocation": "744:6:30", "nodeType": "ContractDefinition", "nodes": [{"baseFunctions": [5308], "body": {"id": 5295, "nodeType": "Block", "src": "920:64:30", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 5293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5288, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5282, "src": "937:11:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 5290, "name": "IERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5309, "src": "957:7:30", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC165_$5309_$", "typeString": "type(contract IERC165)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC165_$5309_$", "typeString": "type(contract IERC165)"}], "id": 5289, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "952:4:30", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 5291, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "952:13:30", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$5309", "typeString": "type(contract IERC165)"}}, "id": 5292, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "966:11:30", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "952:25:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "937:40:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 5287, "id": 5294, "nodeType": "Return", "src": "930:47:30"}]}, "documentation": {"id": 5280, "nodeType": "StructuredDocumentation", "src": "768:56:30", "text": " @dev See {IERC165-supportsInterface}."}, "functionSelector": "01ffc9a7", "id": 5296, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "838:17:30", "nodeType": "FunctionDefinition", "overrides": {"id": 5284, "nodeType": "OverrideSpecifier", "overrides": [], "src": "896:8:30"}, "parameters": {"id": 5283, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5282, "mutability": "mutable", "name": "interfaceId", "nameLocation": "863:11:30", "nodeType": "VariableDeclaration", "scope": 5296, "src": "856:18:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 5281, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "856:6:30", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "855:20:30"}, "returnParameters": {"id": 5287, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5286, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5296, "src": "914:4:30", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5285, "name": "bool", "nodeType": "ElementaryTypeName", "src": "914:4:30", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "913:6:30"}, "scope": 5297, "src": "829:155:30", "stateMutability": "view", "virtual": true, "visibility": "public"}], "scope": 5298, "src": "726:260:30", "usedErrors": []}], "src": "99:888:30"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {"AST": {"absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", "exportedSymbols": {"IERC165": [5309]}, "id": 5310, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5299, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "100:23:31"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC165", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 5300, "nodeType": "StructuredDocumentation", "src": "125:279:31", "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\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": 5309, "linearizedBaseContracts": [5309], "name": "IERC165", "nameLocation": "415:7:31", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 5301, "nodeType": "StructuredDocumentation", "src": "429:340:31", "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[EIP 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": 5308, "implemented": false, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "783:17:31", "nodeType": "FunctionDefinition", "parameters": {"id": 5304, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5303, "mutability": "mutable", "name": "interfaceId", "nameLocation": "808:11:31", "nodeType": "VariableDeclaration", "scope": 5308, "src": "801:18:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 5302, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "801:6:31", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "800:20:31"}, "returnParameters": {"id": 5307, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5306, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 5308, "src": "844:4:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5305, "name": "bool", "nodeType": "ElementaryTypeName", "src": "844:4:31", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "843:6:31"}, "scope": 5309, "src": "774:76:31", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 5310, "src": "405:447:31", "usedErrors": []}], "src": "100:753:31"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ERC721Test.sol": {"AST": {"absolutePath": "contracts/ERC721Test.sol", "exportedSymbols": {"ERC721": [4444], "ERC721Test": [5387], "ERC721URIStorage": [4703], "IERC721": [4560], "Ownable": [2808]}, "id": 5388, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5311, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:32"}, {"absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol", "file": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol", "id": 5315, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 5388, "sourceUnit": 4704, "src": "56:121:32", "symbolAliases": [{"foreign": {"id": 5312, "name": "IERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4560, "src": "65:7:32", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 5313, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4444, "src": "74:6:32", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 5314, "name": "ERC721URIStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4703, "src": "82:16:32", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/access/Ownable.sol", "file": "@openzeppelin/contracts/access/Ownable.sol", "id": 5317, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 5388, "sourceUnit": 2809, "src": "178:69:32", "symbolAliases": [{"foreign": {"id": 5316, "name": "Ownable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2808, "src": "187:7:32", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 5319, "name": "ERC721URIStorage", "nameLocations": ["364:16:32"], "nodeType": "IdentifierPath", "referencedDeclaration": 4703, "src": "364:16:32"}, "id": 5320, "nodeType": "InheritanceSpecifier", "src": "364:16:32"}, {"baseName": {"id": 5321, "name": "Ownable", "nameLocations": ["382:7:32"], "nodeType": "IdentifierPath", "referencedDeclaration": 2808, "src": "382:7:32"}, "id": 5322, "nodeType": "InheritanceSpecifier", "src": "382:7:32"}], "canonicalName": "ERC721Test", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 5318, "nodeType": "StructuredDocumentation", "src": "249:91:32", "text": " @dev This contract is using for testing create course with external NFT Contract"}, "fullyImplemented": true, "id": 5387, "linearizedBaseContracts": [5387, 2808, 4703, 4444, 4730, 4560, 5297, 5309, 5047], "name": "ERC721Test", "nameLocation": "350:10:32", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "9f0432214927ca5d54e705bee45cb45cd0b88d9c6bc15906cc3498feb1d81310", "id": 5330, "name": "MintedNFT", "nameLocation": "402:9:32", "nodeType": "EventDefinition", "parameters": {"id": 5329, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5324, "indexed": false, "mutability": "mutable", "name": "to", "nameLocation": "420:2:32", "nodeType": "VariableDeclaration", "scope": 5330, "src": "412:10:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5323, "name": "address", "nodeType": "ElementaryTypeName", "src": "412:7:32", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 5326, "indexed": false, "mutability": "mutable", "name": "tokenId", "nameLocation": "432:7:32", "nodeType": "VariableDeclaration", "scope": 5330, "src": "424:15:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5325, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "424:7:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5328, "indexed": false, "mutability": "mutable", "name": "uri", "nameLocation": "448:3:32", "nodeType": "VariableDeclaration", "scope": 5330, "src": "441:10:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5327, "name": "string", "nodeType": "ElementaryTypeName", "src": "441:6:32", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "411:41:32"}, "src": "396:57:32"}, {"constant": false, "documentation": {"id": 5331, "nodeType": "StructuredDocumentation", "src": "459:58:32", "text": " @notice ID of Minted NFT, increase by 1"}, "functionSelector": "714cff56", "id": 5333, "mutability": "mutable", "name": "tokenIds", "nameLocation": "537:8:32", "nodeType": "VariableDeclaration", "scope": 5387, "src": "522:23:32", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5332, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "public"}, {"body": {"id": 5345, "nodeType": "Block", "src": "766:2:32", "statements": []}, "documentation": {"id": 5334, "nodeType": "StructuredDocumentation", "src": "552:134:32", "text": " @notice Function called when contract is deployed\n @param name Name of NFT\n @param symbol Symbol of NFT"}, "id": 5346, "implemented": true, "kind": "constructor", "modifiers": [{"arguments": [{"id": 5341, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5336, "src": "752:4:32", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 5342, "name": "symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5338, "src": "758:6:32", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "id": 5343, "kind": "baseConstructorSpecifier", "modifierName": {"id": 5340, "name": "ERC721", "nameLocations": ["745:6:32"], "nodeType": "IdentifierPath", "referencedDeclaration": 4444, "src": "745:6:32"}, "nodeType": "ModifierInvocation", "src": "745:20:32"}], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 5339, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5336, "mutability": "mutable", "name": "name", "nameLocation": "717:4:32", "nodeType": "VariableDeclaration", "scope": 5346, "src": "703:18:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5335, "name": "string", "nodeType": "ElementaryTypeName", "src": "703:6:32", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 5338, "mutability": "mutable", "name": "symbol", "nameLocation": "737:6:32", "nodeType": "VariableDeclaration", "scope": 5346, "src": "723:20:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5337, "name": "string", "nodeType": "ElementaryTypeName", "src": "723:6:32", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "702:42:32"}, "returnParameters": {"id": 5344, "nodeType": "ParameterList", "parameters": [], "src": "766:0:32"}, "scope": 5387, "src": "691:77:32", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 5385, "nodeType": "Block", "src": "1012:200:32", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 5362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5357, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5349, "src": "1030:3:32", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 5360, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1045:1:32", "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": 5359, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1037:7:32", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 5358, "name": "address", "nodeType": "ElementaryTypeName", "src": "1037:7:32", "typeDescriptions": {}}}, "id": 5361, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1037:10:32", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1030:17:32", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c69642061646472657373", "id": 5363, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1049:17:32", "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": 5356, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1022:7:32", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5364, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1022:45:32", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5365, "nodeType": "ExpressionStatement", "src": "1022:45:32"}, {"expression": {"id": 5367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1077:10:32", "subExpression": {"id": 5366, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5333, "src": "1077:8:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5368, "nodeType": "ExpressionStatement", "src": "1077:10:32"}, {"expression": {"arguments": [{"id": 5370, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5349, "src": "1107:3:32", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5371, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5333, "src": "1112:8:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5369, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [4059, 4088], "referencedDeclaration": 4059, "src": "1097:9:32", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 5372, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1097:24:32", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5373, "nodeType": "ExpressionStatement", "src": "1097:24:32"}, {"expression": {"arguments": [{"id": 5375, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5333, "src": "1144:8:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5376, "name": "_uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5351, "src": "1154:4:32", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 5374, "name": "_setTokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4672, "src": "1131:12:32", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (uint256,string memory)"}}, "id": 5377, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1131:28:32", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5378, "nodeType": "ExpressionStatement", "src": "1131:28:32"}, {"eventCall": {"arguments": [{"id": 5380, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5349, "src": "1185:3:32", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5381, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5333, "src": "1190:8:32", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5382, "name": "_uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5351, "src": "1200:4:32", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 5379, "name": "MintedNFT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5330, "src": "1175:9:32", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,uint256,string memory)"}}, "id": 5383, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1175:30:32", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5384, "nodeType": "EmitStatement", "src": "1170:35:32"}]}, "documentation": {"id": 5347, "nodeType": "StructuredDocumentation", "src": "774:164:32", "text": " @notice mint a NFT for _to address\n @param _to address of user\n @param _uri Ipfs link of NFT\n \n emit { MintedNFT } events"}, "functionSelector": "eacabe14", "id": 5386, "implemented": true, "kind": "function", "modifiers": [{"id": 5354, "kind": "modifierInvocation", "modifierName": {"id": 5353, "name": "onlyOwner", "nameLocations": ["1002:9:32"], "nodeType": "IdentifierPath", "referencedDeclaration": 2727, "src": "1002:9:32"}, "nodeType": "ModifierInvocation", "src": "1002:9:32"}], "name": "mintNFT", "nameLocation": "952:7:32", "nodeType": "FunctionDefinition", "parameters": {"id": 5352, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5349, "mutability": "mutable", "name": "_to", "nameLocation": "968:3:32", "nodeType": "VariableDeclaration", "scope": 5386, "src": "960:11:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5348, "name": "address", "nodeType": "ElementaryTypeName", "src": "960:7:32", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 5351, "mutability": "mutable", "name": "_uri", "nameLocation": "987:4:32", "nodeType": "VariableDeclaration", "scope": 5386, "src": "973:18:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5350, "name": "string", "nodeType": "ElementaryTypeName", "src": "973:6:32", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "959:33:32"}, "returnParameters": {"id": 5355, "nodeType": "ParameterList", "parameters": [], "src": "1012:0:32"}, "scope": 5387, "src": "943:269:32", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 5388, "src": "341:873:32", "usedErrors": []}], "src": "32:1182:32"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/IOUToken.sol": {"AST": {"absolutePath": "contracts/IOUToken.sol", "exportedSymbols": {"ERC20": [3474], "IOUToken": [5429]}, "id": 5430, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5389, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:33"}, {"absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "id": 5391, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 5430, "sourceUnit": 3475, "src": "56:70:33", "symbolAliases": [{"foreign": {"id": 5390, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3474, "src": "65:5:33", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 5393, "name": "ERC20", "nameLocations": ["212:5:33"], "nodeType": "IdentifierPath", "referencedDeclaration": 3474, "src": "212:5:33"}, "id": 5394, "nodeType": "InheritanceSpecifier", "src": "212:5:33"}], "canonicalName": "IOUToken", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 5392, "nodeType": "StructuredDocumentation", "src": "128:62:33", "text": " @title IOUToken Contract\n @author ReBaked Team"}, "fullyImplemented": true, "id": 5429, "linearizedBaseContracts": [5429, 3474, 3577, 3552, 5047], "name": "IOUToken", "nameLocation": "200:8:33", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 5414, "nodeType": "Block", "src": "342:46:33", "statements": [{"expression": {"arguments": [{"id": 5410, "name": "account_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5396, "src": "358:8:33", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5411, "name": "totalSupply_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5398, "src": "368:12:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5409, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3291, "src": "352:5:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 5412, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "352:29:33", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5413, "nodeType": "ExpressionStatement", "src": "352:29:33"}]}, "id": 5415, "implemented": true, "kind": "constructor", "modifiers": [{"arguments": [{"id": 5405, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5400, "src": "326:5:33", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 5406, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5402, "src": "333:7:33", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "id": 5407, "kind": "baseConstructorSpecifier", "modifierName": {"id": 5404, "name": "ERC20", "nameLocations": ["320:5:33"], "nodeType": "IdentifierPath", "referencedDeclaration": 3474, "src": "320:5:33"}, "nodeType": "ModifierInvocation", "src": "320:21:33"}], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 5403, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5396, "mutability": "mutable", "name": "account_", "nameLocation": "244:8:33", "nodeType": "VariableDeclaration", "scope": 5415, "src": "236:16:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5395, "name": "address", "nodeType": "ElementaryTypeName", "src": "236:7:33", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 5398, "mutability": "mutable", "name": "totalSupply_", "nameLocation": "262:12:33", "nodeType": "VariableDeclaration", "scope": 5415, "src": "254:20:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5397, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "254:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5400, "mutability": "mutable", "name": "name_", "nameLocation": "290:5:33", "nodeType": "VariableDeclaration", "scope": 5415, "src": "276:19:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5399, "name": "string", "nodeType": "ElementaryTypeName", "src": "276:6:33", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 5402, "mutability": "mutable", "name": "symbol_", "nameLocation": "311:7:33", "nodeType": "VariableDeclaration", "scope": 5415, "src": "297:21:33", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 5401, "name": "string", "nodeType": "ElementaryTypeName", "src": "297:6:33", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "235:84:33"}, "returnParameters": {"id": 5408, "nodeType": "ParameterList", "parameters": [], "src": "342:0:33"}, "scope": 5429, "src": "224:164:33", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 5427, "nodeType": "Block", "src": "556:45:33", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5422, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5037, "src": "572:10:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5423, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "572:12:33", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5424, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5418, "src": "586:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5421, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3363, "src": "566:5:33", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 5425, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "566:28:33", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5426, "nodeType": "ExpressionStatement", "src": "566:28:33"}]}, "documentation": {"id": 5416, "nodeType": "StructuredDocumentation", "src": "394:117:33", "text": " @notice Burn owned token\n @param amount_ Amount of token want to burn\n Emit {Transfer}"}, "functionSelector": "42966c68", "id": 5428, "implemented": true, "kind": "function", "modifiers": [], "name": "burn", "nameLocation": "525:4:33", "nodeType": "FunctionDefinition", "parameters": {"id": 5419, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5418, "mutability": "mutable", "name": "amount_", "nameLocation": "538:7:33", "nodeType": "VariableDeclaration", "scope": 5428, "src": "530:15:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5417, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "530:7:33", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "529:17:33"}, "returnParameters": {"id": 5420, "nodeType": "ParameterList", "parameters": [], "src": "556:0:33"}, "scope": 5429, "src": "516:85:33", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 5430, "src": "191:412:33", "usedErrors": []}], "src": "32:572:33"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/LearnToEarn.sol": {"AST": {"absolutePath": "contracts/LearnToEarn.sol", "exportedSymbols": {"Course": [8428], "ERC165CheckerUpgradeable": [2639], "IERC20Upgradeable": [419], "IERC721Upgradeable": [1762], "ILearnToEarn": [8537], "INFTReward": [8572], "LearnToEarn": [6300], "Learner": [8438], "OwnableUpgradeable": [131], "ReentrancyGuardUpgradeable": [341], "SafeERC20Upgradeable": [736]}, "id": 6301, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 5431, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:34"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", "id": 5433, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 342, "src": "57:121:34", "symbolAliases": [{"foreign": {"id": 5432, "name": "ReentrancyGuardUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "66:26:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "id": 5435, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 132, "src": "179:103:34", "symbolAliases": [{"foreign": {"id": 5434, "name": "OwnableUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "188:18:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "id": 5438, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 737, "src": "283:137:34", "symbolAliases": [{"foreign": {"id": 5436, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "292:17:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 5437, "name": "SafeERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 736, "src": "311:20:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol", "id": 5440, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 1763, "src": "421:109:34", "symbolAliases": [{"foreign": {"id": 5439, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "430:18:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol", "id": 5442, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 2640, "src": "531:128:34", "symbolAliases": [{"foreign": {"id": 5441, "name": "ERC165CheckerUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2639, "src": "540:24:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ILearnToEarn.sol", "file": "./interfaces/ILearnToEarn.sol", "id": 5446, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 8538, "src": "660:78:34", "symbolAliases": [{"foreign": {"id": 5443, "name": "ILearnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8537, "src": "669:12:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 5444, "name": "Course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8428, "src": "683:6:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 5445, "name": "Learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8438, "src": "691:7:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/INFTReward.sol", "file": "./interfaces/INFTReward.sol", "id": 5448, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6301, "sourceUnit": 8573, "src": "739:57:34", "symbolAliases": [{"foreign": {"id": 5447, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "748:10:34", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 5449, "name": "ReentrancyGuardUpgradeable", "nameLocations": ["822:26:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 341, "src": "822:26:34"}, "id": 5450, "nodeType": "InheritanceSpecifier", "src": "822:26:34"}, {"baseName": {"id": 5451, "name": "OwnableUpgradeable", "nameLocations": ["850:18:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 131, "src": "850:18:34"}, "id": 5452, "nodeType": "InheritanceSpecifier", "src": "850:18:34"}, {"baseName": {"id": 5453, "name": "ILearnToEarn", "nameLocations": ["870:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8537, "src": "870:12:34"}, "id": 5454, "nodeType": "InheritanceSpecifier", "src": "870:12:34"}], "canonicalName": "LearnToEarn", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 6300, "linearizedBaseContracts": [6300, 8537, 131, 2219, 341, 282], "name": "LearnToEarn", "nameLocation": "807:11:34", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 5458, "libraryName": {"id": 5455, "name": "SafeERC20Upgradeable", "nameLocations": ["895:20:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 736, "src": "895:20:34"}, "nodeType": "UsingForDirective", "src": "889:49:34", "typeName": {"id": 5457, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 5456, "name": "IERC20Upgradeable", "nameLocations": ["920:17:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "920:17:34"}, "referencedDeclaration": 419, "src": "920:17:34", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}}, {"global": false, "id": 5461, "libraryName": {"id": 5459, "name": "ERC165CheckerUpgradeable", "nameLocations": ["949:24:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 2639, "src": "949:24:34"}, "nodeType": "UsingForDirective", "src": "943:43:34", "typeName": {"id": 5460, "name": "address", "nodeType": "ElementaryTypeName", "src": "978:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, {"constant": false, "id": 5466, "mutability": "mutable", "name": "courseData", "nameLocation": "1053:10:34", "nodeType": "VariableDeclaration", "scope": 6300, "src": "1018:45:34", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course)"}, "typeName": {"id": 5465, "keyType": {"id": 5462, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1026:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1018:26:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course)"}, "valueType": {"id": 5464, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 5463, "name": "Course", "nameLocations": ["1037:6:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "1037:6:34"}, "referencedDeclaration": 8428, "src": "1037:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}}, "visibility": "private"}, {"constant": false, "id": 5473, "mutability": "mutable", "name": "learnerData", "nameLocation": "1171:11:34", "nodeType": "VariableDeclaration", "scope": 6300, "src": "1115:67:34", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Learner))"}, "typeName": {"id": 5472, "keyType": {"id": 5467, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1123:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1115:47:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Learner))"}, "valueType": {"id": 5471, "keyType": {"id": 5468, "name": "address", "nodeType": "ElementaryTypeName", "src": "1142:7:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1134:27:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$", "typeString": "mapping(address => struct Learner)"}, "valueType": {"id": 5470, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 5469, "name": "Learner", "nameLocations": ["1153:7:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8438, "src": "1153:7:34"}, "referencedDeclaration": 8438, "src": "1153:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner"}}}}, "visibility": "private"}, {"body": {"id": 5486, "nodeType": "Block", "src": "1288:63:34", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5481, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5479, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5476, "src": "1306:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 5480, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1316:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1306:11:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5a65726f20616d6f756e74", "id": 5482, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1319:13:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_499f3f4b0ad3588aa1eb6e198be77bff643a4218ffbf2bef1370e58aadea5df4", "typeString": "literal_string \"Zero amount\""}, "value": "Zero amount"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_499f3f4b0ad3588aa1eb6e198be77bff643a4218ffbf2bef1370e58aadea5df4", "typeString": "literal_string \"Zero amount\""}], "id": 5478, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1298:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5483, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1298:35:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5484, "nodeType": "ExpressionStatement", "src": "1298:35:34"}, {"id": 5485, "nodeType": "PlaceholderStatement", "src": "1343:1:34"}]}, "documentation": {"id": 5474, "nodeType": "StructuredDocumentation", "src": "1189:60:34", "text": " @notice Throws if amount provided is zero"}, "id": 5487, "name": "nonZero", "nameLocation": "1263:7:34", "nodeType": "ModifierDefinition", "parameters": {"id": 5477, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5476, "mutability": "mutable", "name": "amount_", "nameLocation": "1279:7:34", "nodeType": "VariableDeclaration", "scope": 5487, "src": "1271:15:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5475, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1271:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1270:17:34"}, "src": "1254:97:34", "virtual": false, "visibility": "internal"}, {"body": {"id": 5504, "nodeType": "Block", "src": "1490:169:34", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 5499, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 5493, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "1563:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 5495, "indexExpression": {"id": 5494, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5490, "src": "1574:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1563:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 5496, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1585:7:34", "memberName": "creator", "nodeType": "MemberAccess", "referencedDeclaration": 8405, "src": "1563:29:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 5497, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "1596:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5498, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1596:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1563:45:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "63616c6c6572206973206e6f7420636f757273652063726561746f72", "id": 5500, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1610:30:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_6894a100d8d07d9daec9061ac8cbc5cd1f723ebb591831d8b6c58b4b547e48fe", "typeString": "literal_string \"caller is not course creator\""}, "value": "caller is not course creator"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_6894a100d8d07d9daec9061ac8cbc5cd1f723ebb591831d8b6c58b4b547e48fe", "typeString": "literal_string \"caller is not course creator\""}], "id": 5492, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1555:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5501, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1555:86:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5502, "nodeType": "ExpressionStatement", "src": "1555:86:34"}, {"id": 5503, "nodeType": "PlaceholderStatement", "src": "1651:1:34"}]}, "documentation": {"id": 5488, "nodeType": "StructuredDocumentation", "src": "1357:88:34", "text": " @notice Throws if called by any account other than the course creator"}, "id": 5505, "name": "onlyCreator", "nameLocation": "1459:11:34", "nodeType": "ModifierDefinition", "parameters": {"id": 5491, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5490, "mutability": "mutable", "name": "_courseId", "nameLocation": "1479:9:34", "nodeType": "VariableDeclaration", "scope": 5505, "src": "1471:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5489, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1471:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "1470:19:34"}, "src": "1450:209:34", "virtual": false, "visibility": "internal"}, {"body": {"id": 5521, "nodeType": "Block", "src": "1771:157:34", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 5511, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "1844:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 5513, "indexExpression": {"id": 5512, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5508, "src": "1855:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1844:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 5514, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1866:11:34", "memberName": "timeRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 8421, "src": "1844:33:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 5515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1881:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1844:38:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f7572736520686173206265656e2072656d6f766564", "id": 5517, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1884:25:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fec35ac67795bd54ed81cdf5954e18327f4b22011c0d7dcf7681729a8d06fbd3", "typeString": "literal_string \"Course has been removed\""}, "value": "Course has been removed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_fec35ac67795bd54ed81cdf5954e18327f4b22011c0d7dcf7681729a8d06fbd3", "typeString": "literal_string \"Course has been removed\""}], "id": 5510, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1836:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5518, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1836:74:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5519, "nodeType": "ExpressionStatement", "src": "1836:74:34"}, {"id": 5520, "nodeType": "PlaceholderStatement", "src": "1920:1:34"}]}, "documentation": {"id": 5506, "nodeType": "StructuredDocumentation", "src": "1665:60:34", "text": " @notice Throws if course has been removed"}, "id": 5522, "name": "activeCourse", "nameLocation": "1739:12:34", "nodeType": "ModifierDefinition", "parameters": {"id": 5509, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5508, "mutability": "mutable", "name": "_courseId", "nameLocation": "1760:9:34", "nodeType": "VariableDeclaration", "scope": 5522, "src": "1752:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5507, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1752:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "1751:19:34"}, "src": "1730:198:34", "virtual": false, "visibility": "internal"}, {"body": {"id": 5534, "nodeType": "Block", "src": "2099:67:34", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 5528, "name": "__Ownable_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "2109:14:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 5529, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2109:16:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5530, "nodeType": "ExpressionStatement", "src": "2109:16:34"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 5531, "name": "__ReentrancyGuard_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 305, "src": "2135:22:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 5532, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2135:24:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5533, "nodeType": "ExpressionStatement", "src": "2135:24:34"}]}, "documentation": {"id": 5523, "nodeType": "StructuredDocumentation", "src": "1978:75:34", "text": " @notice Initialize of contract (replace for constructor)"}, "functionSelector": "8129fc1c", "id": 5535, "implemented": true, "kind": "function", "modifiers": [{"id": 5526, "kind": "modifierInvocation", "modifierName": {"id": 5525, "name": "initializer", "nameLocations": ["2087:11:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 202, "src": "2087:11:34"}, "nodeType": "ModifierInvocation", "src": "2087:11:34"}], "name": "initialize", "nameLocation": "2067:10:34", "nodeType": "FunctionDefinition", "parameters": {"id": 5524, "nodeType": "ParameterList", "parameters": [], "src": "2077:2:34"}, "returnParameters": {"id": 5527, "nodeType": "ParameterList", "parameters": [], "src": "2099:0:34"}, "scope": 6300, "src": "2058:108:34", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"baseFunctions": [8507], "body": {"id": 5713, "nodeType": "Block", "src": "3107:1834:34", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 5567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5562, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "3125:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 5565, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3151:1:34", "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": 5564, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3143:7:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 5563, "name": "address", "nodeType": "ElementaryTypeName", "src": "3143:7:34", "typeDescriptions": {}}}, "id": 5566, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3143:10:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3125:28:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c6964207265776172642061646472657373", "id": 5568, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3155:24:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_6898b9fe3dfe29cad934ea252a7d8dd316b5385de07bb0a6b5be26d61cd10733", "typeString": "literal_string \"Invalid reward address\""}, "value": "Invalid reward address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_6898b9fe3dfe29cad934ea252a7d8dd316b5385de07bb0a6b5be26d61cd10733", "typeString": "literal_string \"Invalid reward address\""}], "id": 5561, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3117:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5569, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3117:63:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5570, "nodeType": "ExpressionStatement", "src": "3117:63:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5572, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5540, "src": "3198:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 5573, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5542, "src": "3209:6:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3198:17:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c696420627564676574", "id": 5575, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3217:16:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_953b3fb674fb21b5d42be556f7973161b4ff71b28b150528eda3492abb0654a4", "typeString": "literal_string \"Invalid budget\""}, "value": "Invalid budget"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_953b3fb674fb21b5d42be556f7973161b4ff71b28b150528eda3492abb0654a4", "typeString": "literal_string \"Invalid budget\""}], "id": 5571, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3190:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3190:44:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5577, "nodeType": "ExpressionStatement", "src": "3190:44:34"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5578, "name": "_timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5544, "src": "3247:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 5579, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3261:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3247:15:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"expression": {"id": 5592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5589, "name": "_timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5544, "src": "3339:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 5590, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "3352:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 5591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3358:9:34", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "3352:15:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3339:28:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5593, "nodeType": "ExpressionStatement", "src": "3339:28:34"}, "id": 5594, "nodeType": "IfStatement", "src": "3244:123:34", "trueBody": {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5585, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5582, "name": "_timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5544, "src": "3272:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"expression": {"id": 5583, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "3286:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 5584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3292:9:34", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "3286:15:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3272:29:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c69642074696d65207374617274", "id": 5586, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3303:20:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a0add4a6f50df9fdaaad5dd4d1d2f4ffb8cae2d2a8af167d1eb5c4c943da5829", "typeString": "literal_string \"Invalid time start\""}, "value": "Invalid time start"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a0add4a6f50df9fdaaad5dd4d1d2f4ffb8cae2d2a8af167d1eb5c4c943da5829", "typeString": "literal_string \"Invalid time start\""}], "id": 5581, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3264:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3264:60:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5588, "nodeType": "ExpressionStatement", "src": "3264:60:34"}}, {"assignments": [5596], "declarations": [{"constant": false, "id": 5596, "mutability": "mutable", "name": "isValidTimeEndBonus", "nameLocation": "3383:19:34", "nodeType": "VariableDeclaration", "scope": 5713, "src": "3378:24:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5595, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3378:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 5611, "initialValue": {"condition": {"id": 5597, "name": "_isUsingDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5548, "src": "3405:16:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 5608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5602, "name": "_timeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5546, "src": "3447:13:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 5603, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3464:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3447:18:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5605, "name": "_timeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5546, "src": "3469:13:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 5606, "name": "_timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5544, "src": "3485:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3469:26:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3447:48:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 5609, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3446:50:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "3405:91:34", "trueExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5600, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5598, "name": "_timeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5546, "src": "3425:13:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 5599, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3441:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3425:17:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 5601, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3424:19:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "3378:118:34"}, {"expression": {"arguments": [{"id": 5613, "name": "isValidTimeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5596, "src": "3514:19:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c69642074696d6520656e6420626f6e7573", "id": 5614, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3535:24:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_594f322e139d4166865edfc167a5a249d2f442d68f1d193dc8e7741e8652fec8", "typeString": "literal_string \"Invalid time end bonus\""}, "value": "Invalid time end bonus"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_594f322e139d4166865edfc167a5a249d2f442d68f1d193dc8e7741e8652fec8", "typeString": "literal_string \"Invalid time end bonus\""}], "id": 5612, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3506:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5615, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3506:54:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5616, "nodeType": "ExpressionStatement", "src": "3506:54:34"}, {"assignments": [5618], "declarations": [{"constant": false, "id": 5618, "mutability": "mutable", "name": "_courseId", "nameLocation": "3579:9:34", "nodeType": "VariableDeclaration", "scope": 5713, "src": "3571:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5617, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3571:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 5621, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 5619, "name": "_generateCourseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6299, "src": "3591:17:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", "typeString": "function () view returns (bytes32)"}}, "id": 5620, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3591:19:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "3571:39:34"}, {"assignments": [5623], "declarations": [{"constant": false, "id": 5623, "mutability": "mutable", "name": "_canMintNFT", "nameLocation": "3625:11:34", "nodeType": "VariableDeclaration", "scope": 5713, "src": "3620:16:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5622, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3620:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 5625, "initialValue": {"hexValue": "66616c7365", "id": 5624, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3639:5:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "nodeType": "VariableDeclarationStatement", "src": "3620:24:34"}, {"condition": {"id": 5627, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3658:14:34", "subExpression": {"id": 5626, "name": "_isBonusToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5550, "src": "3659:13:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5667, "nodeType": "IfStatement", "src": "3654:551:34", "trueBody": {"id": 5666, "nodeType": "Block", "src": "3674:531:34", "statements": [{"expression": {"id": 5636, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 5628, "name": "_canMintNFT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5623, "src": "3811:11:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"arguments": [{"id": 5632, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "3863:10:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}], "id": 5631, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "3858:4:34", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 5633, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3858:16:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_INFTReward_$8572", "typeString": "type(contract INFTReward)"}}, "id": 5634, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "3875:11:34", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "3858:28:34", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"id": 5629, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "3825:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 5630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3840:17:34", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 2495, "src": "3825:32:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 5635, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3825:62:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3811:76:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5637, "nodeType": "ExpressionStatement", "src": "3811:76:34"}, {"condition": {"id": 5639, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3906:12:34", "subExpression": {"id": 5638, "name": "_canMintNFT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5623, "src": "3907:11:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5665, "nodeType": "IfStatement", "src": "3902:293:34", "trueBody": {"id": 5664, "nodeType": "Block", "src": "3920:275:34", "statements": [{"expression": {"arguments": [{"arguments": [{"expression": {"arguments": [{"id": 5644, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "3984:18:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}], "id": 5643, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "3979:4:34", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 5645, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3979:24:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Upgradeable_$1762", "typeString": "type(contract IERC721Upgradeable)"}}, "id": 5646, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4004:11:34", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "3979:36:34", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"id": 5641, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "3946:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 5642, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3961:17:34", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 2495, "src": "3946:32:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 5647, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3946:70:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "52657761726420636f6e7472616374206973206e6f7420455243373231", "id": 5648, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4018:31:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_8b0253e73b3deee2c6724a49cb1d65deb278726bc9530048605bdfd3f198ba89", "typeString": "literal_string \"Reward contract is not ERC721\""}, "value": "Reward contract is not ERC721"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_8b0253e73b3deee2c6724a49cb1d65deb278726bc9530048605bdfd3f198ba89", "typeString": "literal_string \"Reward contract is not ERC721\""}], "id": 5640, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3938:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3938:112:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5650, "nodeType": "ExpressionStatement", "src": "3938:112:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5656, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4121:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5657, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4121:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"arguments": [{"id": 5653, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "4095:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5652, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "4076:18:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}}, "id": 5654, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4076:34:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC721Upgradeable_$1762", "typeString": "contract IERC721Upgradeable"}}, "id": 5655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4111:9:34", "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 1687, "src": "4076:44:34", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)"}}, "id": 5658, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4076:58:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"id": 5659, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5540, "src": "4138:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4076:69:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e73756666696369656e742063726561746f7227732062616c616e6365", "id": 5661, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4147:32:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_352533491d1cdbf3e13a7bf4604b6348607c7b6881f17eac13e30536538fee9b", "typeString": "literal_string \"Insufficient creator's balance\""}, "value": "Insufficient creator's balance"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_352533491d1cdbf3e13a7bf4604b6348607c7b6881f17eac13e30536538fee9b", "typeString": "literal_string \"Insufficient creator's balance\""}], "id": 5651, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4068:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5662, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4068:112:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5663, "nodeType": "ExpressionStatement", "src": "4068:112:34"}]}}]}}, {"expression": {"id": 5686, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 5668, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "4215:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 5670, "indexExpression": {"id": 5669, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5618, "src": "4226:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4215:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5672, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4269:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5673, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4269:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5674, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "4310:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5675, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5540, "src": "4346:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5676, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5540, "src": "4384:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5677, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5542, "src": "4412:6:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "30", "id": 5678, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4459:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"id": 5679, "name": "_timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5544, "src": "4487:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5680, "name": "_timeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5546, "src": "4525:13:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "30", "id": 5681, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4565:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, {"id": 5682, "name": "_isUsingDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5548, "src": "4597:16:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 5683, "name": "_isBonusToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5550, "src": "4641:13:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 5684, "name": "_canMintNFT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5623, "src": "4680:11:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"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_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 5671, "name": "Course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8428, "src": "4239:6:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Course_$8428_storage_ptr_$", "typeString": "type(struct Course storage pointer)"}}, "id": 5685, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["4260:7:34", "4295:13:34", "4338:6:34", "4367:15:34", "4405:5:34", "4432:25:34", "4474:11:34", "4511:12:34", "4552:11:34", "4580:15:34", "4627:12:34", "4668:10:34"], "names": ["creator", "rewardAddress", "budget", "budgetAvailable", "bonus", "totalLearnersClaimedBonus", "timeCreated", "timeEndBonus", "timeRemoved", "isUsingDuration", "isBonusToken", "canMintNFT"], "nodeType": "FunctionCall", "src": "4239:463:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "src": "4215:487:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 5687, "nodeType": "ExpressionStatement", "src": "4215:487:34"}, {"condition": {"id": 5688, "name": "_isBonusToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5550, "src": "4717:13:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5703, "nodeType": "IfStatement", "src": "4713:132:34", "trueBody": {"id": 5702, "nodeType": "Block", "src": "4732:113:34", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5693, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4797:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5694, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4797:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 5697, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "4819:4:34", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}], "id": 5696, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4811:7:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 5695, "name": "address", "nodeType": "ElementaryTypeName", "src": "4811:7:34", "typeDescriptions": {}}}, "id": 5698, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4811:13:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5699, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5540, "src": "4826:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"id": 5690, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "4764:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5689, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "4746:17:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 5691, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4746:33:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 5692, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4780:16:34", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 513, "src": "4746:50:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,address,uint256)"}}, "id": 5700, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4746:88:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5701, "nodeType": "ExpressionStatement", "src": "4746:88:34"}]}}, {"eventCall": {"arguments": [{"id": 5705, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5618, "src": "4874:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"arguments": [], "expression": {"argumentTypes": [], "id": 5706, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "4885:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5707, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4885:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5708, "name": "_rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5538, "src": "4899:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5709, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5542, "src": "4915:6:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 5710, "name": "_timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5544, "src": "4923:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5704, "name": "CreatedCourse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8450, "src": "4860:13:34", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (bytes32,address,address,uint256,uint256)"}}, "id": 5711, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4860:74:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5712, "nodeType": "EmitStatement", "src": "4855:79:34"}]}, "documentation": {"id": 5536, "nodeType": "StructuredDocumentation", "src": "2218:602:34", "text": " @notice Create new course\n @param _rewardAddress Address of token that reward to student after completing course\n @param _budget Total tokens/NFTs that reward\n @param _bonus Bonus when learner completed course\n @param _timeStart Start time of course\n @param _timeEndBonus end date will finish bonus or duration to receive bonus after enrolling in course\n @param _isUsingDuration Using duration for rewarding (true) or using end time (false)\n @param _isBonusToken Awards is token (true) or NFT (false)\n emit {CreatedCourse} event"}, "functionSelector": "b149fd18", "id": 5714, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 5553, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5540, "src": "3069:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 5554, "kind": "modifierInvocation", "modifierName": {"id": 5552, "name": "nonZero", "nameLocations": ["3061:7:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5487, "src": "3061:7:34"}, "nodeType": "ModifierInvocation", "src": "3061:16:34"}, {"arguments": [{"id": 5556, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5542, "src": "3086:6:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 5557, "kind": "modifierInvocation", "modifierName": {"id": 5555, "name": "nonZero", "nameLocations": ["3078:7:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5487, "src": "3078:7:34"}, "nodeType": "ModifierInvocation", "src": "3078:15:34"}, {"id": 5559, "kind": "modifierInvocation", "modifierName": {"id": 5558, "name": "nonReentrant", "nameLocations": ["3094:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 335, "src": "3094:12:34"}, "nodeType": "ModifierInvocation", "src": "3094:12:34"}], "name": "createCourse", "nameLocation": "2834:12:34", "nodeType": "FunctionDefinition", "parameters": {"id": 5551, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5538, "mutability": "mutable", "name": "_rewardAddress", "nameLocation": "2864:14:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "2856:22:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5537, "name": "address", "nodeType": "ElementaryTypeName", "src": "2856:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 5540, "mutability": "mutable", "name": "_budget", "nameLocation": "2896:7:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "2888:15:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5539, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2888:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5542, "mutability": "mutable", "name": "_bonus", "nameLocation": "2921:6:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "2913:14:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5541, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2913:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5544, "mutability": "mutable", "name": "_timeStart", "nameLocation": "2945:10:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "2937:18:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5543, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2937:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5546, "mutability": "mutable", "name": "_timeEndBonus", "nameLocation": "2973:13:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "2965:21:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5545, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2965:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5548, "mutability": "mutable", "name": "_isUsingDuration", "nameLocation": "3001:16:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "2996:21:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5547, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2996:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 5550, "mutability": "mutable", "name": "_isBonusToken", "nameLocation": "3032:13:34", "nodeType": "VariableDeclaration", "scope": 5714, "src": "3027:18:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5549, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3027:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2846:205:34"}, "returnParameters": {"id": 5560, "nodeType": "ParameterList", "parameters": [], "src": "3107:0:34"}, "scope": 6300, "src": "2825:2116:34", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8515], "body": {"id": 5796, "nodeType": "Block", "src": "5272:563:34", "statements": [{"assignments": [5735], "declarations": [{"constant": false, "id": 5735, "mutability": "mutable", "name": "course", "nameLocation": "5297:6:34", "nodeType": "VariableDeclaration", "scope": 5796, "src": "5282:21:34", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}, "typeName": {"id": 5734, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 5733, "name": "Course", "nameLocations": ["5282:6:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "5282:6:34"}, "referencedDeclaration": 8428, "src": "5282:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}, "visibility": "internal"}], "id": 5739, "initialValue": {"baseExpression": {"id": 5736, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "5306:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 5738, "indexExpression": {"id": 5737, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5717, "src": "5317:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5306:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5282:45:34"}, {"expression": {"id": 5744, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5740, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5338:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5742, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5345:6:34", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 8409, "src": "5338:13:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 5743, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5719, "src": "5355:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5338:24:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5745, "nodeType": "ExpressionStatement", "src": "5338:24:34"}, {"expression": {"id": 5750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5746, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5372:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5748, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5379:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "5372:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 5749, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5719, "src": "5398:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5372:33:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5751, "nodeType": "ExpressionStatement", "src": "5372:33:34"}, {"condition": {"expression": {"id": 5752, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5420:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5753, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5427:12:34", "memberName": "isBonusToken", "nodeType": "MemberAccess", "referencedDeclaration": 8423, "src": "5420:19:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 5789, "nodeType": "Block", "src": "5566:216:34", "statements": [{"condition": {"id": 5771, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "5584:18:34", "subExpression": {"expression": {"id": 5769, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5585:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5770, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5592:10:34", "memberName": "canMintNFT", "nodeType": "MemberAccess", "referencedDeclaration": 8425, "src": "5585:17:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5788, "nodeType": "IfStatement", "src": "5580:192:34", "trueBody": {"id": 5787, "nodeType": "Block", "src": "5604:168:34", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5783, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5778, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "5681:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5779, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5681:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"arguments": [{"expression": {"id": 5774, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5649:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5775, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5656:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "5649:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5773, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "5630:18:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}}, "id": 5776, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5630:40:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC721Upgradeable_$1762", "typeString": "contract IERC721Upgradeable"}}, "id": 5777, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5671:9:34", "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 1687, "src": "5630:50:34", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)"}}, "id": 5780, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5630:64:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"expression": {"id": 5781, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5698:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5782, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5705:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "5698:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5630:90:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "42616c616e6365206f662063726561746f72206973206e6f7420656e6f756768", "id": 5784, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5722:34:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_83dfce09b3b194edd564abfa34f22662964039406a177c554cc9bdb827d68cd8", "typeString": "literal_string \"Balance of creator is not enough\""}, "value": "Balance of creator is not enough"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_83dfce09b3b194edd564abfa34f22662964039406a177c554cc9bdb827d68cd8", "typeString": "literal_string \"Balance of creator is not enough\""}], "id": 5772, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5622:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5785, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5622:135:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5786, "nodeType": "ExpressionStatement", "src": "5622:135:34"}]}}]}, "id": 5790, "nodeType": "IfStatement", "src": "5416:366:34", "trueBody": {"id": 5768, "nodeType": "Block", "src": "5441:119:34", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5759, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "5512:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5760, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5512:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 5763, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "5534:4:34", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}], "id": 5762, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5526:7:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 5761, "name": "address", "nodeType": "ElementaryTypeName", "src": "5526:7:34", "typeDescriptions": {}}}, "id": 5764, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5526:13:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5765, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5719, "src": "5541:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 5755, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5735, "src": "5473:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5756, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5480:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "5473:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5754, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "5455:17:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 5757, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5455:39:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 5758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5495:16:34", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 513, "src": "5455:56:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,address,uint256)"}}, "id": 5766, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5455:94:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5767, "nodeType": "ExpressionStatement", "src": "5455:94:34"}]}}, {"eventCall": {"arguments": [{"id": 5792, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5717, "src": "5809:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 5793, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5719, "src": "5820:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5791, "name": "AddedBudget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8456, "src": "5797:11:34", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,uint256)"}}, "id": 5794, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5797:31:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5795, "nodeType": "EmitStatement", "src": "5792:36:34"}]}, "documentation": {"id": 5715, "nodeType": "StructuredDocumentation", "src": "4947:179:34", "text": " @notice Add more budget to course\n @param _courseId Id of course\n @param _budget Budget that added to course\n emit {AddedBudget} events"}, "functionSelector": "caca4ad3", "id": 5797, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 5722, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5717, "src": "5207:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 5723, "kind": "modifierInvocation", "modifierName": {"id": 5721, "name": "onlyCreator", "nameLocations": ["5195:11:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5505, "src": "5195:11:34"}, "nodeType": "ModifierInvocation", "src": "5195:22:34"}, {"arguments": [{"id": 5725, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5719, "src": "5226:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 5726, "kind": "modifierInvocation", "modifierName": {"id": 5724, "name": "nonZero", "nameLocations": ["5218:7:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5487, "src": "5218:7:34"}, "nodeType": "ModifierInvocation", "src": "5218:16:34"}, {"arguments": [{"id": 5728, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5717, "src": "5248:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 5729, "kind": "modifierInvocation", "modifierName": {"id": 5727, "name": "activeCourse", "nameLocations": ["5235:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5522, "src": "5235:12:34"}, "nodeType": "ModifierInvocation", "src": "5235:23:34"}, {"id": 5731, "kind": "modifierInvocation", "modifierName": {"id": 5730, "name": "nonReentrant", "nameLocations": ["5259:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 335, "src": "5259:12:34"}, "nodeType": "ModifierInvocation", "src": "5259:12:34"}], "name": "addBudget", "nameLocation": "5140:9:34", "nodeType": "FunctionDefinition", "parameters": {"id": 5720, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5717, "mutability": "mutable", "name": "_courseId", "nameLocation": "5158:9:34", "nodeType": "VariableDeclaration", "scope": 5797, "src": "5150:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5716, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5150:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 5719, "mutability": "mutable", "name": "_budget", "nameLocation": "5177:7:34", "nodeType": "VariableDeclaration", "scope": 5797, "src": "5169:15:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5718, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5169:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5149:36:34"}, "returnParameters": {"id": 5732, "nodeType": "ParameterList", "parameters": [], "src": "5272:0:34"}, "scope": 6300, "src": "5131:704:34", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8530], "body": {"id": 6008, "nodeType": "Block", "src": "6584:1681:34", "statements": [{"assignments": [5820], "declarations": [{"constant": false, "id": 5820, "mutability": "mutable", "name": "course", "nameLocation": "6609:6:34", "nodeType": "VariableDeclaration", "scope": 6008, "src": "6594:21:34", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}, "typeName": {"id": 5819, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 5818, "name": "Course", "nameLocations": ["6594:6:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "6594:6:34"}, "referencedDeclaration": 8428, "src": "6594:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}, "visibility": "internal"}], "id": 5824, "initialValue": {"baseExpression": {"id": 5821, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "6618:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 5823, "indexExpression": {"id": 5822, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "6629:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6618:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "6594:45:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 5834, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5829, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 5826, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "6657:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5827, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6664:11:34", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 8417, "src": "6657:18:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"id": 5828, "name": "_timeStarted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5804, "src": "6679:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6657:34:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5833, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5830, "name": "_timeStarted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5804, "src": "6695:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 5831, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "6710:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 5832, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6716:9:34", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "6710:15:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6695:30:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6657:68:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c69642074696d65207374617274", "id": 5835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6727:20:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a0add4a6f50df9fdaaad5dd4d1d2f4ffb8cae2d2a8af167d1eb5c4c943da5829", "typeString": "literal_string \"Invalid time start\""}, "value": "Invalid time start"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a0add4a6f50df9fdaaad5dd4d1d2f4ffb8cae2d2a8af167d1eb5c4c943da5829", "typeString": "literal_string \"Invalid time start\""}], "id": 5825, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6649:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5836, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6649:99:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5837, "nodeType": "ExpressionStatement", "src": "6649:99:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5841, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5839, "name": "_timeCompleted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5806, "src": "6766:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 5840, "name": "_timeStarted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5804, "src": "6783:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6766:29:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c69642074696d6520636f6d706c657465", "id": 5842, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6797:23:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_35becb7e55a7b1042c3a4f0debfe12445315ceb18769da3cc17ee4e5b80b3db1", "typeString": "literal_string \"Invalid time complete\""}, "value": "Invalid time complete"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_35becb7e55a7b1042c3a4f0debfe12445315ceb18769da3cc17ee4e5b80b3db1", "typeString": "literal_string \"Invalid time complete\""}], "id": 5838, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6758:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5843, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6758:63:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5844, "nodeType": "ExpressionStatement", "src": "6758:63:34"}, {"assignments": [5847], "declarations": [{"constant": false, "id": 5847, "mutability": "mutable", "name": "learner", "nameLocation": "6848:7:34", "nodeType": "VariableDeclaration", "scope": 6008, "src": "6832:23:34", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner"}, "typeName": {"id": 5846, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 5845, "name": "Learner", "nameLocations": ["6832:7:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8438, "src": "6832:7:34"}, "referencedDeclaration": 8438, "src": "6832:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner"}}, "visibility": "internal"}], "id": 5853, "initialValue": {"baseExpression": {"baseExpression": {"id": 5848, "name": "learnerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5473, "src": "6858:11:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Learner storage ref))"}}, "id": 5850, "indexExpression": {"id": 5849, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "6870:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6858:22:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$", "typeString": "mapping(address => struct Learner storage ref)"}}, "id": 5852, "indexExpression": {"id": 5851, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "6881:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6858:32:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage", "typeString": "struct Learner storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "6832:58:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5858, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 5855, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "6908:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5856, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6916:13:34", "memberName": "timeCompleted", "nodeType": "MemberAccess", "referencedDeclaration": 8432, "src": "6908:21:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 5857, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6933:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6908:26:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "616c726561647920636f6d706c65746564", "id": 5859, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6936:19:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_230f18378710789dc64312757ac1d12886bb79ee6078298d79265d08db0cfd11", "typeString": "literal_string \"already completed\""}, "value": "already completed"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_230f18378710789dc64312757ac1d12886bb79ee6078298d79265d08db0cfd11", "typeString": "literal_string \"already completed\""}], "id": 5854, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6900:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5860, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6900:56:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5861, "nodeType": "ExpressionStatement", "src": "6900:56:34"}, {"expression": {"id": 5866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5862, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "6967:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5864, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6975:11:34", "memberName": "timeStarted", "nodeType": "MemberAccess", "referencedDeclaration": 8430, "src": "6967:19:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 5865, "name": "_timeStarted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5804, "src": "6989:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6967:34:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5867, "nodeType": "ExpressionStatement", "src": "6967:34:34"}, {"assignments": [5869], "declarations": [{"constant": false, "id": 5869, "mutability": "mutable", "name": "canLearnerGetBonus", "nameLocation": "7016:18:34", "nodeType": "VariableDeclaration", "scope": 6008, "src": "7011:23:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 5868, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7011:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 5875, "initialValue": {"arguments": [{"id": 5871, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "7049:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 5872, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "7060:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5873, "name": "_timeCompleted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5806, "src": "7070:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 5870, "name": "canGetBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6220, "src": "7037:11:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (bytes32,address,uint256) view returns (bool)"}}, "id": 5874, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7037:48:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "VariableDeclarationStatement", "src": "7011:74:34"}, {"expression": {"id": 5880, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5876, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "7096:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5878, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7104:13:34", "memberName": "timeCompleted", "nodeType": "MemberAccess", "referencedDeclaration": 8432, "src": "7096:21:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 5879, "name": "_timeCompleted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5806, "src": "7120:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7096:38:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5881, "nodeType": "ExpressionStatement", "src": "7096:38:34"}, {"condition": {"id": 5882, "name": "canLearnerGetBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5869, "src": "7149:18:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 6002, "nodeType": "IfStatement", "src": "7145:1062:34", "trueBody": {"id": 6001, "nodeType": "Block", "src": "7169:1038:34", "statements": [{"expression": {"id": 5888, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5883, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7183:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5885, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7190:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "7183:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"expression": {"id": 5886, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7209:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5887, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7216:5:34", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "7209:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7183:38:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5889, "nodeType": "ExpressionStatement", "src": "7183:38:34"}, {"expression": {"id": 5893, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "7235:34:34", "subExpression": {"expression": {"id": 5890, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7235:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5892, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7242:25:34", "memberName": "totalLearnersClaimedBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8415, "src": "7235:32:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5894, "nodeType": "ExpressionStatement", "src": "7235:34:34"}, {"expression": {"id": 5900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5895, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "7284:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5897, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7292:12:34", "memberName": "timeRewarded", "nodeType": "MemberAccess", "referencedDeclaration": 8434, "src": "7284:20:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 5898, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "7307:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 5899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7313:9:34", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "7307:15:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7284:38:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5901, "nodeType": "ExpressionStatement", "src": "7284:38:34"}, {"condition": {"expression": {"id": 5902, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7341:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5903, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7348:12:34", "memberName": "isBonusToken", "nodeType": "MemberAccess", "referencedDeclaration": 8423, "src": "7341:19:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 5988, "nodeType": "Block", "src": "7477:615:34", "statements": [{"condition": {"expression": {"id": 5915, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7499:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5916, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7506:10:34", "memberName": "canMintNFT", "nodeType": "MemberAccess", "referencedDeclaration": 8425, "src": "7499:17:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 5986, "nodeType": "Block", "src": "7724:354:34", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5950, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 5946, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5809, "src": "7754:7:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 5947, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7762:6:34", "memberName": "length", "nodeType": "MemberAccess", "src": "7754:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 5948, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7772:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5949, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7779:5:34", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "7772:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7754:30:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4e6f7420656e6f756768204e465473", "id": 5951, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7786:17:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_810e89b1b7a08ad5ff0d7b77e73539e15c441915f3bfc810eb4e0b835c888902", "typeString": "literal_string \"Not enough NFTs\""}, "value": "Not enough NFTs"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_810e89b1b7a08ad5ff0d7b77e73539e15c441915f3bfc810eb4e0b835c888902", "typeString": "literal_string \"Not enough NFTs\""}], "id": 5945, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7746:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 5952, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7746:58:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5953, "nodeType": "ExpressionStatement", "src": "7746:58:34"}, {"expression": {"id": 5958, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 5954, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "7827:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5956, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "7835:6:34", "memberName": "nftIds", "nodeType": "MemberAccess", "referencedDeclaration": 8437, "src": "7827:14:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 5957, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5809, "src": "7844:7:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "src": "7827:24:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref"}}, "id": 5959, "nodeType": "ExpressionStatement", "src": "7827:24:34"}, {"body": {"id": 5984, "nodeType": "Block", "src": "7918:142:34", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 5976, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "8002:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 5977, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8002:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 5978, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "8016:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"baseExpression": {"id": 5979, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5809, "src": "8026:7:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 5981, "indexExpression": {"id": 5980, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5961, "src": "8034:1:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8026:10:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 5972, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7963:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5973, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7970:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "7963:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5971, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "7944:18:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Upgradeable_$1762_$", "typeString": "type(contract IERC721Upgradeable)"}}, "id": 5974, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7944:40:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC721Upgradeable_$1762", "typeString": "contract IERC721Upgradeable"}}, "id": 5975, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7985:16:34", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1717, "src": "7944:57:34", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256) external"}}, "id": 5982, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7944:93:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5983, "nodeType": "ExpressionStatement", "src": "7944:93:34"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5964, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5961, "src": "7893:1:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 5965, "name": "_nftIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5809, "src": "7897:7:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 5966, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7905:6:34", "memberName": "length", "nodeType": "MemberAccess", "src": "7897:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7893:18:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5985, "initializationExpression": {"assignments": [5961], "declarations": [{"constant": false, "id": 5961, "mutability": "mutable", "name": "i", "nameLocation": "7886:1:34", "nodeType": "VariableDeclaration", "scope": 5985, "src": "7878:9:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5960, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7878:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5963, "initialValue": {"hexValue": "30", "id": 5962, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7890:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "7878:13:34"}, "loopExpression": {"expression": {"id": 5969, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "7913:3:34", "subExpression": {"id": 5968, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5961, "src": "7913:1:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5970, "nodeType": "ExpressionStatement", "src": "7913:3:34"}, "nodeType": "ForStatement", "src": "7873:187:34"}]}, "id": 5987, "nodeType": "IfStatement", "src": "7495:583:34", "trueBody": {"id": 5944, "nodeType": "Block", "src": "7518:200:34", "statements": [{"body": {"id": 5942, "nodeType": "Block", "src": "7583:117:34", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 5938, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "7667:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"arguments": [{"expression": {"id": 5934, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7640:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5935, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7647:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "7640:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5933, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "7629:10:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}}, "id": 5936, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7629:32:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "id": 5937, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7662:4:34", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 8559, "src": "7629:37:34", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$", "typeString": "function (address) external returns (uint256)"}}, "id": 5939, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7629:47:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"id": 5928, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "7609:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5931, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7617:6:34", "memberName": "nftIds", "nodeType": "MemberAccess", "referencedDeclaration": 8437, "src": "7609:14:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref"}}, "id": 5932, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7624:4:34", "memberName": "push", "nodeType": "MemberAccess", "src": "7609:19:34", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$", "typeString": "function (uint256[] storage pointer,uint256)"}}, "id": 5940, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7609:68:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5941, "nodeType": "ExpressionStatement", "src": "7609:68:34"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 5924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 5921, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5918, "src": "7560:1:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 5922, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7564:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5923, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7571:5:34", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "7564:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7560:16:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 5943, "initializationExpression": {"assignments": [5918], "declarations": [{"constant": false, "id": 5918, "mutability": "mutable", "name": "i", "nameLocation": "7553:1:34", "nodeType": "VariableDeclaration", "scope": 5943, "src": "7545:9:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5917, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7545:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 5920, "initialValue": {"hexValue": "30", "id": 5919, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7557:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "7545:13:34"}, "loopExpression": {"expression": {"id": 5926, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "7578:3:34", "subExpression": {"id": 5925, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5918, "src": "7578:1:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5927, "nodeType": "ExpressionStatement", "src": "7578:3:34"}, "nodeType": "ForStatement", "src": "7540:160:34"}]}}]}, "id": 5989, "nodeType": "IfStatement", "src": "7337:755:34", "trueBody": {"id": 5914, "nodeType": "Block", "src": "7362:109:34", "statements": [{"expression": {"arguments": [{"id": 5909, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "7433:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"expression": {"id": 5910, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7443:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5911, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7450:5:34", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "7443:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 5905, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "7398:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5906, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "7405:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "7398:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 5904, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "7380:17:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 5907, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7380:39:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 5908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7420:12:34", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 487, "src": "7380:52:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,uint256)"}}, "id": 5912, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7380:76:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 5913, "nodeType": "ExpressionStatement", "src": "7380:76:34"}]}}, {"eventCall": {"arguments": [{"id": 5991, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "8124:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 5992, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "8135:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"expression": {"id": 5993, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "8145:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5994, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8152:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "8145:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"expression": {"id": 5995, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5820, "src": "8167:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 5996, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8174:5:34", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "8167:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 5997, "name": "learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5847, "src": "8181:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner storage pointer"}}, "id": 5998, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8189:6:34", "memberName": "nftIds", "nodeType": "MemberAccess", "referencedDeclaration": 8437, "src": "8181:14:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref"}], "id": 5990, "name": "ClaimedReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8475, "src": "8110:13:34", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,address,address,uint256,uint256[] memory)"}}, "id": 5999, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8110:86:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6000, "nodeType": "EmitStatement", "src": "8105:91:34"}]}}, {"eventCall": {"arguments": [{"id": 6004, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "8238:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6005, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5802, "src": "8249:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 6003, "name": "CompletedCourse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8462, "src": "8222:15:34", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)"}}, "id": 6006, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8222:36:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6007, "nodeType": "EmitStatement", "src": "8217:41:34"}]}, "documentation": {"id": 5798, "nodeType": "StructuredDocumentation", "src": "5841:503:34", "text": " @notice Mark learner completed course and transfer bonus to learner\n @param _courseId Id of course\n @param _learner Address of learner\n @param _timeStarted Time when learner enrolled in course (seconds)\n @param _timeCompleted Time when learner complete course (seconds)\n @param _nftIds List Id of nfts that learner will receive if bonus is nfts\n emit {ClaimedReward} events if learner can receive rewards\n emit {CompletedCourse} events"}, "functionSelector": "3c41b482", "id": 6009, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 5812, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "6549:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 5813, "kind": "modifierInvocation", "modifierName": {"id": 5811, "name": "onlyCreator", "nameLocations": ["6537:11:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5505, "src": "6537:11:34"}, "nodeType": "ModifierInvocation", "src": "6537:22:34"}, {"arguments": [{"id": 5815, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5800, "src": "6573:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 5816, "kind": "modifierInvocation", "modifierName": {"id": 5814, "name": "activeCourse", "nameLocations": ["6560:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5522, "src": "6560:12:34"}, "nodeType": "ModifierInvocation", "src": "6560:23:34"}], "name": "completeCourse", "nameLocation": "6358:14:34", "nodeType": "FunctionDefinition", "parameters": {"id": 5810, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5800, "mutability": "mutable", "name": "_courseId", "nameLocation": "6390:9:34", "nodeType": "VariableDeclaration", "scope": 6009, "src": "6382:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 5799, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6382:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 5802, "mutability": "mutable", "name": "_learner", "nameLocation": "6417:8:34", "nodeType": "VariableDeclaration", "scope": 6009, "src": "6409:16:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 5801, "name": "address", "nodeType": "ElementaryTypeName", "src": "6409:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 5804, "mutability": "mutable", "name": "_timeStarted", "nameLocation": "6443:12:34", "nodeType": "VariableDeclaration", "scope": 6009, "src": "6435:20:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5803, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6435:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5806, "mutability": "mutable", "name": "_timeCompleted", "nameLocation": "6473:14:34", "nodeType": "VariableDeclaration", "scope": 6009, "src": "6465:22:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 5805, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6465:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 5809, "mutability": "mutable", "name": "_nftIds", "nameLocation": "6514:7:34", "nodeType": "VariableDeclaration", "scope": 6009, "src": "6497:24:34", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 5807, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6497:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 5808, "nodeType": "ArrayTypeName", "src": "6497:9:34", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "visibility": "internal"}], "src": "6372:155:34"}, "returnParameters": {"id": 5817, "nodeType": "ParameterList", "parameters": [], "src": "6584:0:34"}, "scope": 6300, "src": "6349:1916:34", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8536], "body": {"id": 6088, "nodeType": "Block", "src": "8543:562:34", "statements": [{"assignments": [6023], "declarations": [{"constant": false, "id": 6023, "mutability": "mutable", "name": "course", "nameLocation": "8568:6:34", "nodeType": "VariableDeclaration", "scope": 6088, "src": "8553:21:34", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}, "typeName": {"id": 6022, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6021, "name": "Course", "nameLocations": ["8553:6:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "8553:6:34"}, "referencedDeclaration": 8428, "src": "8553:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}, "visibility": "internal"}], "id": 6027, "initialValue": {"baseExpression": {"id": 6024, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "8577:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6026, "indexExpression": {"id": 6025, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6012, "src": "8588:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8577:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "8553:45:34"}, {"expression": {"arguments": [{"expression": {"id": 6029, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8616:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6030, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8623:12:34", "memberName": "isBonusToken", "nodeType": "MemberAccess", "referencedDeclaration": 8423, "src": "8616:19:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c696420616374696f6e", "id": 6031, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8637:16:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_6f2677d92d5145565e0e2d97bb91aa8fab6e90fdadc635557da200934c599b12", "typeString": "literal_string \"Invalid action\""}, "value": "Invalid action"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_6f2677d92d5145565e0e2d97bb91aa8fab6e90fdadc635557da200934c599b12", "typeString": "literal_string \"Invalid action\""}], "id": 6028, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8608:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6032, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8608:46:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6033, "nodeType": "ExpressionStatement", "src": "8608:46:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6038, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6035, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8672:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6036, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8679:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "8672:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 6037, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8697:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "8672:26:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4f7574206f6620627564676574", "id": 6039, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8700:15:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7cbbd07cd92f6a74380e3f810dbbe8ab829a82b5adc4c3aa0095bb7b24e67598", "typeString": "literal_string \"Out of budget\""}, "value": "Out of budget"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_7cbbd07cd92f6a74380e3f810dbbe8ab829a82b5adc4c3aa0095bb7b24e67598", "typeString": "literal_string \"Out of budget\""}], "id": 6034, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8664:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6040, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8664:52:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6041, "nodeType": "ExpressionStatement", "src": "8664:52:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6043, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8734:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6044, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8741:15:34", "memberName": "isUsingDuration", "nodeType": "MemberAccess", "referencedDeclaration": 8427, "src": "8734:22:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6054, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6048, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6045, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8761:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6046, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8768:12:34", "memberName": "timeEndBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8419, "src": "8761:19:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 6047, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8784:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "8761:24:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6053, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6049, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "8789:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 6050, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8795:9:34", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "8789:15:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"id": 6051, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8807:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6052, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8814:12:34", "memberName": "timeEndBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8419, "src": "8807:19:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8789:37:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "8761:65:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 6055, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "8760:67:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "8734:93:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "54696d6520626f6e757320686173206e6f7420656e646564", "id": 6057, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8829:26:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_221220c1e8d4607929523299e5fe37784f45490374b6fe8e14454751c1d83f2b", "typeString": "literal_string \"Time bonus has not ended\""}, "value": "Time bonus has not ended"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_221220c1e8d4607929523299e5fe37784f45490374b6fe8e14454751c1d83f2b", "typeString": "literal_string \"Time bonus has not ended\""}], "id": 6042, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8726:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6058, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8726:130:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6059, "nodeType": "ExpressionStatement", "src": "8726:130:34"}, {"assignments": [6061], "declarations": [{"constant": false, "id": 6061, "mutability": "mutable", "name": "_amount", "nameLocation": "8875:7:34", "nodeType": "VariableDeclaration", "scope": 6088, "src": "8867:15:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6060, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8867:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6064, "initialValue": {"expression": {"id": 6062, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8885:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6063, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8892:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "8885:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "8867:40:34"}, {"expression": {"id": 6069, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 6065, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8918:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6067, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "8925:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "8918:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 6068, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8943:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "8918:26:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6070, "nodeType": "ExpressionStatement", "src": "8918:26:34"}, {"expression": {"arguments": [{"expression": {"id": 6076, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "9007:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6077, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9014:7:34", "memberName": "creator", "nodeType": "MemberAccess", "referencedDeclaration": 8405, "src": "9007:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6078, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6061, "src": "9023:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 6072, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "8972:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6073, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8979:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "8972:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 6071, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "8954:17:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 6074, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8954:39:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 6075, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8994:12:34", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 487, "src": "8954:52:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,uint256)"}}, "id": 6079, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8954:77:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6080, "nodeType": "ExpressionStatement", "src": "8954:77:34"}, {"eventCall": {"arguments": [{"id": 6082, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6012, "src": "9063:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"expression": {"id": 6083, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6023, "src": "9074:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6084, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9081:7:34", "memberName": "creator", "nodeType": "MemberAccess", "referencedDeclaration": 8405, "src": "9074:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6085, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6061, "src": "9090:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6081, "name": "WithdrawnBudget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8483, "src": "9047:15:34", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,address,uint256)"}}, "id": 6086, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9047:51:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6087, "nodeType": "EmitStatement", "src": "9042:56:34"}]}, "documentation": {"id": 6010, "nodeType": "StructuredDocumentation", "src": "8271:168:34", "text": " @notice Creator can withdraw tokens bonus after time bonus ended\n @param _courseId Id of the course\n emit {WithdrawnBudget} events"}, "functionSelector": "669e88a1", "id": 6089, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 6015, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6012, "src": "8508:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 6016, "kind": "modifierInvocation", "modifierName": {"id": 6014, "name": "onlyCreator", "nameLocations": ["8496:11:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5505, "src": "8496:11:34"}, "nodeType": "ModifierInvocation", "src": "8496:22:34"}, {"arguments": [{"id": 6018, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6012, "src": "8532:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 6019, "kind": "modifierInvocation", "modifierName": {"id": 6017, "name": "activeCourse", "nameLocations": ["8519:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5522, "src": "8519:12:34"}, "nodeType": "ModifierInvocation", "src": "8519:23:34"}], "name": "withdrawBudget", "nameLocation": "8453:14:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6013, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6012, "mutability": "mutable", "name": "_courseId", "nameLocation": "8476:9:34", "nodeType": "VariableDeclaration", "scope": 6089, "src": "8468:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6011, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8468:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "8467:19:34"}, "returnParameters": {"id": 6020, "nodeType": "ParameterList", "parameters": [], "src": "8543:0:34"}, "scope": 6300, "src": "8444:661:34", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 6150, "nodeType": "Block", "src": "9418:402:34", "statements": [{"assignments": [6103], "declarations": [{"constant": false, "id": 6103, "mutability": "mutable", "name": "course", "nameLocation": "9443:6:34", "nodeType": "VariableDeclaration", "scope": 6150, "src": "9428:21:34", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}, "typeName": {"id": 6102, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6101, "name": "Course", "nameLocations": ["9428:6:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "9428:6:34"}, "referencedDeclaration": 8428, "src": "9428:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}, "visibility": "internal"}], "id": 6107, "initialValue": {"baseExpression": {"id": 6104, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "9452:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6106, "indexExpression": {"id": 6105, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6092, "src": "9463:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9452:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "9428:45:34"}, {"expression": {"id": 6113, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 6108, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9483:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6110, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "9490:11:34", "memberName": "timeRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 8421, "src": "9483:18:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 6111, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "9504:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 6112, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9510:9:34", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "9504:15:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9483:36:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6114, "nodeType": "ExpressionStatement", "src": "9483:36:34"}, {"assignments": [6116], "declarations": [{"constant": false, "id": 6116, "mutability": "mutable", "name": "_amount", "nameLocation": "9538:7:34", "nodeType": "VariableDeclaration", "scope": 6150, "src": "9530:15:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6115, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9530:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6119, "initialValue": {"expression": {"id": 6117, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9548:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6118, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9555:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "9548:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "9530:40:34"}, {"expression": {"id": 6124, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 6120, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9580:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6122, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "9587:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "9580:22:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 6123, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9605:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "9580:26:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6125, "nodeType": "ExpressionStatement", "src": "9580:26:34"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6126, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9621:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6127, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9628:12:34", "memberName": "isBonusToken", "nodeType": "MemberAccess", "referencedDeclaration": 8423, "src": "9621:19:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6130, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6128, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6116, "src": "9644:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 6129, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9654:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "9644:11:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "9621:34:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 6143, "nodeType": "IfStatement", "src": "9617:142:34", "trueBody": {"id": 6142, "nodeType": "Block", "src": "9657:102:34", "statements": [{"expression": {"arguments": [{"expression": {"id": 6137, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9724:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6138, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9731:7:34", "memberName": "creator", "nodeType": "MemberAccess", "referencedDeclaration": 8405, "src": "9724:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6139, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6116, "src": "9740:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 6133, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9689:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6134, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9696:13:34", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "9689:20:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 6132, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "9671:17:34", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 6135, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9671:39:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 6136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "9711:12:34", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 487, "src": "9671:52:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,uint256)"}}, "id": 6140, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9671:77:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6141, "nodeType": "ExpressionStatement", "src": "9671:77:34"}]}}, {"eventCall": {"arguments": [{"id": 6145, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6092, "src": "9787:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"expression": {"id": 6146, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6103, "src": "9798:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course storage pointer"}}, "id": 6147, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9805:7:34", "memberName": "creator", "nodeType": "MemberAccess", "referencedDeclaration": 8405, "src": "9798:14:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 6144, "name": "RemovedCourse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8489, "src": "9773:13:34", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)"}}, "id": 6148, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9773:40:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6149, "nodeType": "EmitStatement", "src": "9768:45:34"}]}, "documentation": {"id": 6090, "nodeType": "StructuredDocumentation", "src": "9111:205:34", "text": " @notice Remove course and transfer token to creator\n @dev Only course's creator can call this method\n @param _courseId Id of course\n \n emit {RemovedCourse} events"}, "functionSelector": "9d84bf91", "id": 6151, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 6095, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6092, "src": "9383:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 6096, "kind": "modifierInvocation", "modifierName": {"id": 6094, "name": "onlyCreator", "nameLocations": ["9371:11:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5505, "src": "9371:11:34"}, "nodeType": "ModifierInvocation", "src": "9371:22:34"}, {"arguments": [{"id": 6098, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6092, "src": "9407:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 6099, "kind": "modifierInvocation", "modifierName": {"id": 6097, "name": "activeCourse", "nameLocations": ["9394:12:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 5522, "src": "9394:12:34"}, "nodeType": "ModifierInvocation", "src": "9394:23:34"}], "name": "removeCourse", "nameLocation": "9330:12:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6093, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6092, "mutability": "mutable", "name": "_courseId", "nameLocation": "9351:9:34", "nodeType": "VariableDeclaration", "scope": 6151, "src": "9343:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6091, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9343:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "9342:19:34"}, "returnParameters": {"id": 6100, "nodeType": "ParameterList", "parameters": [], "src": "9418:0:34"}, "scope": 6300, "src": "9321:499:34", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 6219, "nodeType": "Block", "src": "10133:454:34", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6171, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 6163, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10147:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6165, "indexExpression": {"id": 6164, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10158:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10147:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6166, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10169:15:34", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "10147:37:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"baseExpression": {"id": 6167, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10187:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6169, "indexExpression": {"id": 6168, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10198:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10187:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6170, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10209:5:34", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "10187:27:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10147:67:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"baseExpression": {"id": 6172, "name": "learnerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5473, "src": "10219:11:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Learner storage ref))"}}, "id": 6174, "indexExpression": {"id": 6173, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10231:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10219:22:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$", "typeString": "mapping(address => struct Learner storage ref)"}}, "id": 6176, "indexExpression": {"id": 6175, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6156, "src": "10242:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10219:32:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage", "typeString": "struct Learner storage ref"}}, "id": 6177, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10252:13:34", "memberName": "timeCompleted", "nodeType": "MemberAccess", "referencedDeclaration": 8432, "src": "10219:46:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 6178, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10268:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "10219:50:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 6180, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "10218:52:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "10147:123:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 6184, "nodeType": "IfStatement", "src": "10143:141:34", "trueBody": {"expression": {"hexValue": "66616c7365", "id": 6182, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "10279:5:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 6162, "id": 6183, "nodeType": "Return", "src": "10272:12:34"}}, {"condition": {"expression": {"baseExpression": {"id": 6185, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10299:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6187, "indexExpression": {"id": 6186, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10310:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10299:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6188, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10321:15:34", "memberName": "isUsingDuration", "nodeType": "MemberAccess", "referencedDeclaration": 8427, "src": "10299:37:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 6204, "nodeType": "IfStatement", "src": "10295:174:34", "trueBody": {"id": 6203, "nodeType": "Block", "src": "10338:131:34", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6189, "name": "_timeCompleted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6158, "src": "10359:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"baseExpression": {"id": 6190, "name": "learnerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5473, "src": "10377:11:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Learner storage ref))"}}, "id": 6192, "indexExpression": {"id": 6191, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10389:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10377:22:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$", "typeString": "mapping(address => struct Learner storage ref)"}}, "id": 6194, "indexExpression": {"id": 6193, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6156, "src": "10400:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10377:32:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage", "typeString": "struct Learner storage ref"}}, "id": 6195, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10410:11:34", "memberName": "timeStarted", "nodeType": "MemberAccess", "referencedDeclaration": 8430, "src": "10377:44:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"baseExpression": {"id": 6196, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10424:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6198, "indexExpression": {"id": 6197, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10435:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10424:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6199, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10446:12:34", "memberName": "timeEndBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8419, "src": "10424:34:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10377:81:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10359:99:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 6162, "id": 6202, "nodeType": "Return", "src": "10352:106:34"}]}}, {"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 6205, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10485:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6207, "indexExpression": {"id": 6206, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10496:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10485:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6208, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10507:12:34", "memberName": "timeEndBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8419, "src": "10485:34:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 6209, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10523:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "10485:39:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6216, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6211, "name": "_timeCompleted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6158, "src": "10528:14:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"expression": {"baseExpression": {"id": 6212, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10546:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6214, "indexExpression": {"id": 6213, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6154, "src": "10557:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10546:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6215, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10568:12:34", "memberName": "timeEndBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8419, "src": "10546:34:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10528:52:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "10485:95:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 6162, "id": 6218, "nodeType": "Return", "src": "10478:102:34"}]}, "documentation": {"id": 6152, "nodeType": "StructuredDocumentation", "src": "9868:151:34", "text": " @notice Check whether a learner can get bonus\n @param _courseId Id of the course\n @param _learner Address of the learner"}, "functionSelector": "fda626ce", "id": 6220, "implemented": true, "kind": "function", "modifiers": [], "name": "canGetBonus", "nameLocation": "10033:11:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6159, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6154, "mutability": "mutable", "name": "_courseId", "nameLocation": "10053:9:34", "nodeType": "VariableDeclaration", "scope": 6220, "src": "10045:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6153, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10045:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 6156, "mutability": "mutable", "name": "_learner", "nameLocation": "10072:8:34", "nodeType": "VariableDeclaration", "scope": 6220, "src": "10064:16:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6155, "name": "address", "nodeType": "ElementaryTypeName", "src": "10064:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 6158, "mutability": "mutable", "name": "_timeCompleted", "nameLocation": "10090:14:34", "nodeType": "VariableDeclaration", "scope": 6220, "src": "10082:22:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6157, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10082:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10044:61:34"}, "returnParameters": {"id": 6162, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6161, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6220, "src": "10127:4:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 6160, "name": "bool", "nodeType": "ElementaryTypeName", "src": "10127:4:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "10126:6:34"}, "scope": 6300, "src": "10024:563:34", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 6233, "nodeType": "Block", "src": "10793:45:34", "statements": [{"expression": {"baseExpression": {"id": 6229, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "10810:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6231, "indexExpression": {"id": 6230, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6223, "src": "10821:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10810:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "functionReturnParameters": 6228, "id": 6232, "nodeType": "Return", "src": "10803:28:34"}]}, "documentation": {"id": 6221, "nodeType": "StructuredDocumentation", "src": "10593:115:34", "text": " @notice Get course details\n @param _courseId Id of course\n @return Details of course"}, "functionSelector": "db631a89", "id": 6234, "implemented": true, "kind": "function", "modifiers": [], "name": "getCourseData", "nameLocation": "10722:13:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6224, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6223, "mutability": "mutable", "name": "_courseId", "nameLocation": "10744:9:34", "nodeType": "VariableDeclaration", "scope": 6234, "src": "10736:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6222, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10736:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "10735:19:34"}, "returnParameters": {"id": 6228, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6227, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6234, "src": "10778:13:34", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course"}, "typeName": {"id": 6226, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6225, "name": "Course", "nameLocations": ["10778:6:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "10778:6:34"}, "referencedDeclaration": 8428, "src": "10778:6:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}, "visibility": "internal"}], "src": "10777:15:34"}, "scope": 6300, "src": "10713:125:34", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"body": {"id": 6251, "nodeType": "Block", "src": "11122:56:34", "statements": [{"expression": {"baseExpression": {"baseExpression": {"id": 6245, "name": "learnerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5473, "src": "11139:11:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Learner storage ref))"}}, "id": 6247, "indexExpression": {"id": 6246, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6237, "src": "11151:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11139:22:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Learner_$8438_storage_$", "typeString": "mapping(address => struct Learner storage ref)"}}, "id": 6249, "indexExpression": {"id": 6248, "name": "_learner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6239, "src": "11162:8:34", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11139:32:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage", "typeString": "struct Learner storage ref"}}, "functionReturnParameters": 6244, "id": 6250, "nodeType": "Return", "src": "11132:39:34"}]}, "documentation": {"id": 6235, "nodeType": "StructuredDocumentation", "src": "10844:173:34", "text": " @notice Get learner course details\n @param _courseId Id of course\n @param _learner Address of learner\n @return Details of learner course"}, "functionSelector": "2cca6f2d", "id": 6252, "implemented": true, "kind": "function", "modifiers": [], "name": "getLearnerData", "nameLocation": "11031:14:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6240, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6237, "mutability": "mutable", "name": "_courseId", "nameLocation": "11054:9:34", "nodeType": "VariableDeclaration", "scope": 6252, "src": "11046:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6236, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11046:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 6239, "mutability": "mutable", "name": "_learner", "nameLocation": "11073:8:34", "nodeType": "VariableDeclaration", "scope": 6252, "src": "11065:16:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6238, "name": "address", "nodeType": "ElementaryTypeName", "src": "11065:7:34", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "11045:37:34"}, "returnParameters": {"id": 6244, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6243, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6252, "src": "11106:14:34", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_memory_ptr", "typeString": "struct Learner"}, "typeName": {"id": 6242, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6241, "name": "Learner", "nameLocations": ["11106:7:34"], "nodeType": "IdentifierPath", "referencedDeclaration": 8438, "src": "11106:7:34"}, "referencedDeclaration": 8438, "src": "11106:7:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Learner_$8438_storage_ptr", "typeString": "struct Learner"}}, "visibility": "internal"}], "src": "11105:16:34"}, "scope": 6300, "src": "11022:156:34", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"body": {"id": 6275, "nodeType": "Block", "src": "11453:102:34", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 6263, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "11497:10:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 6264, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11497:12:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6269, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6266, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "11521:5:34", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 6267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "11527:6:34", "memberName": "number", "nodeType": "MemberAccess", "src": "11521:12:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 6268, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11536:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "11521:16:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6265, "name": "blockhash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -5, "src": "11511:9:34", "typeDescriptions": {"typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 6270, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11511:27:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6271, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6255, "src": "11540:6:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 6261, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "11480:3:34", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 6262, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "11484:12:34", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "11480:16:34", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 6272, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11480:67:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 6260, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "11470:9:34", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 6273, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11470:78:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 6259, "id": 6274, "nodeType": "Return", "src": "11463:85:34"}]}, "documentation": {"id": 6253, "nodeType": "StructuredDocumentation", "src": "11229:151:34", "text": " @notice Generates unique id hash based on _msgSender() address and previous block hash.\n @param _nonce nonce\n @return Id"}, "id": 6276, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateId", "nameLocation": "11394:11:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6256, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6255, "mutability": "mutable", "name": "_nonce", "nameLocation": "11414:6:34", "nodeType": "VariableDeclaration", "scope": 6276, "src": "11406:14:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6254, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11406:7:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "11405:16:34"}, "returnParameters": {"id": 6259, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6258, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6276, "src": "11444:7:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6257, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11444:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "11443:9:34"}, "scope": 6300, "src": "11385:170:34", "stateMutability": "view", "virtual": false, "visibility": "private"}, {"body": {"id": 6298, "nodeType": "Block", "src": "11737:123:34", "statements": [{"expression": {"id": 6286, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6282, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6280, "src": "11747:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"hexValue": "30", "id": 6284, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11771:1:34", "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": 6283, "name": "_generateId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6276, "src": "11759:11:34", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 6285, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11759:14:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "11747:26:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 6287, "nodeType": "ExpressionStatement", "src": "11747:26:34"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 6289, "name": "courseData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5466, "src": "11791:10:34", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Course_$8428_storage_$", "typeString": "mapping(bytes32 => struct Course storage ref)"}}, "id": 6291, "indexExpression": {"id": 6290, "name": "_courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6280, "src": "11802:9:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11791:21:34", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage", "typeString": "struct Course storage ref"}}, "id": 6292, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11813:11:34", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 8417, "src": "11791:33:34", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 6293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11828:1:34", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "11791:38:34", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6475706c696361746520636f75727365206964", "id": 6295, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11831:21:34", "typeDescriptions": {"typeIdentifier": "t_stringliteral_ab1a49f8d660033004bae5dfb805e335cddb5511c04548889cc825ab14a44bb3", "typeString": "literal_string \"duplicate course id\""}, "value": "duplicate course id"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_ab1a49f8d660033004bae5dfb805e335cddb5511c04548889cc825ab14a44bb3", "typeString": "literal_string \"duplicate course id\""}], "id": 6288, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11783:7:34", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6296, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11783:70:34", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6297, "nodeType": "ExpressionStatement", "src": "11783:70:34"}]}, "documentation": {"id": 6277, "nodeType": "StructuredDocumentation", "src": "11561:101:34", "text": " @notice Returns a new unique course id.\n @return _courseId Id of the course."}, "id": 6299, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateCourseId", "nameLocation": "11676:17:34", "nodeType": "FunctionDefinition", "parameters": {"id": 6278, "nodeType": "ParameterList", "parameters": [], "src": "11693:2:34"}, "returnParameters": {"id": 6281, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6280, "mutability": "mutable", "name": "_courseId", "nameLocation": "11726:9:34", "nodeType": "VariableDeclaration", "scope": 6299, "src": "11718:17:34", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6279, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11718:7:34", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "11717:19:34"}, "scope": 6300, "src": "11667:193:34", "stateMutability": "view", "virtual": false, "visibility": "private"}], "scope": 6301, "src": "798:11064:34", "usedErrors": []}], "src": "32:11830:34"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/LearnToEarnTest.sol": {"AST": {"absolutePath": "contracts/LearnToEarnTest.sol", "exportedSymbols": {"Course": [8428], "ERC721Test": [5387], "LearnToEarn": [6300], "LearnToEarnTest": [6508]}, "id": 6509, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 6302, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:35"}, {"absolutePath": "contracts/LearnToEarn.sol", "file": "./LearnToEarn.sol", "id": 6305, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6509, "sourceUnit": 6301, "src": "56:56:35", "symbolAliases": [{"foreign": {"id": 6303, "name": "LearnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6300, "src": "65:11:35", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6304, "name": "Course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8428, "src": "78:6:35", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/ERC721Test.sol", "file": "./ERC721Test.sol", "id": 6307, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6509, "sourceUnit": 5388, "src": "113:46:35", "symbolAliases": [{"foreign": {"id": 6306, "name": "ERC721Test", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5387, "src": "122:10:35", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "LearnToEarnTest", "contractDependencies": [5387, 6300], "contractKind": "contract", "fullyImplemented": true, "id": 6508, "linearizedBaseContracts": [6508], "name": "LearnToEarnTest", "nameLocation": "170:15:35", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 6310, "mutability": "mutable", "name": "learnToEarn", "nameLocation": "204:11:35", "nodeType": "VariableDeclaration", "scope": 6508, "src": "192:23:35", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}, "typeName": {"id": 6309, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6308, "name": "LearnToEarn", "nameLocations": ["192:11:35"], "nodeType": "IdentifierPath", "referencedDeclaration": 6300, "src": "192:11:35"}, "referencedDeclaration": 6300, "src": "192:11:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "visibility": "internal"}, {"constant": false, "id": 6313, "mutability": "mutable", "name": "erc721Test", "nameLocation": "232:10:35", "nodeType": "VariableDeclaration", "scope": 6508, "src": "221:21:35", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_ERC721Test_$5387", "typeString": "contract ERC721Test"}, "typeName": {"id": 6312, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6311, "name": "ERC721Test", "nameLocations": ["221:10:35"], "nodeType": "IdentifierPath", "referencedDeclaration": 5387, "src": "221:10:35"}, "referencedDeclaration": 5387, "src": "221:10:35", "typeDescriptions": {"typeIdentifier": "t_contract$_ERC721Test_$5387", "typeString": "contract ERC721Test"}}, "visibility": "internal"}, {"body": {"id": 6337, "nodeType": "Block", "src": "263:145:35", "statements": [{"expression": {"id": 6321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6316, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6310, "src": "273:11:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "id": 6319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "287:15:35", "typeDescriptions": {"typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_LearnToEarn_$6300_$", "typeString": "function () returns (contract LearnToEarn)"}, "typeName": {"id": 6318, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6317, "name": "LearnToEarn", "nameLocations": ["291:11:35"], "nodeType": "IdentifierPath", "referencedDeclaration": 6300, "src": "291:11:35"}, "referencedDeclaration": 6300, "src": "291:11:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}}, "id": 6320, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "287:17:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "src": "273:31:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "id": 6322, "nodeType": "ExpressionStatement", "src": "273:31:35"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 6323, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6310, "src": "314:11:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "id": 6325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "326:10:35", "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 5535, "src": "314:22:35", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$__$returns$__$", "typeString": "function () external"}}, "id": 6326, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "314:24:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6327, "nodeType": "ExpressionStatement", "src": "314:24:35"}, {"expression": {"id": 6335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6328, "name": "erc721Test", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6313, "src": "349:10:35", "typeDescriptions": {"typeIdentifier": "t_contract$_ERC721Test_$5387", "typeString": "contract ERC721Test"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"hexValue": "4365727469666963617465", "id": 6332, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "377:13:35", "typeDescriptions": {"typeIdentifier": "t_stringliteral_476b6a56e8793270a7635a828307eeb92cd7e2153dff9a3bd168aec20746ea55", "typeString": "literal_string \"Certificate\""}, "value": "Certificate"}, {"hexValue": "50494f4e4345", "id": 6333, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "392:8:35", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a81a74dcae7def8aa056ff54d6900a6018a883169e136e05b2a419e7f836f48f", "typeString": "literal_string \"PIONCE\""}, "value": "PIONCE"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_476b6a56e8793270a7635a828307eeb92cd7e2153dff9a3bd168aec20746ea55", "typeString": "literal_string \"Certificate\""}, {"typeIdentifier": "t_stringliteral_a81a74dcae7def8aa056ff54d6900a6018a883169e136e05b2a419e7f836f48f", "typeString": "literal_string \"PIONCE\""}], "id": 6331, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "362:14:35", "typeDescriptions": {"typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_ERC721Test_$5387_$", "typeString": "function (string memory,string memory) returns (contract ERC721Test)"}, "typeName": {"id": 6330, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6329, "name": "ERC721Test", "nameLocations": ["366:10:35"], "nodeType": "IdentifierPath", "referencedDeclaration": 5387, "src": "366:10:35"}, "referencedDeclaration": 5387, "src": "366:10:35", "typeDescriptions": {"typeIdentifier": "t_contract$_ERC721Test_$5387", "typeString": "contract ERC721Test"}}}, "id": 6334, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "362:39:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_ERC721Test_$5387", "typeString": "contract ERC721Test"}}, "src": "349:52:35", "typeDescriptions": {"typeIdentifier": "t_contract$_ERC721Test_$5387", "typeString": "contract ERC721Test"}}, "id": 6336, "nodeType": "ExpressionStatement", "src": "349:52:35"}]}, "id": 6338, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 6314, "nodeType": "ParameterList", "parameters": [], "src": "260:2:35"}, "returnParameters": {"id": 6315, "nodeType": "ParameterList", "parameters": [], "src": "263:0:35"}, "scope": 6508, "src": "249:159:35", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 6360, "nodeType": "Block", "src": "482:100:35", "statements": [{"expression": {"arguments": [{"arguments": [{"expression": {"id": 6348, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "526:3:35", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 6349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "530:6:35", "memberName": "sender", "nodeType": "MemberAccess", "src": "526:10:35", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6351, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "548:5:35", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 6352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "554:6:35", "memberName": "number", "nodeType": "MemberAccess", "src": "548:12:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 6353, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "563:1:35", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "548:16:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6350, "name": "blockhash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -5, "src": "538:9:35", "typeDescriptions": {"typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 6355, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "538:27:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6356, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6340, "src": "567:6:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 6346, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "509:3:35", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 6347, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "513:12:35", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "509:16:35", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 6357, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "509:65:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 6345, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "499:9:35", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 6358, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "499:76:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 6344, "id": 6359, "nodeType": "Return", "src": "492:83:35"}]}, "id": 6361, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateId", "nameLocation": "423:11:35", "nodeType": "FunctionDefinition", "parameters": {"id": 6341, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6340, "mutability": "mutable", "name": "_nonce", "nameLocation": "443:6:35", "nodeType": "VariableDeclaration", "scope": 6361, "src": "435:14:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6339, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "435:7:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "434:16:35"}, "returnParameters": {"id": 6344, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6343, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6361, "src": "473:7:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6342, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "473:7:35", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "472:9:35"}, "scope": 6508, "src": "414:168:35", "stateMutability": "view", "virtual": false, "visibility": "private"}, {"body": {"id": 6506, "nodeType": "Block", "src": "624:1203:35", "statements": [{"assignments": [6365], "declarations": [{"constant": false, "id": 6365, "mutability": "mutable", "name": "rewardAddress", "nameLocation": "642:13:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "634:21:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6364, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:35", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 6370, "initialValue": {"arguments": [{"hexValue": "307831", "id": 6368, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "666:3:35", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "0x1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 6367, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "658:7:35", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 6366, "name": "address", "nodeType": "ElementaryTypeName", "src": "658:7:35", "typeDescriptions": {}}}, "id": 6369, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "658:12:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "634:36:35"}, {"assignments": [6372], "declarations": [{"constant": false, "id": 6372, "mutability": "mutable", "name": "budget", "nameLocation": "688:6:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "680:14:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6371, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "680:7:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6374, "initialValue": {"hexValue": "313030", "id": 6373, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "697:3:35", "typeDescriptions": {"typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100"}, "value": "100"}, "nodeType": "VariableDeclarationStatement", "src": "680:20:35"}, {"assignments": [6376], "declarations": [{"constant": false, "id": 6376, "mutability": "mutable", "name": "bonus", "nameLocation": "718:5:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "710:13:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6375, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "710:7:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6378, "initialValue": {"hexValue": "3130", "id": 6377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "726:2:35", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "VariableDeclarationStatement", "src": "710:18:35"}, {"assignments": [6380], "declarations": [{"constant": false, "id": 6380, "mutability": "mutable", "name": "timeStart", "nameLocation": "746:9:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "738:17:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6379, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "738:7:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6383, "initialValue": {"expression": {"id": 6381, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "758:5:35", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 6382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "764:9:35", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "758:15:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "738:35:35"}, {"assignments": [6385], "declarations": [{"constant": false, "id": 6385, "mutability": "mutable", "name": "timeEndBonus", "nameLocation": "791:12:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "783:20:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6384, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "783:7:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6389, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6388, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6386, "name": "timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6380, "src": "806:9:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 6387, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "818:6:35", "subdenomination": "days", "typeDescriptions": {"typeIdentifier": "t_rational_86400_by_1", "typeString": "int_const 86400"}, "value": "1"}, "src": "806:18:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "783:41:35"}, {"assignments": [6391], "declarations": [{"constant": false, "id": 6391, "mutability": "mutable", "name": "isUsingDuration", "nameLocation": "839:15:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "834:20:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 6390, "name": "bool", "nodeType": "ElementaryTypeName", "src": "834:4:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 6393, "initialValue": {"hexValue": "74727565", "id": 6392, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "857:4:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "nodeType": "VariableDeclarationStatement", "src": "834:27:35"}, {"assignments": [6395], "declarations": [{"constant": false, "id": 6395, "mutability": "mutable", "name": "isBonusToken", "nameLocation": "876:12:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "871:17:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 6394, "name": "bool", "nodeType": "ElementaryTypeName", "src": "871:4:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "id": 6397, "initialValue": {"hexValue": "74727565", "id": 6396, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "891:4:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "nodeType": "VariableDeclarationStatement", "src": "871:24:35"}, {"expression": {"arguments": [{"id": 6401, "name": "rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6365, "src": "944:13:35", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6402, "name": "budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6372, "src": "971:6:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6403, "name": "bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6376, "src": "991:5:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6404, "name": "timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6380, "src": "1010:9:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6405, "name": "timeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6385, "src": "1033:12:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6406, "name": "isUsingDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6391, "src": "1059:15:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"id": 6407, "name": "isBonusToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6395, "src": "1088:12:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "expression": {"id": 6398, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6310, "src": "906:11:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "id": 6400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "918:12:35", "memberName": "createCourse", "nodeType": "MemberAccess", "referencedDeclaration": 5714, "src": "906:24:35", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$", "typeString": "function (address,uint256,uint256,uint256,uint256,bool,bool) external"}}, "id": 6408, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "906:204:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6409, "nodeType": "ExpressionStatement", "src": "906:204:35"}, {"assignments": [6411], "declarations": [{"constant": false, "id": 6411, "mutability": "mutable", "name": "courseId", "nameLocation": "1129:8:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "1121:16:35", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6410, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1121:7:35", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 6415, "initialValue": {"arguments": [{"hexValue": "30", "id": 6413, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1152:1:35", "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": 6412, "name": "_generateId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6361, "src": "1140:11:35", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 6414, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1140:14:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "1121:33:35"}, {"assignments": [6418], "declarations": [{"constant": false, "id": 6418, "mutability": "mutable", "name": "course", "nameLocation": "1239:6:35", "nodeType": "VariableDeclaration", "scope": 6506, "src": "1225:20:35", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course"}, "typeName": {"id": 6417, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6416, "name": "Course", "nameLocations": ["1225:6:35"], "nodeType": "IdentifierPath", "referencedDeclaration": 8428, "src": "1225:6:35"}, "referencedDeclaration": 8428, "src": "1225:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_storage_ptr", "typeString": "struct Course"}}, "visibility": "internal"}], "id": 6423, "initialValue": {"arguments": [{"id": 6421, "name": "courseId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6411, "src": "1274:8:35", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "expression": {"id": 6419, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6310, "src": "1248:11:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarn_$6300", "typeString": "contract LearnToEarn"}}, "id": 6420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1260:13:35", "memberName": "getCourseData", "nodeType": "MemberAccess", "referencedDeclaration": 6234, "src": "1248:25:35", "typeDescriptions": {"typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_Course_$8428_memory_ptr_$", "typeString": "function (bytes32) view external returns (struct Course memory)"}}, "id": 6422, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1248:35:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "nodeType": "VariableDeclarationStatement", "src": "1225:58:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6431, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6425, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1300:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6426, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1307:7:35", "memberName": "creator", "nodeType": "MemberAccess", "referencedDeclaration": 8405, "src": "1300:14:35", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"id": 6429, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1326:4:35", "typeDescriptions": {"typeIdentifier": "t_contract$_LearnToEarnTest_$6508", "typeString": "contract LearnToEarnTest"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_LearnToEarnTest_$6508", "typeString": "contract LearnToEarnTest"}], "id": 6428, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1318:7:35", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 6427, "name": "address", "nodeType": "ElementaryTypeName", "src": "1318:7:35", "typeDescriptions": {}}}, "id": 6430, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1318:13:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1300:31:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6424, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1293:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6432, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1293:39:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6433, "nodeType": "ExpressionStatement", "src": "1293:39:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6435, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1349:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6436, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1356:13:35", "memberName": "rewardAddress", "nodeType": "MemberAccess", "referencedDeclaration": 8407, "src": "1349:20:35", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6437, "name": "rewardAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6365, "src": "1373:13:35", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1349:37:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6434, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1342:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6439, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1342:45:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6440, "nodeType": "ExpressionStatement", "src": "1342:45:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6447, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6442, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1404:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6443, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1411:6:35", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 8409, "src": "1404:13:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6444, "name": "budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6372, "src": "1421:6:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 6445, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1430:1:35", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1421:10:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1404:27:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6441, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1397:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6448, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1397:35:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6449, "nodeType": "ExpressionStatement", "src": "1397:35:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6451, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1449:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6452, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1456:15:35", "memberName": "budgetAvailable", "nodeType": "MemberAccess", "referencedDeclaration": 8411, "src": "1449:22:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6453, "name": "budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6372, "src": "1475:6:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1449:32:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6450, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1442:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6455, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1442:40:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6456, "nodeType": "ExpressionStatement", "src": "1442:40:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6458, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1499:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6459, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1506:5:35", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 8413, "src": "1499:12:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6460, "name": "bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6376, "src": "1515:5:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1499:21:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6457, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1492:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6462, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1492:29:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6463, "nodeType": "ExpressionStatement", "src": "1492:29:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6468, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6465, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1538:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6466, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1545:11:35", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 8417, "src": "1538:18:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6467, "name": "timeStart", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6380, "src": "1560:9:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1538:31:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6464, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1531:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6469, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1531:39:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6470, "nodeType": "ExpressionStatement", "src": "1531:39:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6472, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1587:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6473, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1594:12:35", "memberName": "timeEndBonus", "nodeType": "MemberAccess", "referencedDeclaration": 8419, "src": "1587:19:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6474, "name": "timeEndBonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6385, "src": "1610:12:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1587:35:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6471, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1580:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6476, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1580:43:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6477, "nodeType": "ExpressionStatement", "src": "1580:43:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6479, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1640:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6480, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1647:11:35", "memberName": "timeRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 8421, "src": "1640:18:35", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 6481, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1662:1:35", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1640:23:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6478, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1633:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6483, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1633:31:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6484, "nodeType": "ExpressionStatement", "src": "1633:31:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6486, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1681:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6487, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1688:15:35", "memberName": "isUsingDuration", "nodeType": "MemberAccess", "referencedDeclaration": 8427, "src": "1681:22:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6488, "name": "isUsingDuration", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6391, "src": "1707:15:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1681:41:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6485, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1674:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6490, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1674:49:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6491, "nodeType": "ExpressionStatement", "src": "1674:49:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6493, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1740:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6494, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1747:12:35", "memberName": "isBonusToken", "nodeType": "MemberAccess", "referencedDeclaration": 8423, "src": "1740:19:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6495, "name": "isBonusToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6395, "src": "1763:12:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1740:35:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6492, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1733:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6497, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1733:43:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6498, "nodeType": "ExpressionStatement", "src": "1733:43:35"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6503, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6500, "name": "course", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6418, "src": "1793:6:35", "typeDescriptions": {"typeIdentifier": "t_struct$_Course_$8428_memory_ptr", "typeString": "struct Course memory"}}, "id": 6501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1800:10:35", "memberName": "canMintNFT", "nodeType": "MemberAccess", "referencedDeclaration": 8425, "src": "1793:17:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "66616c7365", "id": 6502, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1814:5:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "1793:26:35", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 6499, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "1786:6:35", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 6504, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1786:34:35", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6505, "nodeType": "ExpressionStatement", "src": "1786:34:35"}]}, "functionSelector": "e22387d3", "id": 6507, "implemented": true, "kind": "function", "modifiers": [], "name": "test_createCourse", "nameLocation": "597:17:35", "nodeType": "FunctionDefinition", "parameters": {"id": 6362, "nodeType": "ParameterList", "parameters": [], "src": "614:2:35"}, "returnParameters": {"id": 6363, "nodeType": "ParameterList", "parameters": [], "src": "624:0:35"}, "scope": 6508, "src": "588:1239:35", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 6509, "src": "161:1668:35", "usedErrors": []}], "src": "32:1797:35"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/NFTReward.sol": {"AST": {"absolutePath": "contracts/NFTReward.sol", "exportedSymbols": {"ERC721URIStorageUpgradeable": [1907], "ERC721Upgradeable": [1628], "IERC165Upgradeable": [2695], "IERC721Upgradeable": [1762], "INFTReward": [8572], "NFTReward": [6632]}, "id": 6633, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 6510, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:36"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", "id": 6515, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6633, "sourceUnit": 1908, "src": "56:197:36", "symbolAliases": [{"foreign": {"id": 6511, "name": "IERC165Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2695, "src": "65:18:36", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6512, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "85:18:36", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6513, "name": "ERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1628, "src": "105:17:36", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6514, "name": "ERC721URIStorageUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1907, "src": "124:27:36", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/INFTReward.sol", "file": "./interfaces/INFTReward.sol", "id": 6517, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 6633, "sourceUnit": 8573, "src": "254:57:36", "symbolAliases": [{"foreign": {"id": 6516, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "263:10:36", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 6519, "name": "ERC721URIStorageUpgradeable", "nameLocations": ["400:27:36"], "nodeType": "IdentifierPath", "referencedDeclaration": 1907, "src": "400:27:36"}, "id": 6520, "nodeType": "InheritanceSpecifier", "src": "400:27:36"}, {"baseName": {"id": 6521, "name": "INFTReward", "nameLocations": ["429:10:36"], "nodeType": "IdentifierPath", "referencedDeclaration": 8572, "src": "429:10:36"}, "id": 6522, "nodeType": "InheritanceSpecifier", "src": "429:10:36"}], "canonicalName": "NFTReward", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 6518, "nodeType": "StructuredDocumentation", "src": "313:63:36", "text": " @title NFTReward Contract\n @author ReBaked Team"}, "fullyImplemented": true, "id": 6632, "linearizedBaseContracts": [6632, 8572, 1907, 1628, 1934, 1762, 2683, 2695, 2219, 282], "name": "NFTReward", "nameLocation": "387:9:36", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "documentation": {"id": 6523, "nodeType": "StructuredDocumentation", "src": "446:58:36", "text": " @notice Address of LearnToEarn contract"}, "functionSelector": "a4e8aaae", "id": 6525, "mutability": "mutable", "name": "learnToEarn", "nameLocation": "524:11:36", "nodeType": "VariableDeclaration", "scope": 6632, "src": "509:26:36", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6524, "name": "address", "nodeType": "ElementaryTypeName", "src": "509:7:36", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "public"}, {"constant": false, "documentation": {"id": 6526, "nodeType": "StructuredDocumentation", "src": "542:58:36", "text": " @notice ID of Minted NFT, increase by 1"}, "functionSelector": "714cff56", "id": 6528, "mutability": "mutable", "name": "tokenIds", "nameLocation": "620:8:36", "nodeType": "VariableDeclaration", "scope": 6632, "src": "605:23:36", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6527, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "605:7:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "public"}, {"constant": false, "documentation": {"id": 6529, "nodeType": "StructuredDocumentation", "src": "635:76:36", "text": " notice URI of NFT, NFTs in same contract has the same URI"}, "functionSelector": "eac989f8", "id": 6531, "mutability": "mutable", "name": "uri", "nameLocation": "730:3:36", "nodeType": "VariableDeclaration", "scope": 6632, "src": "716:17:36", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 6530, "name": "string", "nodeType": "ElementaryTypeName", "src": "716:6:36", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "public"}, {"baseFunctions": [8571], "body": {"id": 6568, "nodeType": "Block", "src": "1124:184:36", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6551, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6546, "name": "_learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6534, "src": "1142:12:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 6549, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1166:1:36", "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": 6548, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1158:7:36", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 6547, "name": "address", "nodeType": "ElementaryTypeName", "src": "1158:7:36", "typeDescriptions": {}}}, "id": 6550, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1158:10:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1142:26:36", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4c6561726e546f4561726e2061646472657373206973206e6f742076616c6964", "id": 6552, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1170:34:36", "typeDescriptions": {"typeIdentifier": "t_stringliteral_e45ddec8cf1d5d9cee2b8ead83e3387b5c6f4942841363d86bcd1848a75adc94", "typeString": "literal_string \"LearnToEarn address is not valid\""}, "value": "LearnToEarn address is not valid"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_e45ddec8cf1d5d9cee2b8ead83e3387b5c6f4942841363d86bcd1848a75adc94", "typeString": "literal_string \"LearnToEarn address is not valid\""}], "id": 6545, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1134:7:36", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6553, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1134:71:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6554, "nodeType": "ExpressionStatement", "src": "1134:71:36"}, {"expression": {"arguments": [{"id": 6556, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6536, "src": "1229:5:36", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 6557, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6538, "src": "1236:7:36", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 6555, "name": "__ERC721_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 801, "src": "1215:13:36", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory,string memory)"}}, "id": 6558, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1215:29:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6559, "nodeType": "ExpressionStatement", "src": "1215:29:36"}, {"expression": {"id": 6562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6560, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6525, "src": "1255:11:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 6561, "name": "_learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6534, "src": "1269:12:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1255:26:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 6563, "nodeType": "ExpressionStatement", "src": "1255:26:36"}, {"expression": {"id": 6566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6564, "name": "uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6531, "src": "1291:3:36", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 6565, "name": "_uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6540, "src": "1297:4:36", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1291:10:36", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 6567, "nodeType": "ExpressionStatement", "src": "1291:10:36"}]}, "documentation": {"id": 6532, "nodeType": "StructuredDocumentation", "src": "784:210:36", "text": " @notice Replace for contructor\n @param _learnToEarn Address of LearnToEarn contract\n @param _name Name of NFTs\n @param _symbol Symbol of NFTs\n @param _uri ipfs of NFTs"}, "functionSelector": "5f1e6f6d", "id": 6569, "implemented": true, "kind": "function", "modifiers": [{"id": 6543, "kind": "modifierInvocation", "modifierName": {"id": 6542, "name": "initializer", "nameLocations": ["1112:11:36"], "nodeType": "IdentifierPath", "referencedDeclaration": 202, "src": "1112:11:36"}, "nodeType": "ModifierInvocation", "src": "1112:11:36"}], "name": "initialize", "nameLocation": "1008:10:36", "nodeType": "FunctionDefinition", "parameters": {"id": 6541, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6534, "mutability": "mutable", "name": "_learnToEarn", "nameLocation": "1027:12:36", "nodeType": "VariableDeclaration", "scope": 6569, "src": "1019:20:36", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6533, "name": "address", "nodeType": "ElementaryTypeName", "src": "1019:7:36", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 6536, "mutability": "mutable", "name": "_name", "nameLocation": "1055:5:36", "nodeType": "VariableDeclaration", "scope": 6569, "src": "1041:19:36", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 6535, "name": "string", "nodeType": "ElementaryTypeName", "src": "1041:6:36", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 6538, "mutability": "mutable", "name": "_symbol", "nameLocation": "1076:7:36", "nodeType": "VariableDeclaration", "scope": 6569, "src": "1062:21:36", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 6537, "name": "string", "nodeType": "ElementaryTypeName", "src": "1062:6:36", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 6540, "mutability": "mutable", "name": "_uri", "nameLocation": "1099:4:36", "nodeType": "VariableDeclaration", "scope": 6569, "src": "1085:18:36", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 6539, "name": "string", "nodeType": "ElementaryTypeName", "src": "1085:6:36", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1018:86:36"}, "returnParameters": {"id": 6544, "nodeType": "ParameterList", "parameters": [], "src": "1124:0:36"}, "scope": 6632, "src": "999:309:36", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"baseFunctions": [8559], "body": {"id": 6606, "nodeType": "Block", "src": "1548:240:36", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 6578, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "1566:10:36", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 6579, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1566:12:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 6580, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6525, "src": "1582:11:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1566:27:36", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "43616c6c6572206973206e6f74206c6561726e546f4561726e", "id": 6582, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1595:27:36", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2789fa1d668a0bb6f9e04b731f45b4dd9451bc63fb253cfdd4ce054cee6574b0", "typeString": "literal_string \"Caller is not learnToEarn\""}, "value": "Caller is not learnToEarn"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2789fa1d668a0bb6f9e04b731f45b4dd9451bc63fb253cfdd4ce054cee6574b0", "typeString": "literal_string \"Caller is not learnToEarn\""}], "id": 6577, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1558:7:36", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6583, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1558:65:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6584, "nodeType": "ExpressionStatement", "src": "1558:65:36"}, {"expression": {"id": 6586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "1633:10:36", "subExpression": {"id": 6585, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6528, "src": "1635:8:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 6587, "nodeType": "ExpressionStatement", "src": "1633:10:36"}, {"expression": {"arguments": [{"id": 6589, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6572, "src": "1663:3:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6590, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6528, "src": "1668:8:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6588, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [1238, 1267], "referencedDeclaration": 1238, "src": "1653:9:36", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 6591, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1653:24:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6592, "nodeType": "ExpressionStatement", "src": "1653:24:36"}, {"expression": {"arguments": [{"id": 6594, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6528, "src": "1700:8:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6595, "name": "uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6531, "src": "1710:3:36", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}], "id": 6593, "name": "_setTokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1871, "src": "1687:12:36", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (uint256,string memory)"}}, "id": 6596, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1687:27:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6597, "nodeType": "ExpressionStatement", "src": "1687:27:36"}, {"eventCall": {"arguments": [{"id": 6599, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6572, "src": "1737:3:36", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6600, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6528, "src": "1742:8:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6601, "name": "uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6531, "src": "1752:3:36", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}], "id": 6598, "name": "Minted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8551, "src": "1730:6:36", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,uint256,string memory)"}}, "id": 6602, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1730:26:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6603, "nodeType": "EmitStatement", "src": "1725:31:36"}, {"expression": {"id": 6604, "name": "tokenIds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6528, "src": "1773:8:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 6576, "id": 6605, "nodeType": "Return", "src": "1766:15:36"}]}, "documentation": {"id": 6570, "nodeType": "StructuredDocumentation", "src": "1366:124:36", "text": " @notice mint a NFT for _to address\n @param _to address of user\n emit { Minted } events"}, "functionSelector": "6a627842", "id": 6607, "implemented": true, "kind": "function", "modifiers": [], "name": "mint", "nameLocation": "1504:4:36", "nodeType": "FunctionDefinition", "parameters": {"id": 6573, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6572, "mutability": "mutable", "name": "_to", "nameLocation": "1517:3:36", "nodeType": "VariableDeclaration", "scope": 6607, "src": "1509:11:36", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6571, "name": "address", "nodeType": "ElementaryTypeName", "src": "1509:7:36", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1508:13:36"}, "returnParameters": {"id": 6576, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6575, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6607, "src": "1539:7:36", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6574, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1539:7:36", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1538:9:36"}, "scope": 6632, "src": "1495:293:36", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [850, 2694], "body": {"id": 6630, "nodeType": "Block", "src": "2152:107:36", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 6628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 6623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6618, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6610, "src": "2169:11:36", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 6620, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "2189:10:36", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}], "id": 6619, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "2184:4:36", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 6621, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2184:16:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_INFTReward_$8572", "typeString": "type(contract INFTReward)"}}, "id": 6622, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2201:11:36", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "2184:28:36", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "2169:43:36", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 6626, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6610, "src": "2240:11:36", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"id": 6624, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "2216:5:36", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_NFTReward_$6632_$", "typeString": "type(contract super NFTReward)"}}, "id": 6625, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2222:17:36", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 850, "src": "2216:23:36", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function (bytes4) view returns (bool)"}}, "id": 6627, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2216:36:36", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2169:83:36", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 6617, "id": 6629, "nodeType": "Return", "src": "2162:90:36"}]}, "documentation": {"id": 6608, "nodeType": "StructuredDocumentation", "src": "1842:175:36", "text": " @notice Override function `supportsInterface` when using ERC165\n @dev Returns true if this contract implements the interface defined by `interfaceId`."}, "functionSelector": "01ffc9a7", "id": 6631, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "2031:17:36", "nodeType": "FunctionDefinition", "overrides": {"id": 6614, "nodeType": "OverrideSpecifier", "overrides": [{"id": 6612, "name": "IERC165Upgradeable", "nameLocations": ["2098:18:36"], "nodeType": "IdentifierPath", "referencedDeclaration": 2695, "src": "2098:18:36"}, {"id": 6613, "name": "ERC721Upgradeable", "nameLocations": ["2118:17:36"], "nodeType": "IdentifierPath", "referencedDeclaration": 1628, "src": "2118:17:36"}], "src": "2089:47:36"}, "parameters": {"id": 6611, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6610, "mutability": "mutable", "name": "interfaceId", "nameLocation": "2056:11:36", "nodeType": "VariableDeclaration", "scope": 6631, "src": "2049:18:36", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 6609, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "2049:6:36", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "2048:20:36"}, "returnParameters": {"id": 6617, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6616, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 6631, "src": "2146:4:36", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 6615, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2146:4:36", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2145:6:36"}, "scope": 6632, "src": "2022:237:36", "stateMutability": "view", "virtual": true, "visibility": "public"}], "scope": 6633, "src": "378:1883:36", "usedErrors": []}], "src": "32:2230:36"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ReBakedDAO.sol": {"AST": {"absolutePath": "contracts/ReBakedDAO.sol", "exportedSymbols": {"Collaborator": [9885], "CollaboratorLibrary": [9043], "IERC20Upgradeable": [419], "IReBakedDAO": [8847], "Observer": [9892], "ObserverLibrary": [9134], "OwnableUpgradeable": [131], "Package": [9870], "PackageLibrary": [9576], "Project": [9837], "ProjectLibrary": [9816], "ReBakedDAO": [8219], "ReentrancyGuardUpgradeable": [341], "SafeERC20Upgradeable": [736]}, "id": 8220, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 6634, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:37"}, {"absolutePath": "contracts/interfaces/IReBakedDAO.sol", "file": "./interfaces/IReBakedDAO.sol", "id": 6636, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 8848, "src": "56:59:37", "symbolAliases": [{"foreign": {"id": 6635, "name": "IReBakedDAO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8847, "src": "65:11:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "id": 6638, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 132, "src": "116:103:37", "symbolAliases": [{"foreign": {"id": 6637, "name": "OwnableUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "125:18:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", "id": 6640, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 342, "src": "220:121:37", "symbolAliases": [{"foreign": {"id": 6639, "name": "ReentrancyGuardUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "229:26:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "id": 6643, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 737, "src": "342:137:37", "symbolAliases": [{"foreign": {"id": 6641, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "351:17:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6642, "name": "SafeERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 736, "src": "370:20:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProjectLibrary.sol", "file": "./libraries/ProjectLibrary.sol", "id": 6646, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 9817, "src": "480:73:37", "symbolAliases": [{"foreign": {"id": 6644, "name": "Project", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9837, "src": "489:7:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6645, "name": "ProjectLibrary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9816, "src": "498:14:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/libraries/PackageLibrary.sol", "file": "./libraries/PackageLibrary.sol", "id": 6649, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 9577, "src": "554:73:37", "symbolAliases": [{"foreign": {"id": 6647, "name": "Package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9870, "src": "563:7:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6648, "name": "PackageLibrary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9576, "src": "572:14:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CollaboratorLibrary.sol", "file": "./libraries/CollaboratorLibrary.sol", "id": 6652, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 9044, "src": "628:88:37", "symbolAliases": [{"foreign": {"id": 6650, "name": "Collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9885, "src": "637:12:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6651, "name": "CollaboratorLibrary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9043, "src": "651:19:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ObserverLibrary.sol", "file": "./libraries/ObserverLibrary.sol", "id": 6655, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8220, "sourceUnit": 9135, "src": "717:76:37", "symbolAliases": [{"foreign": {"id": 6653, "name": "Observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9892, "src": "726:8:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 6654, "name": "ObserverLibrary", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9134, "src": "736:15:37", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 6657, "name": "IReBakedDAO", "nameLocations": ["883:11:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 8847, "src": "883:11:37"}, "id": 6658, "nodeType": "InheritanceSpecifier", "src": "883:11:37"}, {"baseName": {"id": 6659, "name": "OwnableUpgradeable", "nameLocations": ["896:18:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 131, "src": "896:18:37"}, "id": 6660, "nodeType": "InheritanceSpecifier", "src": "896:18:37"}, {"baseName": {"id": 6661, "name": "ReentrancyGuardUpgradeable", "nameLocations": ["916:26:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 341, "src": "916:26:37"}, "id": 6662, "nodeType": "InheritanceSpecifier", "src": "916:26:37"}], "canonicalName": "ReBakedDAO", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 6656, "nodeType": "StructuredDocumentation", "src": "795:64:37", "text": " @title ReBakedDAO Contract\n @author ReBaked Team"}, "fullyImplemented": true, "id": 8219, "linearizedBaseContracts": [8219, 341, 131, 2219, 282, 8847], "name": "ReBakedDAO", "nameLocation": "869:10:37", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 6666, "libraryName": {"id": 6663, "name": "SafeERC20Upgradeable", "nameLocations": ["955:20:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 736, "src": "955:20:37"}, "nodeType": "UsingForDirective", "src": "949:49:37", "typeName": {"id": 6665, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6664, "name": "IERC20Upgradeable", "nameLocations": ["980:17:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "980:17:37"}, "referencedDeclaration": 419, "src": "980:17:37", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}}, {"global": false, "id": 6670, "libraryName": {"id": 6667, "name": "ProjectLibrary", "nameLocations": ["1009:14:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9816, "src": "1009:14:37"}, "nodeType": "UsingForDirective", "src": "1003:33:37", "typeName": {"id": 6669, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6668, "name": "Project", "nameLocations": ["1028:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "1028:7:37"}, "referencedDeclaration": 9837, "src": "1028:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}}, {"global": false, "id": 6674, "libraryName": {"id": 6671, "name": "PackageLibrary", "nameLocations": ["1047:14:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9576, "src": "1047:14:37"}, "nodeType": "UsingForDirective", "src": "1041:33:37", "typeName": {"id": 6673, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6672, "name": "Package", "nameLocations": ["1066:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "1066:7:37"}, "referencedDeclaration": 9870, "src": "1066:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}}, {"global": false, "id": 6678, "libraryName": {"id": 6675, "name": "CollaboratorLibrary", "nameLocations": ["1085:19:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9043, "src": "1085:19:37"}, "nodeType": "UsingForDirective", "src": "1079:43:37", "typeName": {"id": 6677, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6676, "name": "Collaborator", "nameLocations": ["1109:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "1109:12:37"}, "referencedDeclaration": 9885, "src": "1109:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}}, {"global": false, "id": 6682, "libraryName": {"id": 6679, "name": "ObserverLibrary", "nameLocations": ["1133:15:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9134, "src": "1133:15:37"}, "nodeType": "UsingForDirective", "src": "1127:35:37", "typeName": {"id": 6681, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6680, "name": "Observer", "nameLocations": ["1153:8:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "1153:8:37"}, "referencedDeclaration": 9892, "src": "1153:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}}, {"constant": true, "functionSelector": "e1d84514", "id": 6685, "mutability": "constant", "name": "PCT_PRECISION", "nameLocation": "1241:13:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1217:43:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6683, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1217:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "316536", "id": 6684, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1257:3:37", "typeDescriptions": {"typeIdentifier": "t_rational_1000000_by_1", "typeString": "int_const 1000000"}, "value": "1e6"}, "visibility": "public"}, {"constant": false, "functionSelector": "61d027b3", "id": 6687, "mutability": "mutable", "name": "treasury", "nameLocation": "1308:8:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1293:23:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6686, "name": "address", "nodeType": "ElementaryTypeName", "src": "1293:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "public"}, {"constant": false, "id": 6692, "mutability": "mutable", "name": "projectData", "nameLocation": "1387:11:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1351:47:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project)"}, "typeName": {"id": 6691, "keyType": {"id": 6688, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1359:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1351:27:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project)"}, "valueType": {"id": 6690, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6689, "name": "Project", "nameLocations": ["1370:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "1370:7:37"}, "referencedDeclaration": 9837, "src": "1370:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}}, "visibility": "private"}, {"constant": false, "id": 6699, "mutability": "mutable", "name": "packageData", "nameLocation": "1502:11:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1446:67:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package))"}, "typeName": {"id": 6698, "keyType": {"id": 6693, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1454:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1446:47:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package))"}, "valueType": {"id": 6697, "keyType": {"id": 6694, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1473:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1465:27:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package)"}, "valueType": {"id": 6696, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6695, "name": "Package", "nameLocations": ["1484:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "1484:7:37"}, "referencedDeclaration": 9870, "src": "1484:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}}}, "visibility": "private"}, {"constant": false, "id": 6707, "mutability": "mutable", "name": "approvedUser", "nameLocation": "1647:12:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1574:85:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => bool)))"}, "typeName": {"id": 6706, "keyType": {"id": 6700, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1582:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1574:64:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => bool)))"}, "valueType": {"id": 6705, "keyType": {"id": 6701, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1601:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1593:44:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))"}, "valueType": {"id": 6704, "keyType": {"id": 6702, "name": "address", "nodeType": "ElementaryTypeName", "src": "1620:7:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1612:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}, "valueType": {"id": 6703, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1631:4:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}}}}, "visibility": "private"}, {"constant": false, "id": 6716, "mutability": "mutable", "name": "collaboratorData", "nameLocation": "1801:16:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1720:97:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator)))"}, "typeName": {"id": 6715, "keyType": {"id": 6708, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1728:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1720:72:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator)))"}, "valueType": {"id": 6714, "keyType": {"id": 6709, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1747:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1739:52:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator))"}, "valueType": {"id": 6713, "keyType": {"id": 6710, "name": "address", "nodeType": "ElementaryTypeName", "src": "1766:7:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1758:32:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator)"}, "valueType": {"id": 6712, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6711, "name": "Collaborator", "nameLocations": ["1777:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "1777:12:37"}, "referencedDeclaration": 9885, "src": "1777:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}}}}, "visibility": "private"}, {"constant": false, "id": 6725, "mutability": "mutable", "name": "observerData", "nameLocation": "1951:12:37", "nodeType": "VariableDeclaration", "scope": 8219, "src": "1874:89:37", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer)))"}, "typeName": {"id": 6724, "keyType": {"id": 6717, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1882:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1874:68:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer)))"}, "valueType": {"id": 6723, "keyType": {"id": 6718, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1901:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "1893:48:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer))"}, "valueType": {"id": 6722, "keyType": {"id": 6719, "name": "address", "nodeType": "ElementaryTypeName", "src": "1920:7:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1912:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer)"}, "valueType": {"id": 6721, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6720, "name": "Observer", "nameLocations": ["1931:8:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "1931:8:37"}, "referencedDeclaration": 9892, "src": "1931:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}}}}, "visibility": "private"}, {"body": {"id": 6738, "nodeType": "Block", "src": "2069:63:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6731, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6728, "src": "2087:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 6732, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2097:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2087:11:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "5a65726f20616d6f756e74", "id": 6734, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2100:13:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_499f3f4b0ad3588aa1eb6e198be77bff643a4218ffbf2bef1370e58aadea5df4", "typeString": "literal_string \"Zero amount\""}, "value": "Zero amount"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_499f3f4b0ad3588aa1eb6e198be77bff643a4218ffbf2bef1370e58aadea5df4", "typeString": "literal_string \"Zero amount\""}], "id": 6730, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2079:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6735, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2079:35:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6736, "nodeType": "ExpressionStatement", "src": "2079:35:37"}, {"id": 6737, "nodeType": "PlaceholderStatement", "src": "2124:1:37"}]}, "documentation": {"id": 6726, "nodeType": "StructuredDocumentation", "src": "1970:60:37", "text": " @notice Throws if amount provided is zero"}, "id": 6739, "name": "nonZero", "nameLocation": "2044:7:37", "nodeType": "ModifierDefinition", "parameters": {"id": 6729, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6728, "mutability": "mutable", "name": "amount_", "nameLocation": "2060:7:37", "nodeType": "VariableDeclaration", "scope": 6739, "src": "2052:15:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6727, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2052:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2051:17:37"}, "src": "2035:97:37", "virtual": false, "visibility": "internal"}, {"body": {"id": 6756, "nodeType": "Block", "src": "2277:121:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6751, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 6745, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "2295:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 6747, "indexExpression": {"id": 6746, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6742, "src": "2307:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2295:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 6748, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2319:9:37", "memberName": "initiator", "nodeType": "MemberAccess", "referencedDeclaration": 9820, "src": "2295:33:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 6749, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "2332:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 6750, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2332:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2295:49:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "63616c6c6572206973206e6f742070726f6a65637420696e69746961746f72", "id": 6752, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2346:33:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_24541c496c6cde3e41b8d4242571ff8746a1ef390be98ba9d128aee2b4105001", "typeString": "literal_string \"caller is not project initiator\""}, "value": "caller is not project initiator"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_24541c496c6cde3e41b8d4242571ff8746a1ef390be98ba9d128aee2b4105001", "typeString": "literal_string \"caller is not project initiator\""}], "id": 6744, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2287:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6753, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2287:93:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6754, "nodeType": "ExpressionStatement", "src": "2287:93:37"}, {"id": 6755, "nodeType": "PlaceholderStatement", "src": "2390:1:37"}]}, "documentation": {"id": 6740, "nodeType": "StructuredDocumentation", "src": "2138:91:37", "text": " @notice Throws if called by any account other than the project initiator"}, "id": 6757, "name": "onlyInitiator", "nameLocation": "2243:13:37", "nodeType": "ModifierDefinition", "parameters": {"id": 6743, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6742, "mutability": "mutable", "name": "_projectId", "nameLocation": "2265:10:37", "nodeType": "VariableDeclaration", "scope": 6757, "src": "2257:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6741, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2257:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2256:20:37"}, "src": "2234:164:37", "virtual": false, "visibility": "internal"}, {"body": {"id": 6785, "nodeType": "Block", "src": "2583:169:37", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 6765, "name": "__Ownable_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "2593:14:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 6766, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2593:16:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6767, "nodeType": "ExpressionStatement", "src": "2593:16:37"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 6768, "name": "__ReentrancyGuard_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 305, "src": "2619:22:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 6769, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2619:24:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6770, "nodeType": "ExpressionStatement", "src": "2619:24:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6777, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6772, "name": "treasury_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6760, "src": "2662:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 6775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2683:1:37", "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": 6774, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2675:7:37", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 6773, "name": "address", "nodeType": "ElementaryTypeName", "src": "2675:7:37", "typeDescriptions": {}}}, "id": 6776, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2675:10:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2662:23:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c69642074726561737572792061646472657373", "id": 6778, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2687:26:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2907d22e021443ed72dd5d6da68ce09da129c5a4aeb5f71d047f95f263ebcfce", "typeString": "literal_string \"invalid treasury address\""}, "value": "invalid treasury address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2907d22e021443ed72dd5d6da68ce09da129c5a4aeb5f71d047f95f263ebcfce", "typeString": "literal_string \"invalid treasury address\""}], "id": 6771, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2654:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6779, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2654:60:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6780, "nodeType": "ExpressionStatement", "src": "2654:60:37"}, {"expression": {"id": 6783, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6781, "name": "treasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6687, "src": "2725:8:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 6782, "name": "treasury_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6760, "src": "2736:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2725:20:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 6784, "nodeType": "ExpressionStatement", "src": "2725:20:37"}]}, "documentation": {"id": 6758, "nodeType": "StructuredDocumentation", "src": "2404:116:37", "text": " @notice Initialize of contract (replace for constructor)\n @param treasury_ Treasury address"}, "functionSelector": "c4d66de8", "id": 6786, "implemented": true, "kind": "function", "modifiers": [{"id": 6763, "kind": "modifierInvocation", "modifierName": {"id": 6762, "name": "initializer", "nameLocations": ["2571:11:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 202, "src": "2571:11:37"}, "nodeType": "ModifierInvocation", "src": "2571:11:37"}], "name": "initialize", "nameLocation": "2534:10:37", "nodeType": "FunctionDefinition", "parameters": {"id": 6761, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6760, "mutability": "mutable", "name": "treasury_", "nameLocation": "2553:9:37", "nodeType": "VariableDeclaration", "scope": 6786, "src": "2545:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6759, "name": "address", "nodeType": "ElementaryTypeName", "src": "2545:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2544:19:37"}, "returnParameters": {"id": 6764, "nodeType": "ParameterList", "parameters": [], "src": "2583:0:37"}, "scope": 8219, "src": "2525:227:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"baseFunctions": [8704], "body": {"id": 6817, "nodeType": "Block", "src": "2992:201:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6795, "name": "treasury_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6789, "src": "3010:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 6798, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3031:1:37", "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": 6797, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3023:7:37", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 6796, "name": "address", "nodeType": "ElementaryTypeName", "src": "3023:7:37", "typeDescriptions": {}}}, "id": 6799, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3023:10:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3010:23:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c69642074726561737572792061646472657373", "id": 6801, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3035:26:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2907d22e021443ed72dd5d6da68ce09da129c5a4aeb5f71d047f95f263ebcfce", "typeString": "literal_string \"invalid treasury address\""}, "value": "invalid treasury address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2907d22e021443ed72dd5d6da68ce09da129c5a4aeb5f71d047f95f263ebcfce", "typeString": "literal_string \"invalid treasury address\""}], "id": 6794, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3002:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6802, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3002:60:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6803, "nodeType": "ExpressionStatement", "src": "3002:60:37"}, {"assignments": [6805], "declarations": [{"constant": false, "id": 6805, "mutability": "mutable", "name": "oldTreasury", "nameLocation": "3080:11:37", "nodeType": "VariableDeclaration", "scope": 6817, "src": "3072:19:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6804, "name": "address", "nodeType": "ElementaryTypeName", "src": "3072:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 6807, "initialValue": {"id": 6806, "name": "treasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6687, "src": "3094:8:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "3072:30:37"}, {"expression": {"id": 6810, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 6808, "name": "treasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6687, "src": "3112:8:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 6809, "name": "treasury_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6789, "src": "3123:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3112:20:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 6811, "nodeType": "ExpressionStatement", "src": "3112:20:37"}, {"eventCall": {"arguments": [{"id": 6813, "name": "oldTreasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6805, "src": "3164:11:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6814, "name": "treasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6687, "src": "3177:8:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 6812, "name": "UpdatedTreasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8580, "src": "3148:15:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 6815, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3148:38:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6816, "nodeType": "EmitStatement", "src": "3143:43:37"}]}, "documentation": {"id": 6787, "nodeType": "StructuredDocumentation", "src": "2804:121:37", "text": " @notice Update treasury address\n @param treasury_ Treasury address\n Emit {UpdatedTreasury}"}, "functionSelector": "7f51bb1f", "id": 6818, "implemented": true, "kind": "function", "modifiers": [{"id": 6792, "kind": "modifierInvocation", "modifierName": {"id": 6791, "name": "onlyOwner", "nameLocations": ["2982:9:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 45, "src": "2982:9:37"}, "nodeType": "ModifierInvocation", "src": "2982:9:37"}], "name": "updateTreasury", "nameLocation": "2939:14:37", "nodeType": "FunctionDefinition", "parameters": {"id": 6790, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6789, "mutability": "mutable", "name": "treasury_", "nameLocation": "2962:9:37", "nodeType": "VariableDeclaration", "scope": 6818, "src": "2954:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6788, "name": "address", "nodeType": "ElementaryTypeName", "src": "2954:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2953:19:37"}, "returnParameters": {"id": 6793, "nodeType": "ParameterList", "parameters": [], "src": "2992:0:37"}, "scope": 8219, "src": "2930:263:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8712], "body": {"id": 6862, "nodeType": "Block", "src": "3529:259:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 6837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6832, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6821, "src": "3547:6:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 6835, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3565:1:37", "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": 6834, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3557:7:37", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 6833, "name": "address", "nodeType": "ElementaryTypeName", "src": "3557:7:37", "typeDescriptions": {}}}, "id": 6836, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3557:10:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3547:20:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c696420746f6b656e2061646472657373", "id": 6838, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3569:23:37", "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": 6831, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3539:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6839, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3539:54:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6840, "nodeType": "ExpressionStatement", "src": "3539:54:37"}, {"assignments": [6842], "declarations": [{"constant": false, "id": 6842, "mutability": "mutable", "name": "_projectId", "nameLocation": "3611:10:37", "nodeType": "VariableDeclaration", "scope": 6862, "src": "3603:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6841, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3603:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 6845, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 6843, "name": "_generateProjectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8189, "src": "3624:18:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", "typeString": "function () view returns (bytes32)"}}, "id": 6844, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3624:20:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "3603:41:37"}, {"expression": {"arguments": [{"id": 6850, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6821, "src": "3693:6:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6851, "name": "budget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6823, "src": "3701:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"id": 6846, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "3654:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 6848, "indexExpression": {"id": 6847, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6842, "src": "3666:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3654:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 6849, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3678:14:37", "memberName": "_createProject", "nodeType": "MemberAccess", "referencedDeclaration": 9642, "src": "3654:38:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer,address,uint256)"}}, "id": 6852, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3654:55:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6853, "nodeType": "ExpressionStatement", "src": "3654:55:37"}, {"eventCall": {"arguments": [{"id": 6855, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6842, "src": "3739:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"arguments": [], "expression": {"argumentTypes": [], "id": 6856, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "3751:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 6857, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3751:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6858, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6821, "src": "3765:6:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6859, "name": "budget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6823, "src": "3773:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6854, "name": "CreatedProject", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8590, "src": "3724:14:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,address,address,uint256)"}}, "id": 6860, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3724:57:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6861, "nodeType": "EmitStatement", "src": "3719:62:37"}]}, "documentation": {"id": 6819, "nodeType": "StructuredDocumentation", "src": "3199:230:37", "text": " @dev Creates project proposal\n @param token_ project token address\n @param budget_ total budget (has to be approved on token contract if project has its own token)\n Emit {CreatedProject}"}, "functionSelector": "e82d6572", "id": 6863, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 6826, "name": "budget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6823, "src": "3507:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 6827, "kind": "modifierInvocation", "modifierName": {"id": 6825, "name": "nonZero", "nameLocations": ["3499:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6739, "src": "3499:7:37"}, "nodeType": "ModifierInvocation", "src": "3499:16:37"}, {"id": 6829, "kind": "modifierInvocation", "modifierName": {"id": 6828, "name": "nonReentrant", "nameLocations": ["3516:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 335, "src": "3516:12:37"}, "nodeType": "ModifierInvocation", "src": "3516:12:37"}], "name": "createProject", "nameLocation": "3443:13:37", "nodeType": "FunctionDefinition", "parameters": {"id": 6824, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6821, "mutability": "mutable", "name": "token_", "nameLocation": "3465:6:37", "nodeType": "VariableDeclaration", "scope": 6863, "src": "3457:14:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 6820, "name": "address", "nodeType": "ElementaryTypeName", "src": "3457:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 6823, "mutability": "mutable", "name": "budget_", "nameLocation": "3481:7:37", "nodeType": "VariableDeclaration", "scope": 6863, "src": "3473:15:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6822, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3473:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3456:33:37"}, "returnParameters": {"id": 6830, "nodeType": "ParameterList", "parameters": [], "src": "3529:0:37"}, "scope": 8219, "src": "3434:354:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8718], "body": {"id": 6887, "nodeType": "Block", "src": "4006:134:37", "statements": [{"assignments": [6875], "declarations": [{"constant": false, "id": 6875, "mutability": "mutable", "name": "budgetLeft_", "nameLocation": "4024:11:37", "nodeType": "VariableDeclaration", "scope": 6887, "src": "4016:19:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6874, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4016:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6881, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"id": 6876, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "4038:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 6878, "indexExpression": {"id": 6877, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6866, "src": "4050:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4038:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 6879, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4062:14:37", "memberName": "_finishProject", "nodeType": "MemberAccess", "referencedDeclaration": 9701, "src": "4038:38:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer) returns (uint256)"}}, "id": 6880, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4038:40:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "4016:62:37"}, {"eventCall": {"arguments": [{"id": 6883, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6866, "src": "4109:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6884, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6875, "src": "4121:11:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6882, "name": "FinishedProject", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8604, "src": "4093:15:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,uint256)"}}, "id": 6885, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4093:40:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6886, "nodeType": "EmitStatement", "src": "4088:45:37"}]}, "documentation": {"id": 6864, "nodeType": "StructuredDocumentation", "src": "3794:116:37", "text": " @notice Finishes project\n @param _projectId Id of the project\n Emit {FinishedProject}"}, "functionSelector": "85ceab29", "id": 6888, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 6869, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6866, "src": "3981:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 6870, "kind": "modifierInvocation", "modifierName": {"id": 6868, "name": "onlyInitiator", "nameLocations": ["3967:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "3967:13:37"}, "nodeType": "ModifierInvocation", "src": "3967:25:37"}, {"id": 6872, "kind": "modifierInvocation", "modifierName": {"id": 6871, "name": "nonReentrant", "nameLocations": ["3993:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 335, "src": "3993:12:37"}, "nodeType": "ModifierInvocation", "src": "3993:12:37"}], "name": "finishProject", "nameLocation": "3924:13:37", "nodeType": "FunctionDefinition", "parameters": {"id": 6867, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6866, "mutability": "mutable", "name": "_projectId", "nameLocation": "3946:10:37", "nodeType": "VariableDeclaration", "scope": 6888, "src": "3938:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6865, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3938:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "3937:20:37"}, "returnParameters": {"id": 6873, "nodeType": "ParameterList", "parameters": [], "src": "4006:0:37"}, "scope": 8219, "src": "3915:225:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8735], "body": {"id": 7002, "nodeType": "Block", "src": "4777:766:37", "statements": [{"assignments": [6915], "declarations": [{"constant": false, "id": 6915, "mutability": "mutable", "name": "project", "nameLocation": "4803:7:37", "nodeType": "VariableDeclaration", "scope": 7002, "src": "4787:23:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 6914, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6913, "name": "Project", "nameLocations": ["4787:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "4787:7:37"}, "referencedDeclaration": 9837, "src": "4787:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}], "id": 6919, "initialValue": {"baseExpression": {"id": 6916, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "4813:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 6918, "indexExpression": {"id": 6917, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6891, "src": "4825:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4813:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "4787:49:37"}, {"assignments": [6921], "declarations": [{"constant": false, "id": 6921, "mutability": "mutable", "name": "total", "nameLocation": "4854:5:37", "nodeType": "VariableDeclaration", "scope": 7002, "src": "4846:13:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6920, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4846:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 6927, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6926, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6922, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6893, "src": "4862:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 6923, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6895, "src": "4872:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4862:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 6925, "name": "_observerBudget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6897, "src": "4881:15:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4862:34:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "4846:50:37"}, {"expression": {"arguments": [{"id": 6931, "name": "total", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6921, "src": "4937:5:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 6928, "name": "project", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6915, "src": "4906:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 6930, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4914:22:37", "memberName": "_reservePackagesBudget", "nodeType": "MemberAccess", "referencedDeclaration": 9742, "src": "4906:30:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer,uint256)"}}, "id": 6932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4906:37:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6933, "nodeType": "ExpressionStatement", "src": "4906:37:37"}, {"assignments": [6935], "declarations": [{"constant": false, "id": 6935, "mutability": "mutable", "name": "_packageId", "nameLocation": "4961:10:37", "nodeType": "VariableDeclaration", "scope": 7002, "src": "4953:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6934, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4953:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "id": 6940, "initialValue": {"arguments": [{"id": 6937, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6891, "src": "4993:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"hexValue": "30", "id": 6938, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5005:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 6936, "name": "_generatePackageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8218, "src": "4974:18:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (bytes32,uint256) view returns (bytes32)"}}, "id": 6939, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4974:33:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "VariableDeclarationStatement", "src": "4953:54:37"}, {"assignments": [6943], "declarations": [{"constant": false, "id": 6943, "mutability": "mutable", "name": "package", "nameLocation": "5033:7:37", "nodeType": "VariableDeclaration", "scope": 7002, "src": "5017:23:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 6942, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 6941, "name": "Package", "nameLocations": ["5017:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "5017:7:37"}, "referencedDeclaration": 9870, "src": "5017:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "id": 6949, "initialValue": {"baseExpression": {"baseExpression": {"id": 6944, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "5043:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 6946, "indexExpression": {"id": 6945, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6891, "src": "5055:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5043:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 6948, "indexExpression": {"id": 6947, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6935, "src": "5067:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5043:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "5017:61:37"}, {"expression": {"arguments": [{"id": 6953, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6893, "src": "5111:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6954, "name": "_observerBudget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6897, "src": "5120:15:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6955, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6895, "src": "5137:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6956, "name": "_collaboratorsLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6899, "src": "5145:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 6950, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6943, "src": "5088:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 6952, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5096:14:37", "memberName": "_createPackage", "nodeType": "MemberAccess", "referencedDeclaration": 9222, "src": "5088:22:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256,uint256,uint256,uint256)"}}, "id": 6957, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5088:77:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6958, "nodeType": "ExpressionStatement", "src": "5088:77:37"}, {"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 6964, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "5225:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 6965, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5225:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 6966, "name": "treasury", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6687, "src": "5239:8:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6972, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6969, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6967, "name": "total", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6921, "src": "5250:5:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"hexValue": "35", "id": 6968, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5258:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5"}, "value": "5"}, "src": "5250:9:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 6970, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "5249:11:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "313030", "id": 6971, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5263:3:37", "typeDescriptions": {"typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100"}, "value": "100"}, "src": "5249:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 6960, "name": "project", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6915, "src": "5193:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 6961, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5201:5:37", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 9822, "src": "5193:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 6959, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "5175:17:37", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 6962, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5175:32:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 6963, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5208:16:37", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 513, "src": "5175:49:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,address,uint256)"}}, "id": 6973, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5175:92:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6974, "nodeType": "ExpressionStatement", "src": "5175:92:37"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6978, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 6975, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6902, "src": "5282:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 6976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5293:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "5282:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 6977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5302:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5282:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 6993, "nodeType": "IfStatement", "src": "5278:171:37", "trueBody": {"id": 6992, "nodeType": "Block", "src": "5305:144:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 6982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 6980, "name": "_observerBudget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6897, "src": "5327:15:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 6981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5345:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "5327:19:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c6964206f627365727665727320627564676574", "id": 6983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5348:26:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_87a139ee77d6deaf6e0c6a32bcb311a9ec441f711c809441ebbfd38420d68615", "typeString": "literal_string \"invalid observers budget\""}, "value": "invalid observers budget"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_87a139ee77d6deaf6e0c6a32bcb311a9ec441f711c809441ebbfd38420d68615", "typeString": "literal_string \"invalid observers budget\""}], "id": 6979, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5319:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 6984, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5319:56:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6985, "nodeType": "ExpressionStatement", "src": "5319:56:37"}, {"expression": {"arguments": [{"id": 6987, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6891, "src": "5403:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6988, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6935, "src": "5415:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6989, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6902, "src": "5427:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}], "id": 6986, "name": "_addObservers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7608, "src": "5389:13:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes32,address[] memory)"}}, "id": 6990, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5389:49:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 6991, "nodeType": "ExpressionStatement", "src": "5389:49:37"}]}}, {"eventCall": {"arguments": [{"id": 6995, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6891, "src": "5479:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6996, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6935, "src": "5491:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 6997, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6893, "src": "5503:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6998, "name": "_bonus", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6895, "src": "5512:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 6999, "name": "_observerBudget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6897, "src": "5520:15:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 6994, "name": "CreatedPackage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8616, "src": "5464:14:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,uint256,uint256,uint256)"}}, "id": 7000, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5464:72:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7001, "nodeType": "EmitStatement", "src": "5459:77:37"}]}, "documentation": {"id": 6889, "nodeType": "StructuredDocumentation", "src": "4146:348:37", "text": " @notice Creates package in project\n @param _projectId Id of the project\n @param _budget MGP budget\n @param _bonus Bonus budget\n @param _observerBudget Observer budget\n @param _collaboratorsLimit limit on number of collaborators\n @param _observers List of observers\n Emit {CreatedPackage}"}, "functionSelector": "b2b57114", "id": 7003, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 6905, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6891, "src": "4735:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 6906, "kind": "modifierInvocation", "modifierName": {"id": 6904, "name": "onlyInitiator", "nameLocations": ["4721:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "4721:13:37"}, "nodeType": "ModifierInvocation", "src": "4721:25:37"}, {"arguments": [{"id": 6908, "name": "_budget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6893, "src": "4755:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 6909, "kind": "modifierInvocation", "modifierName": {"id": 6907, "name": "nonZero", "nameLocations": ["4747:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6739, "src": "4747:7:37"}, "nodeType": "ModifierInvocation", "src": "4747:16:37"}, {"id": 6911, "kind": "modifierInvocation", "modifierName": {"id": 6910, "name": "nonReentrant", "nameLocations": ["4764:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 335, "src": "4764:12:37"}, "nodeType": "ModifierInvocation", "src": "4764:12:37"}], "name": "createPackage", "nameLocation": "4508:13:37", "nodeType": "FunctionDefinition", "parameters": {"id": 6903, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 6891, "mutability": "mutable", "name": "_projectId", "nameLocation": "4539:10:37", "nodeType": "VariableDeclaration", "scope": 7003, "src": "4531:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 6890, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4531:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 6893, "mutability": "mutable", "name": "_budget", "nameLocation": "4567:7:37", "nodeType": "VariableDeclaration", "scope": 7003, "src": "4559:15:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6892, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4559:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 6895, "mutability": "mutable", "name": "_bonus", "nameLocation": "4592:6:37", "nodeType": "VariableDeclaration", "scope": 7003, "src": "4584:14:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6894, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4584:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 6897, "mutability": "mutable", "name": "_observerBudget", "nameLocation": "4616:15:37", "nodeType": "VariableDeclaration", "scope": 7003, "src": "4608:23:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6896, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4608:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 6899, "mutability": "mutable", "name": "_collaboratorsLimit", "nameLocation": "4649:19:37", "nodeType": "VariableDeclaration", "scope": 7003, "src": "4641:27:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6898, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4641:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 6902, "mutability": "mutable", "name": "_observers", "nameLocation": "4695:10:37", "nodeType": "VariableDeclaration", "scope": 7003, "src": "4678:27:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 6900, "name": "address", "nodeType": "ElementaryTypeName", "src": "4678:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 6901, "nodeType": "ArrayTypeName", "src": "4678:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "4521:190:37"}, "returnParameters": {"id": 6912, "nodeType": "ParameterList", "parameters": [], "src": "4777:0:37"}, "scope": 8219, "src": "4499:1044:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8752], "body": {"id": 7173, "nodeType": "Block", "src": "6118:1230:37", "statements": [{"assignments": [7025], "declarations": [{"constant": false, "id": 7025, "mutability": "mutable", "name": "package", "nameLocation": "6144:7:37", "nodeType": "VariableDeclaration", "scope": 7173, "src": "6128:23:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 7024, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7023, "name": "Package", "nameLocations": ["6128:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "6128:7:37"}, "referencedDeclaration": 9870, "src": "6128:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "id": 7031, "initialValue": {"baseExpression": {"baseExpression": {"id": 7026, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "6154:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7028, "indexExpression": {"id": 7027, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7006, "src": "6166:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6154:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7030, "indexExpression": {"id": 7029, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7008, "src": "6178:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6154:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "6128:61:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7037, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7033, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7011, "src": "6207:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7034, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6222:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "6207:21:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 7035, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7025, "src": "6232:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7036, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6240:18:37", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "6232:26:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6207:51:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c696420636f6c6c61626f7261746f7273206c697374", "id": 7038, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6260:28:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_5ca65cb75d7b8dc223cc26652e4735163b47add5f5159f0342b94b0aab8575a4", "typeString": "literal_string \"invalid collaborators list\""}, "value": "invalid collaborators list"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_5ca65cb75d7b8dc223cc26652e4735163b47add5f5159f0342b94b0aab8575a4", "typeString": "literal_string \"invalid collaborators list\""}], "id": 7032, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6199:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7039, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6199:90:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7040, "nodeType": "ExpressionStatement", "src": "6199:90:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7046, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7042, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7011, "src": "6307:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6322:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "6307:21:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 7044, "name": "_scores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7017, "src": "6332:7:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 7045, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6340:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "6332:14:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6307:39:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "61727261797327206c656e677468206d69736d61746368", "id": 7047, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6348:25:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9bd464fa0a124def40ece43d9b5312a49a225a3c1aa27960d76f9488f050d7e8", "typeString": "literal_string \"arrays' length mismatch\""}, "value": "arrays' length mismatch"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9bd464fa0a124def40ece43d9b5312a49a225a3c1aa27960d76f9488f050d7e8", "typeString": "literal_string \"arrays' length mismatch\""}], "id": 7041, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6299:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7048, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6299:75:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7049, "nodeType": "ExpressionStatement", "src": "6299:75:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7055, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7051, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7014, "src": "6392:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6403:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "6392:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 7053, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7025, "src": "6413:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7054, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6421:14:37", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "6413:22:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6392:43:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c6964206f6273657276657273206c697374", "id": 7056, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6437:24:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_20479b551647c95d9261dfba708e2ac615e3f27fcda3b5e142f0cd973d3ec26e", "typeString": "literal_string \"invalid observers list\""}, "value": "invalid observers list"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_20479b551647c95d9261dfba708e2ac615e3f27fcda3b5e142f0cd973d3ec26e", "typeString": "literal_string \"invalid observers list\""}], "id": 7050, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6384:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7057, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6384:78:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7058, "nodeType": "ExpressionStatement", "src": "6384:78:37"}, {"assignments": [7060], "declarations": [{"constant": false, "id": 7060, "mutability": "mutable", "name": "budgetLeft_", "nameLocation": "6481:11:37", "nodeType": "VariableDeclaration", "scope": 7173, "src": "6473:19:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7059, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6473:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7064, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 7061, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7025, "src": "6495:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7062, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6503:14:37", "memberName": "_finishPackage", "nodeType": "MemberAccess", "referencedDeclaration": 9489, "src": "6495:22:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer) returns (uint256)"}}, "id": 7063, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6495:24:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "6473:46:37"}, {"expression": {"arguments": [{"id": 7069, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7060, "src": "6568:11:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"id": 7065, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "6529:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 7067, "indexExpression": {"id": 7066, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7006, "src": "6541:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6529:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 7068, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6553:14:37", "memberName": "_finishPackage", "nodeType": "MemberAccess", "referencedDeclaration": 9788, "src": "6529:38:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer,uint256)"}}, "id": 7070, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6529:51:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7071, "nodeType": "ExpressionStatement", "src": "6529:51:37"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 7080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7075, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7072, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7025, "src": "6595:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7073, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "6603:5:37", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "6595:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7074, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6611:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6595:17:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7079, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7076, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7011, "src": "6616:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7077, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6631:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "6616:21:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7078, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6640:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6616:25:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6595:46:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7121, "nodeType": "IfStatement", "src": "6591:381:37", "trueBody": {"id": 7120, "nodeType": "Block", "src": "6643:329:37", "statements": [{"assignments": [7082], "declarations": [{"constant": false, "id": 7082, "mutability": "mutable", "name": "_totalBonusScores", "nameLocation": "6665:17:37", "nodeType": "VariableDeclaration", "scope": 7120, "src": "6657:25:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7081, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6657:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7084, "initialValue": {"hexValue": "30", "id": 7083, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6685:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "6657:29:37"}, {"body": {"id": 7111, "nodeType": "Block", "src": "6745:128:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7101, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 7097, "name": "_scores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7017, "src": "6771:7:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 7099, "indexExpression": {"id": 7098, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7086, "src": "6779:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6771:10:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7100, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6784:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6771:14:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c696420626f6e75732073636f7265", "id": 7102, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6787:21:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_51a20a1763a2b38b727bb4d72bcd2480167dd46e6d477bdccdbba02540ee1126", "typeString": "literal_string \"invalid bonus score\""}, "value": "invalid bonus score"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_51a20a1763a2b38b727bb4d72bcd2480167dd46e6d477bdccdbba02540ee1126", "typeString": "literal_string \"invalid bonus score\""}], "id": 7096, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6763:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7103, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6763:46:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7104, "nodeType": "ExpressionStatement", "src": "6763:46:37"}, {"expression": {"id": 7109, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 7105, "name": "_totalBonusScores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7082, "src": "6827:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"baseExpression": {"id": 7106, "name": "_scores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7017, "src": "6848:7:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 7108, "indexExpression": {"id": 7107, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7086, "src": "6856:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6848:10:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6827:31:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7110, "nodeType": "ExpressionStatement", "src": "6827:31:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7089, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7086, "src": "6720:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7090, "name": "_scores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7017, "src": "6724:7:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 7091, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6732:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "6724:14:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6720:18:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7112, "initializationExpression": {"assignments": [7086], "declarations": [{"constant": false, "id": 7086, "mutability": "mutable", "name": "i", "nameLocation": "6713:1:37", "nodeType": "VariableDeclaration", "scope": 7112, "src": "6705:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7085, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6705:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7088, "initialValue": {"hexValue": "30", "id": 7087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6717:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "6705:13:37"}, "loopExpression": {"expression": {"id": 7094, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "6740:3:37", "subExpression": {"id": 7093, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7086, "src": "6740:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7095, "nodeType": "ExpressionStatement", "src": "6740:3:37"}, "nodeType": "ForStatement", "src": "6700:173:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7114, "name": "_totalBonusScores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7082, "src": "6894:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 7115, "name": "PCT_PRECISION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6685, "src": "6915:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6894:34:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e636f727265637420746f74616c20626f6e75732073636f726573", "id": 7117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6930:30:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0b97c8059c6f797cf321a619eea52ba6ca535b8ab4023fa6d145f1c85f3ac5e6", "typeString": "literal_string \"incorrect total bonus scores\""}, "value": "incorrect total bonus scores"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_0b97c8059c6f797cf321a619eea52ba6ca535b8ab4023fa6d145f1c85f3ac5e6", "typeString": "literal_string \"incorrect total bonus scores\""}], "id": 7113, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6886:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7118, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6886:75:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7119, "nodeType": "ExpressionStatement", "src": "6886:75:37"}]}}, {"body": {"id": 7144, "nodeType": "Block", "src": "7034:103:37", "statements": [{"expression": {"arguments": [{"id": 7134, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7006, "src": "7072:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7135, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7008, "src": "7084:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"baseExpression": {"id": 7136, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7011, "src": "7096:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7138, "indexExpression": {"id": 7137, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7123, "src": "7111:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7096:17:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"baseExpression": {"id": 7139, "name": "_scores", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7017, "src": "7115:7:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory"}}, "id": 7141, "indexExpression": {"id": 7140, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7123, "src": "7123:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7115:10:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 7133, "name": "_payCollaboratorRewards", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8087, "src": "7048:23:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,address,uint256)"}}, "id": 7142, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7048:78:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7143, "nodeType": "ExpressionStatement", "src": "7048:78:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7126, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7123, "src": "7002:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7127, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7011, "src": "7006:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7021:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "7006:21:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7002:25:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7145, "initializationExpression": {"assignments": [7123], "declarations": [{"constant": false, "id": 7123, "mutability": "mutable", "name": "i", "nameLocation": "6995:1:37", "nodeType": "VariableDeclaration", "scope": 7145, "src": "6987:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7122, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6987:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7125, "initialValue": {"hexValue": "30", "id": 7124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6999:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "6987:13:37"}, "loopExpression": {"expression": {"id": 7131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "7029:3:37", "subExpression": {"id": 7130, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7123, "src": "7029:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7132, "nodeType": "ExpressionStatement", "src": "7029:3:37"}, "nodeType": "ForStatement", "src": "6982:155:37"}, {"body": {"id": 7165, "nodeType": "Block", "src": "7195:79:37", "statements": [{"expression": {"arguments": [{"id": 7158, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7006, "src": "7225:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7159, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7008, "src": "7237:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"baseExpression": {"id": 7160, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7014, "src": "7249:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7162, "indexExpression": {"id": 7161, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7147, "src": "7260:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7249:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 7157, "name": "_payObserverFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8142, "src": "7209:15:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,bytes32,address)"}}, "id": 7163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7209:54:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7164, "nodeType": "ExpressionStatement", "src": "7209:54:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7150, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7147, "src": "7167:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7151, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7014, "src": "7171:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7182:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "7171:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7167:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7166, "initializationExpression": {"assignments": [7147], "declarations": [{"constant": false, "id": 7147, "mutability": "mutable", "name": "i", "nameLocation": "7160:1:37", "nodeType": "VariableDeclaration", "scope": 7166, "src": "7152:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7146, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7152:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7149, "initialValue": {"hexValue": "30", "id": 7148, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7164:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "7152:13:37"}, "loopExpression": {"expression": {"id": 7155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "7190:3:37", "subExpression": {"id": 7154, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7147, "src": "7190:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7156, "nodeType": "ExpressionStatement", "src": "7190:3:37"}, "nodeType": "ForStatement", "src": "7147:127:37"}, {"eventCall": {"arguments": [{"id": 7168, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7006, "src": "7305:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7169, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7008, "src": "7317:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7170, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7060, "src": "7329:11:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 7167, "name": "FinishedPackage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8668, "src": "7289:15:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,uint256)"}}, "id": 7171, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7289:52:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7172, "nodeType": "EmitStatement", "src": "7284:57:37"}]}, "documentation": {"id": 7004, "nodeType": "StructuredDocumentation", "src": "5549:332:37", "text": " @notice Finishes package in project\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborators List of collaborators\n @param _observers List of observers\n @param _scores List of bonus scores for collaborators\n Emit {FinishedPackage}"}, "functionSelector": "2926aa80", "id": 7174, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7020, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7006, "src": "6106:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7021, "kind": "modifierInvocation", "modifierName": {"id": 7019, "name": "onlyInitiator", "nameLocations": ["6092:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "6092:13:37"}, "nodeType": "ModifierInvocation", "src": "6092:25:37"}], "name": "finishPackage", "nameLocation": "5895:13:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7018, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7006, "mutability": "mutable", "name": "_projectId", "nameLocation": "5926:10:37", "nodeType": "VariableDeclaration", "scope": 7174, "src": "5918:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7005, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5918:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7008, "mutability": "mutable", "name": "_packageId", "nameLocation": "5954:10:37", "nodeType": "VariableDeclaration", "scope": 7174, "src": "5946:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7007, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5946:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7011, "mutability": "mutable", "name": "_collaborators", "nameLocation": "5991:14:37", "nodeType": "VariableDeclaration", "scope": 7174, "src": "5974:31:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7009, "name": "address", "nodeType": "ElementaryTypeName", "src": "5974:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7010, "nodeType": "ArrayTypeName", "src": "5974:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 7014, "mutability": "mutable", "name": "_observers", "nameLocation": "6032:10:37", "nodeType": "VariableDeclaration", "scope": 7174, "src": "6015:27:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7012, "name": "address", "nodeType": "ElementaryTypeName", "src": "6015:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7013, "nodeType": "ArrayTypeName", "src": "6015:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 7017, "mutability": "mutable", "name": "_scores", "nameLocation": "6069:7:37", "nodeType": "VariableDeclaration", "scope": 7174, "src": "6052:24:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 7015, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6052:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7016, "nodeType": "ArrayTypeName", "src": "6052:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "visibility": "internal"}], "src": "5908:174:37"}, "returnParameters": {"id": 7022, "nodeType": "ParameterList", "parameters": [], "src": "6118:0:37"}, "scope": 8219, "src": "5886:1462:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8768], "body": {"id": 7303, "nodeType": "Block", "src": "7887:928:37", "statements": [{"assignments": [7195], "declarations": [{"constant": false, "id": 7195, "mutability": "mutable", "name": "package", "nameLocation": "7913:7:37", "nodeType": "VariableDeclaration", "scope": 7303, "src": "7897:23:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 7194, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7193, "name": "Package", "nameLocations": ["7897:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "7897:7:37"}, "referencedDeclaration": 9870, "src": "7897:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "id": 7201, "initialValue": {"baseExpression": {"baseExpression": {"id": 7196, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "7923:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7198, "indexExpression": {"id": 7197, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7177, "src": "7935:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7923:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7200, "indexExpression": {"id": 7199, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7179, "src": "7947:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7923:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "7897:61:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7207, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7203, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7182, "src": "7976:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7204, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7991:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "7976:21:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 7205, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8001:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7206, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8009:18:37", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "8001:26:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7976:51:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c696420636f6c6c61626f7261746f7273206c656e677468", "id": 7208, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8029:30:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_de2fbffae3f4f1ed598a27d64750bfdd6d759009e12a2c10cadc7ceaef8232cc", "typeString": "literal_string \"invalid collaborators length\""}, "value": "invalid collaborators length"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_de2fbffae3f4f1ed598a27d64750bfdd6d759009e12a2c10cadc7ceaef8232cc", "typeString": "literal_string \"invalid collaborators length\""}], "id": 7202, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7968:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7209, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7968:92:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7210, "nodeType": "ExpressionStatement", "src": "7968:92:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7216, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7212, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7185, "src": "8078:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8089:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "8078:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 7214, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8099:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7215, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8107:14:37", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "8099:22:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8078:43:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e76616c6964206f6273657276657273206c656e677468", "id": 7217, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8123:26:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1cef18bcdd12a026dd9eb03d0204bf23685f9062ba55504df4db41eec5fffe88", "typeString": "literal_string \"invalid observers length\""}, "value": "invalid observers length"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1cef18bcdd12a026dd9eb03d0204bf23685f9062ba55504df4db41eec5fffe88", "typeString": "literal_string \"invalid observers length\""}], "id": 7211, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8070:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7218, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8070:80:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7219, "nodeType": "ExpressionStatement", "src": "8070:80:37"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 7220, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8161:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7222, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8169:14:37", "memberName": "_cancelPackage", "nodeType": "MemberAccess", "referencedDeclaration": 9246, "src": "8161:22:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer)"}}, "id": 7223, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8161:24:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7224, "nodeType": "ExpressionStatement", "src": "8161:24:37"}, {"condition": {"id": 7225, "name": "_workStarted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7187, "src": "8200:12:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7268, "nodeType": "IfStatement", "src": "8196:280:37", "trueBody": {"id": 7267, "nodeType": "Block", "src": "8214:262:37", "statements": [{"body": {"expression": {"arguments": [{"id": 7238, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7177, "src": "8304:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7239, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7179, "src": "8316:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"baseExpression": {"id": 7240, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7182, "src": "8328:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7242, "indexExpression": {"id": 7241, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7227, "src": "8343:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8328:17:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"hexValue": "30", "id": 7243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8347:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 7237, "name": "_payCollaboratorRewards", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8087, "src": "8280:23:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,address,uint256)"}}, "id": 7244, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8280:69:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7245, "nodeType": "ExpressionStatement", "src": "8280:69:37"}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7230, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7227, "src": "8248:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7231, "name": "_collaborators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7182, "src": "8252:14:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8267:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "8252:21:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8248:25:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7246, "initializationExpression": {"assignments": [7227], "declarations": [{"constant": false, "id": 7227, "mutability": "mutable", "name": "i", "nameLocation": "8241:1:37", "nodeType": "VariableDeclaration", "scope": 7246, "src": "8233:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7226, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8233:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7229, "initialValue": {"hexValue": "30", "id": 7228, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8245:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "8233:13:37"}, "loopExpression": {"expression": {"id": 7235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "8275:3:37", "subExpression": {"id": 7234, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7227, "src": "8275:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7236, "nodeType": "ExpressionStatement", "src": "8275:3:37"}, "nodeType": "ForStatement", "src": "8228:121:37"}, {"body": {"expression": {"arguments": [{"id": 7259, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7177, "src": "8427:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7260, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7179, "src": "8439:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"baseExpression": {"id": 7261, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7185, "src": "8451:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7263, "indexExpression": {"id": 7262, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7248, "src": "8462:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8451:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 7258, "name": "_payObserverFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8142, "src": "8411:15:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,bytes32,address)"}}, "id": 7264, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8411:54:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7265, "nodeType": "ExpressionStatement", "src": "8411:54:37"}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7254, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7251, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7248, "src": "8383:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7252, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7185, "src": "8387:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "8398:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "8387:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8383:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7266, "initializationExpression": {"assignments": [7248], "declarations": [{"constant": false, "id": 7248, "mutability": "mutable", "name": "i", "nameLocation": "8376:1:37", "nodeType": "VariableDeclaration", "scope": 7266, "src": "8368:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7247, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8368:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7250, "initialValue": {"hexValue": "30", "id": 7249, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8380:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "8368:13:37"}, "loopExpression": {"expression": {"id": 7256, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "8406:3:37", "subExpression": {"id": 7255, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7248, "src": "8406:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7257, "nodeType": "ExpressionStatement", "src": "8406:3:37"}, "nodeType": "ForStatement", "src": "8363:102:37"}]}}, {"assignments": [7270], "declarations": [{"constant": false, "id": 7270, "mutability": "mutable", "name": "budgetToBeReverted_", "nameLocation": "8494:19:37", "nodeType": "VariableDeclaration", "scope": 7303, "src": "8486:27:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7269, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8486:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7280, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7271, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8517:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7272, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8525:6:37", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9839, "src": "8517:14:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 7273, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8534:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7274, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8542:10:37", "memberName": "budgetPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9843, "src": "8534:18:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8517:35:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 7276, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "8516:37:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"expression": {"id": 7277, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8556:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7278, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8564:5:37", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "8556:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8516:53:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "8486:83:37"}, {"expression": {"id": 7288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 7281, "name": "budgetToBeReverted_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7270, "src": "8579:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7286, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7282, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8603:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7283, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8611:15:37", "memberName": "budgetObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9845, "src": "8603:23:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 7284, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7195, "src": "8629:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 7285, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8637:19:37", "memberName": "budgetObserversPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9847, "src": "8629:27:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8603:53:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 7287, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "8602:55:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "8579:78:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7289, "nodeType": "ExpressionStatement", "src": "8579:78:37"}, {"expression": {"arguments": [{"id": 7294, "name": "budgetToBeReverted_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7270, "src": "8712:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"id": 7290, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "8667:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 7292, "indexExpression": {"id": 7291, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7177, "src": "8679:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8667:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 7293, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "8691:20:37", "memberName": "_revertPackageBudget", "nodeType": "MemberAccess", "referencedDeclaration": 9763, "src": "8667:44:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer,uint256)"}}, "id": 7295, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8667:65:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7296, "nodeType": "ExpressionStatement", "src": "8667:65:37"}, {"eventCall": {"arguments": [{"id": 7298, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7177, "src": "8764:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7299, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7179, "src": "8776:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7300, "name": "budgetToBeReverted_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7270, "src": "8788:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 7297, "name": "CanceledPackage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8676, "src": "8748:15:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,uint256)"}}, "id": 7301, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8748:60:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7302, "nodeType": "EmitStatement", "src": "8743:65:37"}]}, "documentation": {"id": 7175, "nodeType": "StructuredDocumentation", "src": "7354:303:37", "text": " @notice Cancel package in project and release project budget\n @param _projectId Id of the project\n @param _packageId Id of the project\n @param _collaborators address of the collaborators\n @param _observers address of the observers\n Emit {CanceledPackage}"}, "functionSelector": "085f8a9c", "id": 7304, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7190, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7177, "src": "7875:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7191, "kind": "modifierInvocation", "modifierName": {"id": 7189, "name": "onlyInitiator", "nameLocations": ["7861:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "7861:13:37"}, "nodeType": "ModifierInvocation", "src": "7861:25:37"}], "name": "cancelPackage", "nameLocation": "7671:13:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7188, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7177, "mutability": "mutable", "name": "_projectId", "nameLocation": "7702:10:37", "nodeType": "VariableDeclaration", "scope": 7304, "src": "7694:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7176, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7694:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7179, "mutability": "mutable", "name": "_packageId", "nameLocation": "7730:10:37", "nodeType": "VariableDeclaration", "scope": 7304, "src": "7722:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7178, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7722:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7182, "mutability": "mutable", "name": "_collaborators", "nameLocation": "7767:14:37", "nodeType": "VariableDeclaration", "scope": 7304, "src": "7750:31:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7180, "name": "address", "nodeType": "ElementaryTypeName", "src": "7750:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7181, "nodeType": "ArrayTypeName", "src": "7750:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 7185, "mutability": "mutable", "name": "_observers", "nameLocation": "7808:10:37", "nodeType": "VariableDeclaration", "scope": 7304, "src": "7791:27:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7183, "name": "address", "nodeType": "ElementaryTypeName", "src": "7791:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7184, "nodeType": "ArrayTypeName", "src": "7791:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 7187, "mutability": "mutable", "name": "_workStarted", "nameLocation": "7833:12:37", "nodeType": "VariableDeclaration", "scope": 7304, "src": "7828:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7186, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7828:4:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "7684:167:37"}, "returnParameters": {"id": 7192, "nodeType": "ParameterList", "parameters": [], "src": "7887:0:37"}, "scope": 8219, "src": "7662:1153:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8780], "body": {"id": 7359, "nodeType": "Block", "src": "9271:321:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 7328, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7323, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7311, "src": "9289:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 7326, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9314:1:37", "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": 7325, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9306:7:37", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 7324, "name": "address", "nodeType": "ElementaryTypeName", "src": "9306:7:37", "typeDescriptions": {}}}, "id": 7327, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9306:10:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9289:27:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "636f6c6c61626f7261746f7227732061646472657373206973207a65726f", "id": 7329, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9318:32:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0d56864eab7e1a9f464ce2347b12a7792ed60e30b582451e7de914be46d841e8", "typeString": "literal_string \"collaborator's address is zero\""}, "value": "collaborator's address is zero"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_0d56864eab7e1a9f464ce2347b12a7792ed60e30b582451e7de914be46d841e8", "typeString": "literal_string \"collaborator's address is zero\""}], "id": 7322, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9281:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7330, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9281:70:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7331, "nodeType": "ExpressionStatement", "src": "9281:70:37"}, {"expression": {"arguments": [{"id": 7340, "name": "_mgp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7313, "src": "9435:4:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7332, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "9362:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7336, "indexExpression": {"id": 7333, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7307, "src": "9379:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9362:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7337, "indexExpression": {"id": 7334, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7309, "src": "9391:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9362:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7338, "indexExpression": {"id": 7335, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7311, "src": "9403:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9362:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "id": 7339, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9418:16:37", "memberName": "_addCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 8954, "src": "9362:72:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Collaborator_$9885_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Collaborator_$9885_storage_ptr_$", "typeString": "function (struct Collaborator storage pointer,uint256)"}}, "id": 7341, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9362:78:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7342, "nodeType": "ExpressionStatement", "src": "9362:78:37"}, {"expression": {"arguments": [{"id": 7349, "name": "_mgp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7313, "src": "9502:4:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7343, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "9450:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7346, "indexExpression": {"id": 7344, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7307, "src": "9462:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9450:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7347, "indexExpression": {"id": 7345, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7309, "src": "9474:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9450:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7348, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "9486:15:37", "memberName": "_allocateBudget", "nodeType": "MemberAccess", "referencedDeclaration": 9378, "src": "9450:51:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256)"}}, "id": 7350, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9450:57:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7351, "nodeType": "ExpressionStatement", "src": "9450:57:37"}, {"eventCall": {"arguments": [{"id": 7353, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7307, "src": "9541:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7354, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7309, "src": "9553:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7355, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7311, "src": "9565:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 7356, "name": "_mgp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7313, "src": "9580:4:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 7352, "name": "AddedCollaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8644, "src": "9523:17:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,address,uint256)"}}, "id": 7357, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9523:62:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7358, "nodeType": "EmitStatement", "src": "9518:67:37"}]}, "documentation": {"id": 7305, "nodeType": "StructuredDocumentation", "src": "8821:256:37", "text": " @notice Adds collaborator to package\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator collaborators' addresses\n @param _mgp MGP amount\n Emit {AddedCollaborator}"}, "functionSelector": "ec104ff1", "id": 7360, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7316, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7307, "src": "9245:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7317, "kind": "modifierInvocation", "modifierName": {"id": 7315, "name": "onlyInitiator", "nameLocations": ["9231:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "9231:13:37"}, "nodeType": "ModifierInvocation", "src": "9231:25:37"}, {"arguments": [{"id": 7319, "name": "_mgp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7313, "src": "9265:4:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 7320, "kind": "modifierInvocation", "modifierName": {"id": 7318, "name": "nonZero", "nameLocations": ["9257:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6739, "src": "9257:7:37"}, "nodeType": "ModifierInvocation", "src": "9257:13:37"}], "name": "addCollaborator", "nameLocation": "9091:15:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7314, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7307, "mutability": "mutable", "name": "_projectId", "nameLocation": "9124:10:37", "nodeType": "VariableDeclaration", "scope": 7360, "src": "9116:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7306, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9116:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7309, "mutability": "mutable", "name": "_packageId", "nameLocation": "9152:10:37", "nodeType": "VariableDeclaration", "scope": 7360, "src": "9144:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7308, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9144:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7311, "mutability": "mutable", "name": "_collaborator", "nameLocation": "9180:13:37", "nodeType": "VariableDeclaration", "scope": 7360, "src": "9172:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7310, "name": "address", "nodeType": "ElementaryTypeName", "src": "9172:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 7313, "mutability": "mutable", "name": "_mgp", "nameLocation": "9211:4:37", "nodeType": "VariableDeclaration", "scope": 7360, "src": "9203:12:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7312, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9203:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "9106:115:37"}, "returnParameters": {"id": 7321, "nodeType": "ParameterList", "parameters": [], "src": "9271:0:37"}, "scope": 8219, "src": "9082:510:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8790], "body": {"id": 7407, "nodeType": "Block", "src": "10038:307:37", "statements": [{"expression": {"id": 7381, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7373, "name": "approvedUser", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6707, "src": "10048:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => bool)))"}}, "id": 7377, "indexExpression": {"id": 7374, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7363, "src": "10061:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10048:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))"}}, "id": 7378, "indexExpression": {"id": 7375, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7365, "src": "10073:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10048:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 7379, "indexExpression": {"id": 7376, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7367, "src": "10085:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10048:51:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 7380, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "10102:4:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "10048:58:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7382, "nodeType": "ExpressionStatement", "src": "10048:58:37"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7383, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "10117:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7387, "indexExpression": {"id": 7384, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7363, "src": "10134:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10117:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7388, "indexExpression": {"id": 7385, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7365, "src": "10146:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10117:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7389, "indexExpression": {"id": 7386, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7367, "src": "10158:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10117:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "id": 7390, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10173:20:37", "memberName": "_approveCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 8980, "src": "10117:76:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Collaborator_$9885_storage_ptr_$returns$__$bound_to$_t_struct$_Collaborator_$9885_storage_ptr_$", "typeString": "function (struct Collaborator storage pointer)"}}, "id": 7391, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10117:78:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7392, "nodeType": "ExpressionStatement", "src": "10117:78:37"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"id": 7393, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "10205:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7396, "indexExpression": {"id": 7394, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7363, "src": "10217:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10205:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7397, "indexExpression": {"id": 7395, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7365, "src": "10229:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10205:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7398, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "10241:20:37", "memberName": "_approveCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 9394, "src": "10205:56:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer)"}}, "id": 7399, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10205:58:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7400, "nodeType": "ExpressionStatement", "src": "10205:58:37"}, {"eventCall": {"arguments": [{"id": 7402, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7363, "src": "10300:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7403, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7365, "src": "10312:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7404, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7367, "src": "10324:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 7401, "name": "ApprovedCollaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8652, "src": "10279:20:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,bytes32,address)"}}, "id": 7405, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10279:59:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7406, "nodeType": "EmitStatement", "src": "10274:64:37"}]}, "documentation": {"id": 7361, "nodeType": "StructuredDocumentation", "src": "9598:278:37", "text": " @notice Approves collaborator's MGP or deletes collaborator (should be called by admin)\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator collaborator's address\n Emit {ApprovedCollaborator}"}, "functionSelector": "dcce114e", "id": 7408, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7370, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7363, "src": "10026:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7371, "kind": "modifierInvocation", "modifierName": {"id": 7369, "name": "onlyInitiator", "nameLocations": ["10012:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "10012:13:37"}, "nodeType": "ModifierInvocation", "src": "10012:25:37"}], "name": "approveCollaborator", "nameLocation": "9890:19:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7368, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7363, "mutability": "mutable", "name": "_projectId", "nameLocation": "9927:10:37", "nodeType": "VariableDeclaration", "scope": 7408, "src": "9919:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7362, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9919:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7365, "mutability": "mutable", "name": "_packageId", "nameLocation": "9955:10:37", "nodeType": "VariableDeclaration", "scope": 7408, "src": "9947:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7364, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9947:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7367, "mutability": "mutable", "name": "_collaborator", "nameLocation": "9983:13:37", "nodeType": "VariableDeclaration", "scope": 7408, "src": "9975:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7366, "name": "address", "nodeType": "ElementaryTypeName", "src": "9975:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "9909:93:37"}, "returnParameters": {"id": 7372, "nodeType": "ParameterList", "parameters": [], "src": "10038:0:37"}, "scope": 8219, "src": "9881:464:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8802], "body": {"id": 7478, "nodeType": "Block", "src": "10881:549:37", "statements": [{"expression": {"arguments": [{"id": 7431, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "10899:52:37", "subExpression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7424, "name": "approvedUser", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6707, "src": "10900:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => bool)))"}}, "id": 7426, "indexExpression": {"id": 7425, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7411, "src": "10913:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10900:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))"}}, "id": 7428, "indexExpression": {"id": 7427, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7413, "src": "10925:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10900:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 7430, "indexExpression": {"id": 7429, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7415, "src": "10937:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10900:51:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "636f6c6c61626f7261746f7220617070726f76656420616c726561647921", "id": 7432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10953:32:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_f04fffb5edeeb78c7b31b862beaa963147b1688bbce51b90f9d56f719569440c", "typeString": "literal_string \"collaborator approved already!\""}, "value": "collaborator approved already!"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_f04fffb5edeeb78c7b31b862beaa963147b1688bbce51b90f9d56f719569440c", "typeString": "literal_string \"collaborator approved already!\""}], "id": 7423, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10891:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7433, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10891:95:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7434, "nodeType": "ExpressionStatement", "src": "10891:95:37"}, {"assignments": [7437], "declarations": [{"constant": false, "id": 7437, "mutability": "mutable", "name": "collaborator", "nameLocation": "11018:12:37", "nodeType": "VariableDeclaration", "scope": 7478, "src": "10997:33:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 7436, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7435, "name": "Collaborator", "nameLocations": ["10997:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "10997:12:37"}, "referencedDeclaration": 9885, "src": "10997:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "id": 7445, "initialValue": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7438, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "11033:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7440, "indexExpression": {"id": 7439, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7411, "src": "11050:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11033:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7442, "indexExpression": {"id": 7441, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7413, "src": "11062:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11033:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7444, "indexExpression": {"id": 7443, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7415, "src": "11074:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11033:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "10997:91:37"}, {"condition": {"id": 7446, "name": "_shouldPayMgp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7417, "src": "11102:13:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7455, "nodeType": "IfStatement", "src": "11098:109:37", "trueBody": {"id": 7454, "nodeType": "Block", "src": "11117:90:37", "statements": [{"expression": {"arguments": [{"id": 7448, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7411, "src": "11155:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7449, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7413, "src": "11167:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7450, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7415, "src": "11179:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"hexValue": "30", "id": 7451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11194:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}], "id": 7447, "name": "_payCollaboratorRewards", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8087, "src": "11131:23:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,address,uint256)"}}, "id": 7452, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11131:65:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7453, "nodeType": "ExpressionStatement", "src": "11131:65:37"}]}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 7456, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7437, "src": "11217:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 7458, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11230:19:37", "memberName": "_removeCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 8996, "src": "11217:32:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Collaborator_$9885_storage_ptr_$returns$__$bound_to$_t_struct$_Collaborator_$9885_storage_ptr_$", "typeString": "function (struct Collaborator storage pointer)"}}, "id": 7459, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11217:34:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7460, "nodeType": "ExpressionStatement", "src": "11217:34:37"}, {"expression": {"arguments": [{"id": 7467, "name": "_shouldPayMgp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7417, "src": "11317:13:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"expression": {"id": 7468, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7437, "src": "11332:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 7469, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11345:3:37", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "11332:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7461, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "11261:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7464, "indexExpression": {"id": 7462, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7411, "src": "11273:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11261:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7465, "indexExpression": {"id": 7463, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7413, "src": "11285:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11261:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7466, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11297:19:37", "memberName": "_removeCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 9424, "src": "11261:55:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_bool_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,bool,uint256)"}}, "id": 7470, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11261:88:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7471, "nodeType": "ExpressionStatement", "src": "11261:88:37"}, {"eventCall": {"arguments": [{"id": 7473, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7411, "src": "11385:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7474, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7413, "src": "11397:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7475, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7415, "src": "11409:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 7472, "name": "RemovedCollaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8660, "src": "11365:19:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,bytes32,address)"}}, "id": 7476, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11365:58:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7477, "nodeType": "EmitStatement", "src": "11360:63:37"}]}, "documentation": {"id": 7409, "nodeType": "StructuredDocumentation", "src": "10351:341:37", "text": " @notice Approves collaborator's MGP or deletes collaborator (should be called by admin)\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator collaborator's address\n @param _shouldPayMgp Should pay MGP for the collaborator\n Emit {RemovedCollaborator}"}, "functionSelector": "0eae9d88", "id": 7479, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7420, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7411, "src": "10869:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7421, "kind": "modifierInvocation", "modifierName": {"id": 7419, "name": "onlyInitiator", "nameLocations": ["10855:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "10855:13:37"}, "nodeType": "ModifierInvocation", "src": "10855:25:37"}], "name": "removeCollaborator", "nameLocation": "10706:18:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7418, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7411, "mutability": "mutable", "name": "_projectId", "nameLocation": "10742:10:37", "nodeType": "VariableDeclaration", "scope": 7479, "src": "10734:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7410, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10734:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7413, "mutability": "mutable", "name": "_packageId", "nameLocation": "10770:10:37", "nodeType": "VariableDeclaration", "scope": 7479, "src": "10762:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7412, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10762:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7415, "mutability": "mutable", "name": "_collaborator", "nameLocation": "10798:13:37", "nodeType": "VariableDeclaration", "scope": 7479, "src": "10790:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7414, "name": "address", "nodeType": "ElementaryTypeName", "src": "10790:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 7417, "mutability": "mutable", "name": "_shouldPayMgp", "nameLocation": "10826:13:37", "nodeType": "VariableDeclaration", "scope": 7479, "src": "10821:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 7416, "name": "bool", "nodeType": "ElementaryTypeName", "src": "10821:4:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "10724:121:37"}, "returnParameters": {"id": 7422, "nodeType": "ParameterList", "parameters": [], "src": "10881:0:37"}, "scope": 8219, "src": "10697:733:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8810], "body": {"id": 7535, "nodeType": "Block", "src": "11681:419:37", "statements": [{"expression": {"arguments": [{"id": 7496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "11699:51:37", "subExpression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7488, "name": "approvedUser", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6707, "src": "11700:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => bool)))"}}, "id": 7490, "indexExpression": {"id": 7489, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7482, "src": "11713:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11700:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))"}}, "id": 7492, "indexExpression": {"id": 7491, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7484, "src": "11725:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11700:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 7495, "indexExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 7493, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "11737:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 7494, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11737:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11700:50:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "636f6c6c61626f7261746f7220617070726f76656420616c726561647921", "id": 7497, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11752:32:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_f04fffb5edeeb78c7b31b862beaa963147b1688bbce51b90f9d56f719569440c", "typeString": "literal_string \"collaborator approved already!\""}, "value": "collaborator approved already!"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_f04fffb5edeeb78c7b31b862beaa963147b1688bbce51b90f9d56f719569440c", "typeString": "literal_string \"collaborator approved already!\""}], "id": 7487, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11691:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7498, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11691:94:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7499, "nodeType": "ExpressionStatement", "src": "11691:94:37"}, {"assignments": [7502], "declarations": [{"constant": false, "id": 7502, "mutability": "mutable", "name": "collaborator", "nameLocation": "11817:12:37", "nodeType": "VariableDeclaration", "scope": 7535, "src": "11796:33:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 7501, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7500, "name": "Collaborator", "nameLocations": ["11796:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "11796:12:37"}, "referencedDeclaration": 9885, "src": "11796:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "id": 7511, "initialValue": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7503, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "11832:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7505, "indexExpression": {"id": 7504, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7482, "src": "11849:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11832:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7507, "indexExpression": {"id": 7506, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7484, "src": "11861:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11832:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7510, "indexExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 7508, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "11873:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 7509, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11873:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11832:54:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "11796:90:37"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 7512, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7502, "src": "11896:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 7514, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11909:19:37", "memberName": "_removeCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 8996, "src": "11896:32:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Collaborator_$9885_storage_ptr_$returns$__$bound_to$_t_struct$_Collaborator_$9885_storage_ptr_$", "typeString": "function (struct Collaborator storage pointer)"}}, "id": 7515, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11896:34:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7516, "nodeType": "ExpressionStatement", "src": "11896:34:37"}, {"expression": {"arguments": [{"hexValue": "66616c7365", "id": 7523, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "11996:5:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"expression": {"id": 7524, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7502, "src": "12003:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 7525, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "12016:3:37", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "12003:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7517, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "11940:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7520, "indexExpression": {"id": 7518, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7482, "src": "11952:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11940:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7521, "indexExpression": {"id": 7519, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7484, "src": "11964:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11940:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7522, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "11976:19:37", "memberName": "_removeCollaborator", "nodeType": "MemberAccess", "referencedDeclaration": 9424, "src": "11940:55:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_bool_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,bool,uint256)"}}, "id": 7526, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11940:80:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7527, "nodeType": "ExpressionStatement", "src": "11940:80:37"}, {"eventCall": {"arguments": [{"id": 7529, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7482, "src": "12056:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7530, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7484, "src": "12068:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"arguments": [], "expression": {"argumentTypes": [], "id": 7531, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "12080:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 7532, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12080:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 7528, "name": "RemovedCollaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8660, "src": "12036:19:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,bytes32,address)"}}, "id": 7533, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12036:57:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7534, "nodeType": "EmitStatement", "src": "12031:62:37"}]}, "documentation": {"id": 7480, "nodeType": "StructuredDocumentation", "src": "11436:171:37", "text": " @notice Self remove collaborator\n @param _projectId Id of the project\n @param _packageId Id of the package\n Emit {RemovedCollaborator}"}, "functionSelector": "03a1fc22", "id": 7536, "implemented": true, "kind": "function", "modifiers": [], "name": "selfRemove", "nameLocation": "11621:10:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7485, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7482, "mutability": "mutable", "name": "_projectId", "nameLocation": "11640:10:37", "nodeType": "VariableDeclaration", "scope": 7536, "src": "11632:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7481, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11632:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7484, "mutability": "mutable", "name": "_packageId", "nameLocation": "11660:10:37", "nodeType": "VariableDeclaration", "scope": 7536, "src": "11652:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7483, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11652:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "11631:40:37"}, "returnParameters": {"id": 7486, "nodeType": "ParameterList", "parameters": [], "src": "11681:0:37"}, "scope": 8219, "src": "11612:488:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 7607, "nodeType": "Block", "src": "12236:444:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7547, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7543, "src": "12254:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12265:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "12254:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7549, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12274:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "12254:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "656d707479206f627365727665727320617272617921", "id": 7551, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "12277:24:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_3455c48edf0cadfcbb54fa5d64f69c9a0ba6371f9887114ced22a8e237385a55", "typeString": "literal_string \"empty observers array!\""}, "value": "empty observers array!"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_3455c48edf0cadfcbb54fa5d64f69c9a0ba6371f9887114ced22a8e237385a55", "typeString": "literal_string \"empty observers array!\""}], "id": 7546, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "12246:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7552, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12246:56:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7553, "nodeType": "ExpressionStatement", "src": "12246:56:37"}, {"body": {"id": 7589, "nodeType": "Block", "src": "12361:169:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 7573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 7566, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7543, "src": "12383:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7568, "indexExpression": {"id": 7567, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7555, "src": "12394:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12383:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 7571, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12408:1:37", "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": 7570, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "12400:7:37", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 7569, "name": "address", "nodeType": "ElementaryTypeName", "src": "12400:7:37", "typeDescriptions": {}}}, "id": 7572, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12400:10:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "12383:27:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "7a65726f206f627365727665722773206164647265737321", "id": 7574, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "12412:26:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_ac7178626af83d7667a919a8511949a621a2a6d80c3a578036b7c2e2e1c15a3a", "typeString": "literal_string \"zero observer's address!\""}, "value": "zero observer's address!"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_ac7178626af83d7667a919a8511949a621a2a6d80c3a578036b7c2e2e1c15a3a", "typeString": "literal_string \"zero observer's address!\""}], "id": 7565, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "12375:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7575, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12375:64:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7576, "nodeType": "ExpressionStatement", "src": "12375:64:37"}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7577, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "12453:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 7583, "indexExpression": {"id": 7578, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7538, "src": "12466:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12453:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 7584, "indexExpression": {"id": 7579, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7540, "src": "12478:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12453:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 7585, "indexExpression": {"baseExpression": {"id": 7580, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7543, "src": "12490:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7582, "indexExpression": {"id": 7581, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7555, "src": "12501:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12490:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12453:51:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "id": 7586, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "12505:12:37", "memberName": "_addObserver", "nodeType": "MemberAccess", "referencedDeclaration": 9090, "src": "12453:64:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Observer_$9892_storage_ptr_$returns$__$bound_to$_t_struct$_Observer_$9892_storage_ptr_$", "typeString": "function (struct Observer storage pointer)"}}, "id": 7587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12453:66:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7588, "nodeType": "ExpressionStatement", "src": "12453:66:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7558, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7555, "src": "12333:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7559, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7543, "src": "12337:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12348:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "12337:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12333:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7590, "initializationExpression": {"assignments": [7555], "declarations": [{"constant": false, "id": 7555, "mutability": "mutable", "name": "i", "nameLocation": "12326:1:37", "nodeType": "VariableDeclaration", "scope": 7590, "src": "12318:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7554, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12318:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7557, "initialValue": {"hexValue": "30", "id": 7556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12330:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "12318:13:37"}, "loopExpression": {"expression": {"id": 7563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "12356:3:37", "subExpression": {"id": 7562, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7555, "src": "12356:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7564, "nodeType": "ExpressionStatement", "src": "12356:3:37"}, "nodeType": "ForStatement", "src": "12313:217:37"}, {"expression": {"arguments": [{"expression": {"id": 7597, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7543, "src": "12589:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7598, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "12600:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "12589:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7591, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "12539:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7594, "indexExpression": {"id": 7592, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7538, "src": "12551:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12539:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7595, "indexExpression": {"id": 7593, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7540, "src": "12563:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12539:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7596, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "12575:13:37", "memberName": "_addObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9299, "src": "12539:49:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256)"}}, "id": 7599, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12539:68:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7600, "nodeType": "ExpressionStatement", "src": "12539:68:37"}, {"eventCall": {"arguments": [{"id": 7602, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7538, "src": "12638:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7603, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7540, "src": "12650:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7604, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7543, "src": "12662:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}], "id": 7601, "name": "AddedObservers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8625, "src": "12623:14:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes32,address[] memory)"}}, "id": 7605, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12623:50:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7606, "nodeType": "EmitStatement", "src": "12618:55:37"}]}, "id": 7608, "implemented": true, "kind": "function", "modifiers": [], "name": "_addObservers", "nameLocation": "12115:13:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7544, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7538, "mutability": "mutable", "name": "_projectId", "nameLocation": "12146:10:37", "nodeType": "VariableDeclaration", "scope": 7608, "src": "12138:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7537, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12138:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7540, "mutability": "mutable", "name": "_packageId", "nameLocation": "12174:10:37", "nodeType": "VariableDeclaration", "scope": 7608, "src": "12166:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7539, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12166:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7543, "mutability": "mutable", "name": "_observers", "nameLocation": "12211:10:37", "nodeType": "VariableDeclaration", "scope": 7608, "src": "12194:27:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7541, "name": "address", "nodeType": "ElementaryTypeName", "src": "12194:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7542, "nodeType": "ArrayTypeName", "src": "12194:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "12128:99:37"}, "returnParameters": {"id": 7545, "nodeType": "ParameterList", "parameters": [], "src": "12236:0:37"}, "scope": 8219, "src": "12106:574:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"baseFunctions": [8821], "body": {"id": 7628, "nodeType": "Block", "src": "13060:66:37", "statements": [{"expression": {"arguments": [{"id": 7623, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7611, "src": "13084:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7624, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7613, "src": "13096:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7625, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7616, "src": "13108:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}], "id": 7622, "name": "_addObservers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7608, "src": "13070:13:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes32,address[] memory)"}}, "id": 7626, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13070:49:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7627, "nodeType": "ExpressionStatement", "src": "13070:49:37"}]}, "documentation": {"id": 7609, "nodeType": "StructuredDocumentation", "src": "12686:213:37", "text": " @notice Adds observer to packages\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _observers observers' addresses\n Emit {AddedObservers}"}, "functionSelector": "be06555e", "id": 7629, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7619, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7611, "src": "13048:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7620, "kind": "modifierInvocation", "modifierName": {"id": 7618, "name": "onlyInitiator", "nameLocations": ["13034:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "13034:13:37"}, "nodeType": "ModifierInvocation", "src": "13034:25:37"}], "name": "addObservers", "nameLocation": "12913:12:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7617, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7611, "mutability": "mutable", "name": "_projectId", "nameLocation": "12943:10:37", "nodeType": "VariableDeclaration", "scope": 7629, "src": "12935:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7610, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12935:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7613, "mutability": "mutable", "name": "_packageId", "nameLocation": "12971:10:37", "nodeType": "VariableDeclaration", "scope": 7629, "src": "12963:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7612, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12963:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7616, "mutability": "mutable", "name": "_observers", "nameLocation": "13008:10:37", "nodeType": "VariableDeclaration", "scope": 7629, "src": "12991:27:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7614, "name": "address", "nodeType": "ElementaryTypeName", "src": "12991:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7615, "nodeType": "ArrayTypeName", "src": "12991:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "12925:99:37"}, "returnParameters": {"id": 7621, "nodeType": "ParameterList", "parameters": [], "src": "13060:0:37"}, "scope": 8219, "src": "12904:222:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8832], "body": {"id": 7692, "nodeType": "Block", "src": "13509:374:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7644, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7637, "src": "13527:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13538:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "13527:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7646, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13547:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "13527:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "656d707479206f627365727665727320617272617921", "id": 7648, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "13550:24:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_3455c48edf0cadfcbb54fa5d64f69c9a0ba6371f9887114ced22a8e237385a55", "typeString": "literal_string \"empty observers array!\""}, "value": "empty observers array!"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_3455c48edf0cadfcbb54fa5d64f69c9a0ba6371f9887114ced22a8e237385a55", "typeString": "literal_string \"empty observers array!\""}], "id": 7643, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "13519:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13519:56:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7650, "nodeType": "ExpressionStatement", "src": "13519:56:37"}, {"body": {"id": 7674, "nodeType": "Block", "src": "13634:94:37", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7662, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "13648:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 7668, "indexExpression": {"id": 7663, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7632, "src": "13661:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13648:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 7669, "indexExpression": {"id": 7664, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7634, "src": "13673:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13648:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 7670, "indexExpression": {"baseExpression": {"id": 7665, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7637, "src": "13685:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7667, "indexExpression": {"id": 7666, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7652, "src": "13696:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13685:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13648:51:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "id": 7671, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "13700:15:37", "memberName": "_removeObserver", "nodeType": "MemberAccess", "referencedDeclaration": 9107, "src": "13648:67:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Observer_$9892_storage_ptr_$returns$__$bound_to$_t_struct$_Observer_$9892_storage_ptr_$", "typeString": "function (struct Observer storage pointer)"}}, "id": 7672, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13648:69:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7673, "nodeType": "ExpressionStatement", "src": "13648:69:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7655, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7652, "src": "13606:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7656, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7637, "src": "13610:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13621:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "13610:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "13606:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7675, "initializationExpression": {"assignments": [7652], "declarations": [{"constant": false, "id": 7652, "mutability": "mutable", "name": "i", "nameLocation": "13599:1:37", "nodeType": "VariableDeclaration", "scope": 7675, "src": "13591:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7651, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13591:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7654, "initialValue": {"hexValue": "30", "id": 7653, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13603:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "13591:13:37"}, "loopExpression": {"expression": {"id": 7660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "13629:3:37", "subExpression": {"id": 7659, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7652, "src": "13629:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7661, "nodeType": "ExpressionStatement", "src": "13629:3:37"}, "nodeType": "ForStatement", "src": "13586:142:37"}, {"expression": {"arguments": [{"expression": {"id": 7682, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7637, "src": "13790:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "13801:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "13790:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7676, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "13737:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7679, "indexExpression": {"id": 7677, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7632, "src": "13749:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13737:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7680, "indexExpression": {"id": 7678, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7634, "src": "13761:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13737:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7681, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "13773:16:37", "memberName": "_removeObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9334, "src": "13737:52:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256)"}}, "id": 7684, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13737:71:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7685, "nodeType": "ExpressionStatement", "src": "13737:71:37"}, {"eventCall": {"arguments": [{"id": 7687, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7632, "src": "13841:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7688, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7634, "src": "13853:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7689, "name": "_observers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7637, "src": "13865:10:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}], "id": 7686, "name": "RemovedObservers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8634, "src": "13824:16:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes32,address[] memory)"}}, "id": 7690, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13824:52:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7691, "nodeType": "EmitStatement", "src": "13819:57:37"}]}, "documentation": {"id": 7630, "nodeType": "StructuredDocumentation", "src": "13132:213:37", "text": " @notice Removes observer from packages\n @param _projectId Id of the project\n @param _packageId package id\n @param _observers observers' addresses\n Emit {RemovedObservers}"}, "functionSelector": "3a7efc84", "id": 7693, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7640, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7632, "src": "13497:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7641, "kind": "modifierInvocation", "modifierName": {"id": 7639, "name": "onlyInitiator", "nameLocations": ["13483:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "13483:13:37"}, "nodeType": "ModifierInvocation", "src": "13483:25:37"}], "name": "removeObservers", "nameLocation": "13359:15:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7638, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7632, "mutability": "mutable", "name": "_projectId", "nameLocation": "13392:10:37", "nodeType": "VariableDeclaration", "scope": 7693, "src": "13384:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7631, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13384:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7634, "mutability": "mutable", "name": "_packageId", "nameLocation": "13420:10:37", "nodeType": "VariableDeclaration", "scope": 7693, "src": "13412:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7633, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13412:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7637, "mutability": "mutable", "name": "_observers", "nameLocation": "13457:10:37", "nodeType": "VariableDeclaration", "scope": 7693, "src": "13440:27:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7635, "name": "address", "nodeType": "ElementaryTypeName", "src": "13440:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7636, "nodeType": "ArrayTypeName", "src": "13440:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "13374:99:37"}, "returnParameters": {"id": 7642, "nodeType": "ParameterList", "parameters": [], "src": "13509:0:37"}, "scope": 8219, "src": "13350:533:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8846], "body": {"id": 7816, "nodeType": "Block", "src": "14090:858:37", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 7718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7710, "name": "_observersIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7700, "src": "14108:12:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7711, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14121:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14108:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7712, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14130:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "14108:23:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7717, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7714, "name": "_observersOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7703, "src": "14135:13:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7715, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14149:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14135:20:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7716, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14158:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "14135:24:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "14108:51:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "656d707479206f62736572766572732061727261797321", "id": 7719, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "14161:25:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_77cc571188b2beee7667919d41671683f04090d89a0e5b4ad077c1de65e85635", "typeString": "literal_string \"empty observers arrays!\""}, "value": "empty observers arrays!"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_77cc571188b2beee7667919d41671683f04090d89a0e5b4ad077c1de65e85635", "typeString": "literal_string \"empty observers arrays!\""}], "id": 7709, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "14100:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 7720, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14100:87:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7721, "nodeType": "ExpressionStatement", "src": "14100:87:37"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7722, "name": "_observersIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7700, "src": "14202:12:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14215:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14202:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7724, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14224:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "14202:23:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7768, "nodeType": "IfStatement", "src": "14198:360:37", "trueBody": {"id": 7767, "nodeType": "Block", "src": "14227:331:37", "statements": [{"body": {"id": 7749, "nodeType": "Block", "src": "14291:101:37", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7737, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "14309:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 7743, "indexExpression": {"id": 7738, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14322:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14309:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 7744, "indexExpression": {"id": 7739, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7697, "src": "14334:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14309:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 7745, "indexExpression": {"baseExpression": {"id": 7740, "name": "_observersIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7700, "src": "14346:12:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7742, "indexExpression": {"id": 7741, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7727, "src": "14359:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14346:15:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14309:53:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "id": 7746, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "14363:12:37", "memberName": "_addObserver", "nodeType": "MemberAccess", "referencedDeclaration": 9090, "src": "14309:66:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Observer_$9892_storage_ptr_$returns$__$bound_to$_t_struct$_Observer_$9892_storage_ptr_$", "typeString": "function (struct Observer storage pointer)"}}, "id": 7747, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14309:68:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7748, "nodeType": "ExpressionStatement", "src": "14309:68:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7730, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7727, "src": "14261:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7731, "name": "_observersIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7700, "src": "14265:12:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7732, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14278:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14265:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "14261:23:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7750, "initializationExpression": {"assignments": [7727], "declarations": [{"constant": false, "id": 7727, "mutability": "mutable", "name": "i", "nameLocation": "14254:1:37", "nodeType": "VariableDeclaration", "scope": 7750, "src": "14246:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7726, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14246:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7729, "initialValue": {"hexValue": "30", "id": 7728, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14258:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "14246:13:37"}, "loopExpression": {"expression": {"id": 7735, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "14286:3:37", "subExpression": {"id": 7734, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7727, "src": "14286:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7736, "nodeType": "ExpressionStatement", "src": "14286:3:37"}, "nodeType": "ForStatement", "src": "14241:151:37"}, {"expression": {"arguments": [{"expression": {"id": 7757, "name": "_observersIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7700, "src": "14455:12:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14468:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14455:19:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7751, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "14405:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7754, "indexExpression": {"id": 7752, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14417:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14405:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7755, "indexExpression": {"id": 7753, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7697, "src": "14429:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14405:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7756, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "14441:13:37", "memberName": "_addObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9299, "src": "14405:49:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256)"}}, "id": 7759, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14405:70:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7760, "nodeType": "ExpressionStatement", "src": "14405:70:37"}, {"eventCall": {"arguments": [{"id": 7762, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14510:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7763, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7697, "src": "14522:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7764, "name": "_observersIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7700, "src": "14534:12:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}], "id": 7761, "name": "AddedObservers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8625, "src": "14495:14:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes32,address[] memory)"}}, "id": 7765, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14495:52:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7766, "nodeType": "EmitStatement", "src": "14490:57:37"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7772, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7769, "name": "_observersOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7703, "src": "14572:13:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7770, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14586:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14572:20:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7771, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14595:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "14572:24:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7815, "nodeType": "IfStatement", "src": "14568:374:37", "trueBody": {"id": 7814, "nodeType": "Block", "src": "14598:344:37", "statements": [{"body": {"id": 7796, "nodeType": "Block", "src": "14663:105:37", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7784, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "14681:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 7790, "indexExpression": {"id": 7785, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14694:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14681:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 7791, "indexExpression": {"id": 7786, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7697, "src": "14706:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14681:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 7792, "indexExpression": {"baseExpression": {"id": 7787, "name": "_observersOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7703, "src": "14718:13:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7789, "indexExpression": {"id": 7788, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7774, "src": "14732:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14718:16:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14681:54:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "id": 7793, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "14736:15:37", "memberName": "_removeObserver", "nodeType": "MemberAccess", "referencedDeclaration": 9107, "src": "14681:70:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Observer_$9892_storage_ptr_$returns$__$bound_to$_t_struct$_Observer_$9892_storage_ptr_$", "typeString": "function (struct Observer storage pointer)"}}, "id": 7794, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14681:72:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7795, "nodeType": "ExpressionStatement", "src": "14681:72:37"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 7777, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7774, "src": "14632:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 7778, "name": "_observersOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7703, "src": "14636:13:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14650:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14636:20:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "14632:24:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7797, "initializationExpression": {"assignments": [7774], "declarations": [{"constant": false, "id": 7774, "mutability": "mutable", "name": "i", "nameLocation": "14625:1:37", "nodeType": "VariableDeclaration", "scope": 7797, "src": "14617:9:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7773, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14617:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 7776, "initialValue": {"hexValue": "30", "id": 7775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14629:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "14617:13:37"}, "loopExpression": {"expression": {"id": 7782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "14658:3:37", "subExpression": {"id": 7781, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7774, "src": "14658:1:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 7783, "nodeType": "ExpressionStatement", "src": "14658:3:37"}, "nodeType": "ForStatement", "src": "14612:156:37"}, {"expression": {"arguments": [{"expression": {"id": 7804, "name": "_observersOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7703, "src": "14835:13:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 7805, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "14849:6:37", "memberName": "length", "nodeType": "MemberAccess", "src": "14835:20:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 7798, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "14782:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7801, "indexExpression": {"id": 7799, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14794:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14782:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7802, "indexExpression": {"id": 7800, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7697, "src": "14806:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "14782:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7803, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "14818:16:37", "memberName": "_removeObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9334, "src": "14782:52:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256)"}}, "id": 7806, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14782:74:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7807, "nodeType": "ExpressionStatement", "src": "14782:74:37"}, {"eventCall": {"arguments": [{"id": 7809, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14893:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7810, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7697, "src": "14905:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 7811, "name": "_observersOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7703, "src": "14917:13:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}], "id": 7808, "name": "RemovedObservers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8634, "src": "14876:16:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,bytes32,address[] memory)"}}, "id": 7812, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14876:55:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 7813, "nodeType": "EmitStatement", "src": "14871:60:37"}]}}]}, "functionSelector": "71af530b", "id": 7817, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 7706, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7695, "src": "14078:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "id": 7707, "kind": "modifierInvocation", "modifierName": {"id": 7705, "name": "onlyInitiator", "nameLocations": ["14064:13:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 6757, "src": "14064:13:37"}, "nodeType": "ModifierInvocation", "src": "14064:25:37"}], "name": "updateObservers", "nameLocation": "13898:15:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7704, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7695, "mutability": "mutable", "name": "_projectId", "nameLocation": "13931:10:37", "nodeType": "VariableDeclaration", "scope": 7817, "src": "13923:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7694, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13923:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7697, "mutability": "mutable", "name": "_packageId", "nameLocation": "13959:10:37", "nodeType": "VariableDeclaration", "scope": 7817, "src": "13951:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7696, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "13951:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7700, "mutability": "mutable", "name": "_observersIn", "nameLocation": "13996:12:37", "nodeType": "VariableDeclaration", "scope": 7817, "src": "13979:29:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7698, "name": "address", "nodeType": "ElementaryTypeName", "src": "13979:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7699, "nodeType": "ArrayTypeName", "src": "13979:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 7703, "mutability": "mutable", "name": "_observersOut", "nameLocation": "14035:13:37", "nodeType": "VariableDeclaration", "scope": 7817, "src": "14018:30:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 7701, "name": "address", "nodeType": "ElementaryTypeName", "src": "14018:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 7702, "nodeType": "ArrayTypeName", "src": "14018:9:37", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "13913:141:37"}, "returnParameters": {"id": 7708, "nodeType": "ParameterList", "parameters": [], "src": "14090:0:37"}, "scope": 8219, "src": "13889:1059:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 7830, "nodeType": "Block", "src": "15173:47:37", "statements": [{"expression": {"baseExpression": {"id": 7826, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "15190:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 7828, "indexExpression": {"id": 7827, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7820, "src": "15202:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15190:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "functionReturnParameters": 7825, "id": 7829, "nodeType": "Return", "src": "15183:30:37"}]}, "documentation": {"id": 7818, "nodeType": "StructuredDocumentation", "src": "14996:89:37", "text": " @notice Get project details\n @param _projectId Id of the project"}, "functionSelector": "23d683e7", "id": 7831, "implemented": true, "kind": "function", "modifiers": [], "name": "getProjectData", "nameLocation": "15099:14:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7821, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7820, "mutability": "mutable", "name": "_projectId", "nameLocation": "15122:10:37", "nodeType": "VariableDeclaration", "scope": 7831, "src": "15114:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7819, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "15114:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "15113:20:37"}, "returnParameters": {"id": 7825, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7824, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7831, "src": "15157:14:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_memory_ptr", "typeString": "struct Project"}, "typeName": {"id": 7823, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7822, "name": "Project", "nameLocations": ["15157:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "15157:7:37"}, "referencedDeclaration": 9837, "src": "15157:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}], "src": "15156:16:37"}, "scope": 8219, "src": "15090:130:37", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"body": {"id": 7849, "nodeType": "Block", "src": "15466:61:37", "statements": [{"expression": {"components": [{"baseExpression": {"baseExpression": {"id": 7842, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "15484:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7844, "indexExpression": {"id": 7843, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7834, "src": "15496:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15484:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7846, "indexExpression": {"id": 7845, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7836, "src": "15508:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15484:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}], "id": 7847, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "15483:37:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "functionReturnParameters": 7841, "id": 7848, "nodeType": "Return", "src": "15476:44:37"}]}, "documentation": {"id": 7832, "nodeType": "StructuredDocumentation", "src": "15226:132:37", "text": " @notice Get package details\n @param _projectId Id of the project\n @param _packageId Id of the package"}, "functionSelector": "20000478", "id": 7850, "implemented": true, "kind": "function", "modifiers": [], "name": "getPackageData", "nameLocation": "15372:14:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7837, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7834, "mutability": "mutable", "name": "_projectId", "nameLocation": "15395:10:37", "nodeType": "VariableDeclaration", "scope": 7850, "src": "15387:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7833, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "15387:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7836, "mutability": "mutable", "name": "_packageId", "nameLocation": "15415:10:37", "nodeType": "VariableDeclaration", "scope": 7850, "src": "15407:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7835, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "15407:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "15386:40:37"}, "returnParameters": {"id": 7841, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7840, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7850, "src": "15450:14:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_memory_ptr", "typeString": "struct Package"}, "typeName": {"id": 7839, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7838, "name": "Package", "nameLocations": ["15450:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "15450:7:37"}, "referencedDeclaration": 9870, "src": "15450:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "15449:16:37"}, "scope": 8219, "src": "15363:164:37", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"body": {"id": 7871, "nodeType": "Block", "src": "15890:79:37", "statements": [{"expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7863, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "15907:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7865, "indexExpression": {"id": 7864, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7853, "src": "15924:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15907:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7867, "indexExpression": {"id": 7866, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7855, "src": "15936:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15907:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7869, "indexExpression": {"id": 7868, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7857, "src": "15948:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15907:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "functionReturnParameters": 7862, "id": 7870, "nodeType": "Return", "src": "15900:62:37"}]}, "documentation": {"id": 7851, "nodeType": "StructuredDocumentation", "src": "15533:186:37", "text": " @notice Get collaborator details\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator Collaborator address"}, "functionSelector": "2008002e", "id": 7872, "implemented": true, "kind": "function", "modifiers": [], "name": "getCollaboratorData", "nameLocation": "15733:19:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7858, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7853, "mutability": "mutable", "name": "_projectId", "nameLocation": "15770:10:37", "nodeType": "VariableDeclaration", "scope": 7872, "src": "15762:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7852, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "15762:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7855, "mutability": "mutable", "name": "_packageId", "nameLocation": "15798:10:37", "nodeType": "VariableDeclaration", "scope": 7872, "src": "15790:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7854, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "15790:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7857, "mutability": "mutable", "name": "_collaborator", "nameLocation": "15826:13:37", "nodeType": "VariableDeclaration", "scope": 7872, "src": "15818:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7856, "name": "address", "nodeType": "ElementaryTypeName", "src": "15818:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "15752:93:37"}, "returnParameters": {"id": 7862, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7861, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7872, "src": "15869:19:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_memory_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 7860, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7859, "name": "Collaborator", "nameLocations": ["15869:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "15869:12:37"}, "referencedDeclaration": 9885, "src": "15869:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "src": "15868:21:37"}, "scope": 8219, "src": "15724:245:37", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"body": {"id": 7903, "nodeType": "Block", "src": "16330:164:37", "statements": [{"assignments": [7888], "declarations": [{"constant": false, "id": 7888, "mutability": "mutable", "name": "collaborator", "nameLocation": "16361:12:37", "nodeType": "VariableDeclaration", "scope": 7903, "src": "16340:33:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 7887, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7886, "name": "Collaborator", "nameLocations": ["16340:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "16340:12:37"}, "referencedDeclaration": 9885, "src": "16340:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "id": 7896, "initialValue": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7889, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "16376:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7891, "indexExpression": {"id": 7890, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7875, "src": "16393:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16376:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7893, "indexExpression": {"id": 7892, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7877, "src": "16405:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16376:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7895, "indexExpression": {"id": 7894, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7879, "src": "16417:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16376:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "16340:91:37"}, {"expression": {"components": [{"expression": {"id": 7897, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7888, "src": "16450:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 7898, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "16463:3:37", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "16450:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 7899, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7888, "src": "16468:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 7900, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "16481:5:37", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9874, "src": "16468:18:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 7901, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "16449:38:37", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint256)"}}, "functionReturnParameters": 7885, "id": 7902, "nodeType": "Return", "src": "16442:45:37"}]}, "documentation": {"id": 7873, "nodeType": "StructuredDocumentation", "src": "15975:186:37", "text": " @notice Get collaborator rewards\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator Collaborator address"}, "functionSelector": "58ff3e47", "id": 7904, "implemented": true, "kind": "function", "modifiers": [], "name": "getCollaboratorRewards", "nameLocation": "16175:22:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7880, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7875, "mutability": "mutable", "name": "_projectId", "nameLocation": "16215:10:37", "nodeType": "VariableDeclaration", "scope": 7904, "src": "16207:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7874, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "16207:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7877, "mutability": "mutable", "name": "_packageId", "nameLocation": "16243:10:37", "nodeType": "VariableDeclaration", "scope": 7904, "src": "16235:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7876, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "16235:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7879, "mutability": "mutable", "name": "_collaborator", "nameLocation": "16271:13:37", "nodeType": "VariableDeclaration", "scope": 7904, "src": "16263:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7878, "name": "address", "nodeType": "ElementaryTypeName", "src": "16263:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "16197:93:37"}, "returnParameters": {"id": 7885, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7882, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7904, "src": "16312:7:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7881, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16312:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 7884, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7904, "src": "16321:7:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7883, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16321:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "16311:18:37"}, "scope": 8219, "src": "16166:328:37", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 7925, "nodeType": "Block", "src": "16833:71:37", "statements": [{"expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7917, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "16850:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 7919, "indexExpression": {"id": 7918, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7907, "src": "16863:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16850:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 7921, "indexExpression": {"id": 7920, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7909, "src": "16875:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16850:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 7923, "indexExpression": {"id": 7922, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7911, "src": "16887:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "16850:47:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "functionReturnParameters": 7916, "id": 7924, "nodeType": "Return", "src": "16843:54:37"}]}, "documentation": {"id": 7905, "nodeType": "StructuredDocumentation", "src": "16500:174:37", "text": " @notice Get observer details\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _observer Observer address"}, "functionSelector": "590ab7db", "id": 7926, "implemented": true, "kind": "function", "modifiers": [], "name": "getObserverData", "nameLocation": "16688:15:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7912, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7907, "mutability": "mutable", "name": "_projectId", "nameLocation": "16721:10:37", "nodeType": "VariableDeclaration", "scope": 7926, "src": "16713:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7906, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "16713:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7909, "mutability": "mutable", "name": "_packageId", "nameLocation": "16749:10:37", "nodeType": "VariableDeclaration", "scope": 7926, "src": "16741:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7908, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "16741:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7911, "mutability": "mutable", "name": "_observer", "nameLocation": "16777:9:37", "nodeType": "VariableDeclaration", "scope": 7926, "src": "16769:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7910, "name": "address", "nodeType": "ElementaryTypeName", "src": "16769:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "16703:89:37"}, "returnParameters": {"id": 7916, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7915, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7926, "src": "16816:15:37", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_memory_ptr", "typeString": "struct Observer"}, "typeName": {"id": 7914, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7913, "name": "Observer", "nameLocations": ["16816:8:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "16816:8:37"}, "referencedDeclaration": 9892, "src": "16816:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}, "visibility": "internal"}], "src": "16815:17:37"}, "scope": 8219, "src": "16679:225:37", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"body": {"id": 7973, "nodeType": "Block", "src": "17228:282:37", "statements": [{"assignments": [7940], "declarations": [{"constant": false, "id": 7940, "mutability": "mutable", "name": "observer", "nameLocation": "17255:8:37", "nodeType": "VariableDeclaration", "scope": 7973, "src": "17238:25:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}, "typeName": {"id": 7939, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7938, "name": "Observer", "nameLocations": ["17238:8:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "17238:8:37"}, "referencedDeclaration": 9892, "src": "17238:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}, "visibility": "internal"}], "id": 7948, "initialValue": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7941, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "17266:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 7943, "indexExpression": {"id": 7942, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7929, "src": "17279:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "17266:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 7945, "indexExpression": {"id": 7944, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7931, "src": "17291:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "17266:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 7947, "indexExpression": {"id": 7946, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7933, "src": "17303:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "17266:47:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "17238:75:37"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 7960, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 7957, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7952, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7949, "name": "observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7940, "src": "17327:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 7950, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17336:8:37", "memberName": "timePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9889, "src": "17327:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 7951, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17347:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "17327:21:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 7956, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 7953, "name": "observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7940, "src": "17352:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 7954, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17361:11:37", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9887, "src": "17352:20:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 7955, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17376:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "17352:25:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "17327:50:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"expression": {"id": 7958, "name": "observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7940, "src": "17381:8:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 7959, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17390:9:37", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9891, "src": "17381:18:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "17327:72:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 7964, "nodeType": "IfStatement", "src": "17323:111:37", "trueBody": {"id": 7963, "nodeType": "Block", "src": "17401:33:37", "statements": [{"expression": {"hexValue": "30", "id": 7961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17422:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "functionReturnParameters": 7937, "id": 7962, "nodeType": "Return", "src": "17415:8:37"}]}}, {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"id": 7965, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "17450:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 7967, "indexExpression": {"id": 7966, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7929, "src": "17462:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "17450:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 7969, "indexExpression": {"id": 7968, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7931, "src": "17474:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "17450:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 7970, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "17486:15:37", "memberName": "_getObserverFee", "nodeType": "MemberAccess", "referencedDeclaration": 9525, "src": "17450:51:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Package_$9870_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer) view returns (uint256)"}}, "id": 7971, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "17450:53:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 7937, "id": 7972, "nodeType": "Return", "src": "17443:60:37"}]}, "documentation": {"id": 7927, "nodeType": "StructuredDocumentation", "src": "16910:170:37", "text": " @notice Get observer fee\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _observer Observer address"}, "functionSelector": "7cbe62c6", "id": 7974, "implemented": true, "kind": "function", "modifiers": [], "name": "getObserverFee", "nameLocation": "17094:14:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7934, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7929, "mutability": "mutable", "name": "_projectId", "nameLocation": "17126:10:37", "nodeType": "VariableDeclaration", "scope": 7974, "src": "17118:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7928, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "17118:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7931, "mutability": "mutable", "name": "_packageId", "nameLocation": "17154:10:37", "nodeType": "VariableDeclaration", "scope": 7974, "src": "17146:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7930, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "17146:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7933, "mutability": "mutable", "name": "_observer", "nameLocation": "17182:9:37", "nodeType": "VariableDeclaration", "scope": 7974, "src": "17174:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7932, "name": "address", "nodeType": "ElementaryTypeName", "src": "17174:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "17108:89:37"}, "returnParameters": {"id": 7937, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7936, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 7974, "src": "17219:7:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7935, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "17219:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "17218:9:37"}, "scope": 8219, "src": "17085:425:37", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 8086, "nodeType": "Block", "src": "17988:822:37", "statements": [{"assignments": [7988], "declarations": [{"constant": false, "id": 7988, "mutability": "mutable", "name": "collaborator", "nameLocation": "18019:12:37", "nodeType": "VariableDeclaration", "scope": 8086, "src": "17998:33:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 7987, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7986, "name": "Collaborator", "nameLocations": ["17998:12:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "17998:12:37"}, "referencedDeclaration": 9885, "src": "17998:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "id": 7996, "initialValue": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 7989, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "18034:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 7991, "indexExpression": {"id": 7990, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7977, "src": "18051:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18034:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 7993, "indexExpression": {"id": 7992, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7979, "src": "18063:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18034:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 7995, "indexExpression": {"id": 7994, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7981, "src": "18075:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18034:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "17998:91:37"}, {"assignments": [7999], "declarations": [{"constant": false, "id": 7999, "mutability": "mutable", "name": "package", "nameLocation": "18115:7:37", "nodeType": "VariableDeclaration", "scope": 8086, "src": "18099:23:37", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 7998, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7997, "name": "Package", "nameLocations": ["18099:7:37"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "18099:7:37"}, "referencedDeclaration": 9870, "src": "18099:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "id": 8005, "initialValue": {"baseExpression": {"baseExpression": {"id": 8000, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "18125:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 8002, "indexExpression": {"id": 8001, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7977, "src": "18137:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18125:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 8004, "indexExpression": {"id": 8003, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7979, "src": "18149:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18125:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "18099:61:37"}, {"assignments": [8007], "declarations": [{"constant": false, "id": 8007, "mutability": "mutable", "name": "bonus_", "nameLocation": "18179:6:37", "nodeType": "VariableDeclaration", "scope": 8086, "src": "18171:14:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8006, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "18171:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 8008, "nodeType": "VariableDeclarationStatement", "src": "18171:14:37"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 8016, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8009, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7999, "src": "18199:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 8010, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18207:5:37", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "18199:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 8011, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "18215:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "18199:17:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 8013, "name": "_score", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7983, "src": "18220:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 8014, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "18229:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "18220:10:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "18199:31:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 8043, "nodeType": "IfStatement", "src": "18195:258:37", "trueBody": {"id": 8042, "nodeType": "Block", "src": "18232:221:37", "statements": [{"expression": {"id": 8040, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8017, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8007, "src": "18246:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"condition": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8024, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8021, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8018, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7999, "src": "18256:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 8019, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18264:22:37", "memberName": "collaboratorsPaidBonus", "nodeType": "MemberAccess", "referencedDeclaration": 9853, "src": "18256:30:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 8020, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "18289:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "18256:34:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 8022, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7999, "src": "18294:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 8023, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18302:18:37", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "18294:26:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18256:64:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 8025, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "18255:66:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8038, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8032, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7999, "src": "18403:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 8033, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18411:5:37", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "18403:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 8034, "name": "_score", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7983, "src": "18419:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18403:22:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 8036, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "18402:24:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 8037, "name": "PCT_PRECISION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6685, "src": "18429:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18402:40:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8039, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "18255:187:37", "trueExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8030, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8026, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7999, "src": "18345:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 8027, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18353:5:37", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "18345:13:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 8028, "name": "package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7999, "src": "18361:7:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 8029, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18369:9:37", "memberName": "bonusPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9851, "src": "18361:17:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18345:33:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 8031, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "18344:35:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18246:196:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8041, "nodeType": "ExpressionStatement", "src": "18246:196:37"}]}}, {"expression": {"arguments": [{"id": 8052, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8007, "src": "18530:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 8044, "name": "collaboratorData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6716, "src": "18463:16:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator storage ref)))"}}, "id": 8048, "indexExpression": {"id": 8045, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7977, "src": "18480:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18463:28:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Collaborator storage ref))"}}, "id": 8049, "indexExpression": {"id": 8046, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7979, "src": "18492:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18463:40:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Collaborator_$9885_storage_$", "typeString": "mapping(address => struct Collaborator storage ref)"}}, "id": 8050, "indexExpression": {"id": 8047, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7981, "src": "18504:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18463:55:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage", "typeString": "struct Collaborator storage ref"}}, "id": 8051, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18519:10:37", "memberName": "_payReward", "nodeType": "MemberAccess", "referencedDeclaration": 9042, "src": "18463:66:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Collaborator_$9885_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Collaborator_$9885_storage_ptr_$", "typeString": "function (struct Collaborator storage pointer,uint256)"}}, "id": 8053, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "18463:74:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8054, "nodeType": "ExpressionStatement", "src": "18463:74:37"}, {"expression": {"arguments": [{"expression": {"id": 8061, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7988, "src": "18594:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8062, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18607:3:37", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "18594:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 8063, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8007, "src": "18612:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 8055, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "18547:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 8058, "indexExpression": {"id": 8056, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7977, "src": "18559:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18547:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 8059, "indexExpression": {"id": 8057, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7979, "src": "18571:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18547:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 8060, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18583:10:37", "memberName": "_payReward", "nodeType": "MemberAccess", "referencedDeclaration": 9575, "src": "18547:46:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256,uint256)"}}, "id": 8064, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "18547:72:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8065, "nodeType": "ExpressionStatement", "src": "18547:72:37"}, {"expression": {"arguments": [{"id": 8070, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7981, "src": "18658:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8071, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7988, "src": "18673:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8072, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18686:3:37", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "18673:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 8073, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8007, "src": "18692:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "18673:25:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"id": 8066, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "18629:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 8068, "indexExpression": {"id": 8067, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7977, "src": "18641:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "18629:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 8069, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18653:4:37", "memberName": "_pay", "nodeType": "MemberAccess", "referencedDeclaration": 9815, "src": "18629:28:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer,address,uint256)"}}, "id": 8075, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "18629:70:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8076, "nodeType": "ExpressionStatement", "src": "18629:70:37"}, {"eventCall": {"arguments": [{"id": 8078, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7977, "src": "18739:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 8079, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7979, "src": "18751:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 8080, "name": "_collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7981, "src": "18763:13:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"expression": {"id": 8081, "name": "collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7988, "src": "18778:12:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8082, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "18791:3:37", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "18778:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 8083, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8007, "src": "18796:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 8077, "name": "PaidCollaboratorRewards", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8698, "src": "18715:23:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,address,uint256,uint256)"}}, "id": 8084, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "18715:88:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8085, "nodeType": "EmitStatement", "src": "18710:93:37"}]}, "documentation": {"id": 7975, "nodeType": "StructuredDocumentation", "src": "17561:264:37", "text": " @notice Pay fee to observer\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator observer address\n @param _score Bonus score of collaborator\n Emit {PaidCollaboratorRewards}"}, "id": 8087, "implemented": true, "kind": "function", "modifiers": [], "name": "_payCollaboratorRewards", "nameLocation": "17839:23:37", "nodeType": "FunctionDefinition", "parameters": {"id": 7984, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 7977, "mutability": "mutable", "name": "_projectId", "nameLocation": "17880:10:37", "nodeType": "VariableDeclaration", "scope": 8087, "src": "17872:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7976, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "17872:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7979, "mutability": "mutable", "name": "_packageId", "nameLocation": "17908:10:37", "nodeType": "VariableDeclaration", "scope": 8087, "src": "17900:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 7978, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "17900:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 7981, "mutability": "mutable", "name": "_collaborator", "nameLocation": "17936:13:37", "nodeType": "VariableDeclaration", "scope": 8087, "src": "17928:21:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 7980, "name": "address", "nodeType": "ElementaryTypeName", "src": "17928:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 7983, "mutability": "mutable", "name": "_score", "nameLocation": "17967:6:37", "nodeType": "VariableDeclaration", "scope": 8087, "src": "17959:14:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 7982, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "17959:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "17862:117:37"}, "returnParameters": {"id": 7985, "nodeType": "ParameterList", "parameters": [], "src": "17988:0:37"}, "scope": 8219, "src": "17830:980:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 8141, "nodeType": "Block", "src": "19146:367:37", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"baseExpression": {"id": 8097, "name": "observerData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6725, "src": "19156:12:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer storage ref)))"}}, "id": 8101, "indexExpression": {"id": 8098, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8090, "src": "19169:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19156:24:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$_$", "typeString": "mapping(bytes32 => mapping(address => struct Observer storage ref))"}}, "id": 8102, "indexExpression": {"id": 8099, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8092, "src": "19181:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19156:36:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Observer_$9892_storage_$", "typeString": "mapping(address => struct Observer storage ref)"}}, "id": 8103, "indexExpression": {"id": 8100, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8094, "src": "19193:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19156:47:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage", "typeString": "struct Observer storage ref"}}, "id": 8104, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19204:15:37", "memberName": "_payObserverFee", "nodeType": "MemberAccess", "referencedDeclaration": 9133, "src": "19156:63:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Observer_$9892_storage_ptr_$returns$__$bound_to$_t_struct$_Observer_$9892_storage_ptr_$", "typeString": "function (struct Observer storage pointer)"}}, "id": 8105, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19156:65:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8106, "nodeType": "ExpressionStatement", "src": "19156:65:37"}, {"assignments": [8108], "declarations": [{"constant": false, "id": 8108, "mutability": "mutable", "name": "amount_", "nameLocation": "19240:7:37", "nodeType": "VariableDeclaration", "scope": 8141, "src": "19232:15:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8107, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19232:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 8116, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"baseExpression": {"baseExpression": {"id": 8109, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "19250:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 8111, "indexExpression": {"id": 8110, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8090, "src": "19262:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19250:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 8113, "indexExpression": {"id": 8112, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8092, "src": "19274:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19250:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 8114, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19286:15:37", "memberName": "_getObserverFee", "nodeType": "MemberAccess", "referencedDeclaration": 9525, "src": "19250:51:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_Package_$9870_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer) view returns (uint256)"}}, "id": 8115, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19250:53:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "19232:71:37"}, {"expression": {"arguments": [{"id": 8123, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8108, "src": "19365:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"baseExpression": {"id": 8117, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "19313:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 8120, "indexExpression": {"id": 8118, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8090, "src": "19325:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19313:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 8121, "indexExpression": {"id": 8119, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8092, "src": "19337:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19313:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 8122, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19349:15:37", "memberName": "_payObserverFee", "nodeType": "MemberAccess", "referencedDeclaration": 9541, "src": "19313:51:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Package_$9870_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Package_$9870_storage_ptr_$", "typeString": "function (struct Package storage pointer,uint256)"}}, "id": 8124, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19313:60:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8125, "nodeType": "ExpressionStatement", "src": "19313:60:37"}, {"expression": {"arguments": [{"id": 8130, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8094, "src": "19412:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 8131, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8108, "src": "19423:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"id": 8126, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "19383:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 8128, "indexExpression": {"id": 8127, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8090, "src": "19395:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "19383:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 8129, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "19407:4:37", "memberName": "_pay", "nodeType": "MemberAccess", "referencedDeclaration": 9815, "src": "19383:28:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Project_$9837_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Project_$9837_storage_ptr_$", "typeString": "function (struct Project storage pointer,address,uint256)"}}, "id": 8132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19383:48:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8133, "nodeType": "ExpressionStatement", "src": "19383:48:37"}, {"eventCall": {"arguments": [{"id": 8135, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8090, "src": "19463:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 8136, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8092, "src": "19475:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 8137, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8094, "src": "19487:9:37", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 8138, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8108, "src": "19498:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 8134, "name": "PaidObserverFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8686, "src": "19447:15:37", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (bytes32,bytes32,address,uint256)"}}, "id": 8139, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19447:59:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8140, "nodeType": "EmitStatement", "src": "19442:64:37"}]}, "documentation": {"id": 8088, "nodeType": "StructuredDocumentation", "src": "18816:203:37", "text": " @notice Pay fee to observer\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _observer observer address\n Emit {PaidObserverFee}"}, "id": 8142, "implemented": true, "kind": "function", "modifiers": [], "name": "_payObserverFee", "nameLocation": "19033:15:37", "nodeType": "FunctionDefinition", "parameters": {"id": 8095, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8090, "mutability": "mutable", "name": "_projectId", "nameLocation": "19066:10:37", "nodeType": "VariableDeclaration", "scope": 8142, "src": "19058:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8089, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "19058:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8092, "mutability": "mutable", "name": "_packageId", "nameLocation": "19094:10:37", "nodeType": "VariableDeclaration", "scope": 8142, "src": "19086:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8091, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "19086:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8094, "mutability": "mutable", "name": "_observer", "nameLocation": "19122:9:37", "nodeType": "VariableDeclaration", "scope": 8142, "src": "19114:17:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8093, "name": "address", "nodeType": "ElementaryTypeName", "src": "19114:7:37", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "19048:89:37"}, "returnParameters": {"id": 8096, "nodeType": "ParameterList", "parameters": [], "src": "19146:0:37"}, "scope": 8219, "src": "19024:489:37", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}, {"body": {"id": 8165, "nodeType": "Block", "src": "19743:102:37", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 8153, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2204, "src": "19787:10:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 8154, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19787:12:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8156, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "19811:5:37", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 8157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "19817:6:37", "memberName": "number", "nodeType": "MemberAccess", "src": "19811:12:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 8158, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "19826:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "19811:16:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 8155, "name": "blockhash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -5, "src": "19801:9:37", "typeDescriptions": {"typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 8160, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19801:27:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, {"id": 8161, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8145, "src": "19830:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 8151, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "19770:3:37", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 8152, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "19774:12:37", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "19770:16:37", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 8162, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19770:67:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 8150, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "19760:9:37", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 8163, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "19760:78:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "functionReturnParameters": 8149, "id": 8164, "nodeType": "Return", "src": "19753:85:37"}]}, "documentation": {"id": 8143, "nodeType": "StructuredDocumentation", "src": "19519:151:37", "text": " @notice Generates unique id hash based on _msgSender() address and previous block hash.\n @param _nonce nonce\n @return Id"}, "id": 8166, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateId", "nameLocation": "19684:11:37", "nodeType": "FunctionDefinition", "parameters": {"id": 8146, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8145, "mutability": "mutable", "name": "_nonce", "nameLocation": "19704:6:37", "nodeType": "VariableDeclaration", "scope": 8166, "src": "19696:14:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8144, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19696:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "19695:16:37"}, "returnParameters": {"id": 8149, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8148, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 8166, "src": "19734:7:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8147, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "19734:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "19733:9:37"}, "scope": 8219, "src": "19675:170:37", "stateMutability": "view", "virtual": false, "visibility": "private"}, {"body": {"id": 8188, "nodeType": "Block", "src": "20032:127:37", "statements": [{"expression": {"id": 8176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8172, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8170, "src": "20042:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"hexValue": "30", "id": 8174, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "20067:1:37", "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": 8173, "name": "_generateId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8166, "src": "20055:11:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 8175, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20055:14:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "20042:27:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 8177, "nodeType": "ExpressionStatement", "src": "20042:27:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 8179, "name": "projectData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6692, "src": "20087:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Project_$9837_storage_$", "typeString": "mapping(bytes32 => struct Project storage ref)"}}, "id": 8181, "indexExpression": {"id": 8180, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8170, "src": "20099:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "20087:23:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage", "typeString": "struct Project storage ref"}}, "id": 8182, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "20111:11:37", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9830, "src": "20087:35:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 8183, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "20126:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "20087:40:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6475706c69636174652070726f6a656374206964", "id": 8185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "20129:22:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_68967a457615f77b7697a47076fb17bbf6f7d4825cfc89ced439d62c03e944a9", "typeString": "literal_string \"duplicate project id\""}, "value": "duplicate project id"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_68967a457615f77b7697a47076fb17bbf6f7d4825cfc89ced439d62c03e944a9", "typeString": "literal_string \"duplicate project id\""}], "id": 8178, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "20079:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8186, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20079:73:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8187, "nodeType": "ExpressionStatement", "src": "20079:73:37"}]}, "documentation": {"id": 8167, "nodeType": "StructuredDocumentation", "src": "19851:104:37", "text": " @notice Returns a new unique project id.\n @return _projectId Id of the project."}, "id": 8189, "implemented": true, "kind": "function", "modifiers": [], "name": "_generateProjectId", "nameLocation": "19969:18:37", "nodeType": "FunctionDefinition", "parameters": {"id": 8168, "nodeType": "ParameterList", "parameters": [], "src": "19987:2:37"}, "returnParameters": {"id": 8171, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8170, "mutability": "mutable", "name": "_projectId", "nameLocation": "20020:10:37", "nodeType": "VariableDeclaration", "scope": 8189, "src": "20012:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8169, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "20012:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "20011:20:37"}, "scope": 8219, "src": "19960:199:37", "stateMutability": "view", "virtual": false, "visibility": "private"}, {"body": {"id": 8217, "nodeType": "Block", "src": "20449:144:37", "statements": [{"expression": {"id": 8203, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8199, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8197, "src": "20459:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 8201, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8194, "src": "20484:6:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 8200, "name": "_generateId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8166, "src": "20472:11:37", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)"}}, "id": 8202, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20472:19:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "20459:32:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "id": 8204, "nodeType": "ExpressionStatement", "src": "20459:32:37"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"baseExpression": {"id": 8206, "name": "packageData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6699, "src": "20509:11:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$_$", "typeString": "mapping(bytes32 => mapping(bytes32 => struct Package storage ref))"}}, "id": 8208, "indexExpression": {"id": 8207, "name": "_projectId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8192, "src": "20521:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "20509:23:37", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Package_$9870_storage_$", "typeString": "mapping(bytes32 => struct Package storage ref)"}}, "id": 8210, "indexExpression": {"id": 8209, "name": "_packageId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8197, "src": "20533:10:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "20509:35:37", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage", "typeString": "struct Package storage ref"}}, "id": 8211, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "20545:11:37", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9855, "src": "20509:47:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 8212, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "20560:1:37", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "20509:52:37", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6475706c6963617465207061636b616765206964", "id": 8214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "20563:22:37", "typeDescriptions": {"typeIdentifier": "t_stringliteral_96906676e0f9aec65d7630ac3179e5c1c36d7eb4ebcae6a9a481730b171f3eed", "typeString": "literal_string \"duplicate package id\""}, "value": "duplicate package id"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_96906676e0f9aec65d7630ac3179e5c1c36d7eb4ebcae6a9a481730b171f3eed", "typeString": "literal_string \"duplicate package id\""}], "id": 8205, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "20501:7:37", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8215, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "20501:85:37", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8216, "nodeType": "ExpressionStatement", "src": "20501:85:37"}]}, "documentation": {"id": 8190, "nodeType": "StructuredDocumentation", "src": "20165:173:37", "text": " @notice Returns a new unique package id.\n @param _projectId Id of the project\n @param _nonce nonce\n @return _packageId Id of the package"}, "id": 8218, "implemented": true, "kind": "function", "modifiers": [], "name": "_generatePackageId", "nameLocation": "20352:18:37", "nodeType": "FunctionDefinition", "parameters": {"id": 8195, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8192, "mutability": "mutable", "name": "_projectId", "nameLocation": "20379:10:37", "nodeType": "VariableDeclaration", "scope": 8218, "src": "20371:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8191, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "20371:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8194, "mutability": "mutable", "name": "_nonce", "nameLocation": "20399:6:37", "nodeType": "VariableDeclaration", "scope": 8218, "src": "20391:14:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8193, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "20391:7:37", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "20370:36:37"}, "returnParameters": {"id": 8198, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8197, "mutability": "mutable", "name": "_packageId", "nameLocation": "20437:10:37", "nodeType": "VariableDeclaration", "scope": 8218, "src": "20429:18:37", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8196, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "20429:7:37", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "20428:20:37"}, "scope": 8219, "src": "20343:250:37", "stateMutability": "view", "virtual": false, "visibility": "private"}], "scope": 8220, "src": "860:19735:37", "usedErrors": []}], "src": "32:20564:37"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/TokenFactory.sol": {"AST": {"absolutePath": "contracts/TokenFactory.sol", "exportedSymbols": {"Clones": [2888], "ERC165CheckerUpgradeable": [2639], "INFTReward": [8572], "IOUToken": [5429], "ITokenFactory": [8890], "OwnableUpgradeable": [131], "TokenFactory": [8401]}, "id": 8402, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 8221, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:38"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "id": 8223, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8402, "sourceUnit": 132, "src": "56:103:38", "symbolAliases": [{"foreign": {"id": 8222, "name": "OwnableUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 131, "src": "65:18:38", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol", "id": 8225, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8402, "sourceUnit": 2640, "src": "160:128:38", "symbolAliases": [{"foreign": {"id": 8224, "name": "ERC165CheckerUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2639, "src": "169:24:38", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "@openzeppelin/contracts/proxy/Clones.sol", "file": "@openzeppelin/contracts/proxy/Clones.sol", "id": 8227, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8402, "sourceUnit": 2889, "src": "289:66:38", "symbolAliases": [{"foreign": {"id": 8226, "name": "Clones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2888, "src": "298:6:38", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ITokenFactory.sol", "file": "./interfaces/ITokenFactory.sol", "id": 8229, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8402, "sourceUnit": 8891, "src": "356:63:38", "symbolAliases": [{"foreign": {"id": 8228, "name": "ITokenFactory", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8890, "src": "365:13:38", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/IOUToken.sol", "file": "./IOUToken.sol", "id": 8231, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8402, "sourceUnit": 5430, "src": "420:42:38", "symbolAliases": [{"foreign": {"id": 8230, "name": "IOUToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5429, "src": "429:8:38", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/INFTReward.sol", "file": "./interfaces/INFTReward.sol", "id": 8233, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8402, "sourceUnit": 8573, "src": "463:57:38", "symbolAliases": [{"foreign": {"id": 8232, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "472:10:38", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 8235, "name": "OwnableUpgradeable", "nameLocations": ["644:18:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 131, "src": "644:18:38"}, "id": 8236, "nodeType": "InheritanceSpecifier", "src": "644:18:38"}, {"baseName": {"id": 8237, "name": "ITokenFactory", "nameLocations": ["664:13:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 8890, "src": "664:13:38"}, "id": 8238, "nodeType": "InheritanceSpecifier", "src": "664:13:38"}], "canonicalName": "TokenFactory", "contractDependencies": [5429], "contractKind": "contract", "documentation": {"id": 8234, "nodeType": "StructuredDocumentation", "src": "522:96:38", "text": " @title TokenFactory Contract\n @notice This contract using for creating IOU Token"}, "fullyImplemented": true, "id": 8401, "linearizedBaseContracts": [8401, 8890, 131, 2219, 282], "name": "TokenFactory", "nameLocation": "628:12:38", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 8241, "libraryName": {"id": 8239, "name": "ERC165CheckerUpgradeable", "nameLocations": ["690:24:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 2639, "src": "690:24:38"}, "nodeType": "UsingForDirective", "src": "684:43:38", "typeName": {"id": 8240, "name": "address", "nodeType": "ElementaryTypeName", "src": "719:7:38", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, {"constant": false, "functionSelector": "a4e8aaae", "id": 8243, "mutability": "mutable", "name": "learnToEarn", "nameLocation": "791:11:38", "nodeType": "VariableDeclaration", "scope": 8401, "src": "776:26:38", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8242, "name": "address", "nodeType": "ElementaryTypeName", "src": "776:7:38", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "public"}, {"constant": false, "documentation": {"id": 8244, "nodeType": "StructuredDocumentation", "src": "809:120:38", "text": " @dev NFTReward contract interface\n Using this contract to deploy new contract NFT for user"}, "functionSelector": "c455ed40", "id": 8247, "mutability": "mutable", "name": "templateNFTReward", "nameLocation": "952:17:38", "nodeType": "VariableDeclaration", "scope": 8401, "src": "934:35:38", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}, "typeName": {"id": 8246, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8245, "name": "INFTReward", "nameLocations": ["934:10:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 8572, "src": "934:10:38"}, "referencedDeclaration": 8572, "src": "934:10:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "visibility": "public"}, {"body": {"id": 8277, "nodeType": "Block", "src": "1175:191:38", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 8256, "name": "__Ownable_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 26, "src": "1185:14:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()"}}, "id": 8257, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1185:16:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8258, "nodeType": "ExpressionStatement", "src": "1185:16:38"}, {"expression": {"arguments": [{"arguments": [{"expression": {"arguments": [{"id": 8266, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "1264:10:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}], "id": 8265, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1259:4:38", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 8267, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1259:16:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_INFTReward_$8572", "typeString": "type(contract INFTReward)"}}, "id": 8268, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1276:11:38", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1259:28:38", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"arguments": [{"id": 8262, "name": "_nftRewared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8251, "src": "1228:11:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}], "id": 8261, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1220:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8260, "name": "address", "nodeType": "ElementaryTypeName", "src": "1220:7:38", "typeDescriptions": {}}}, "id": 8263, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1220:20:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1241:17:38", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 2495, "src": "1220:38:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address,bytes4) view returns (bool)"}}, "id": 8269, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1220:68:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "496e76616c6964204e46545265776172642061646472657373", "id": 8270, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1290:27:38", "typeDescriptions": {"typeIdentifier": "t_stringliteral_b6c6bbd82dadd86e4a801f7b97b5c6d0b6b5a3163d3c3e4e26f9a41061aa205d", "typeString": "literal_string \"Invalid NFTReward address\""}, "value": "Invalid NFTReward address"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_b6c6bbd82dadd86e4a801f7b97b5c6d0b6b5a3163d3c3e4e26f9a41061aa205d", "typeString": "literal_string \"Invalid NFTReward address\""}], "id": 8259, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1212:7:38", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8271, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1212:106:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8272, "nodeType": "ExpressionStatement", "src": "1212:106:38"}, {"expression": {"id": 8275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8273, "name": "templateNFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8247, "src": "1328:17:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 8274, "name": "_nftRewared", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8251, "src": "1348:11:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "src": "1328:31:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "id": 8276, "nodeType": "ExpressionStatement", "src": "1328:31:38"}]}, "documentation": {"id": 8248, "nodeType": "StructuredDocumentation", "src": "976:131:38", "text": " @notice Initialize of contract (replace for constructor)\n @param _nftRewared Address of NFTReward contract"}, "functionSelector": "c4d66de8", "id": 8278, "implemented": true, "kind": "function", "modifiers": [{"id": 8254, "kind": "modifierInvocation", "modifierName": {"id": 8253, "name": "initializer", "nameLocations": ["1163:11:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 202, "src": "1163:11:38"}, "nodeType": "ModifierInvocation", "src": "1163:11:38"}], "name": "initialize", "nameLocation": "1121:10:38", "nodeType": "FunctionDefinition", "parameters": {"id": 8252, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8251, "mutability": "mutable", "name": "_nftRewared", "nameLocation": "1143:11:38", "nodeType": "VariableDeclaration", "scope": 8278, "src": "1132:22:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}, "typeName": {"id": 8250, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8249, "name": "INFTReward", "nameLocations": ["1132:10:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 8572, "src": "1132:10:38"}, "referencedDeclaration": 8572, "src": "1132:10:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "visibility": "internal"}], "src": "1131:24:38"}, "returnParameters": {"id": 8255, "nodeType": "ParameterList", "parameters": [], "src": "1175:0:38"}, "scope": 8401, "src": "1112:254:38", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 8309, "nodeType": "Block", "src": "1589:228:38", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 8292, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 8287, "name": "_learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8281, "src": "1607:12:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 8290, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1631:1:38", "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": 8289, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1623:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8288, "name": "address", "nodeType": "ElementaryTypeName", "src": "1623:7:38", "typeDescriptions": {}}}, "id": 8291, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1623:10:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1607:26:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6c6561726e546f4561726e2061646472657373206973206e6f742076616c6964", "id": 8293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1635:34:38", "typeDescriptions": {"typeIdentifier": "t_stringliteral_495b5e6e54469f16ec20c98c65a15cdc1abd6eea5f21b2ecb4a605c54561cec3", "typeString": "literal_string \"learnToEarn address is not valid\""}, "value": "learnToEarn address is not valid"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_495b5e6e54469f16ec20c98c65a15cdc1abd6eea5f21b2ecb4a605c54561cec3", "typeString": "literal_string \"learnToEarn address is not valid\""}], "id": 8286, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1599:7:38", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1599:71:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8295, "nodeType": "ExpressionStatement", "src": "1599:71:38"}, {"assignments": [8297], "declarations": [{"constant": false, "id": 8297, "mutability": "mutable", "name": "oldLearnToEarn", "nameLocation": "1688:14:38", "nodeType": "VariableDeclaration", "scope": 8309, "src": "1680:22:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8296, "name": "address", "nodeType": "ElementaryTypeName", "src": "1680:7:38", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 8299, "initialValue": {"id": 8298, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8243, "src": "1705:11:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "1680:36:38"}, {"expression": {"id": 8302, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8300, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8243, "src": "1726:11:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 8301, "name": "_learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8281, "src": "1740:12:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1726:26:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8303, "nodeType": "ExpressionStatement", "src": "1726:26:38"}, {"eventCall": {"arguments": [{"id": 8305, "name": "oldLearnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8297, "src": "1782:14:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 8306, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8243, "src": "1798:11:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 8304, "name": "SetLearnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8861, "src": "1767:14:38", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 8307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1767:43:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8308, "nodeType": "EmitStatement", "src": "1762:48:38"}]}, "documentation": {"id": 8279, "nodeType": "StructuredDocumentation", "src": "1372:147:38", "text": " @notice Update LearnToEarn contract address\n @param _learnToEarn LearnToEarn contract address\n Emit {SetLearnToEarn}"}, "functionSelector": "3025928f", "id": 8310, "implemented": true, "kind": "function", "modifiers": [{"id": 8284, "kind": "modifierInvocation", "modifierName": {"id": 8283, "name": "onlyOwner", "nameLocations": ["1579:9:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 45, "src": "1579:9:38"}, "nodeType": "ModifierInvocation", "src": "1579:9:38"}], "name": "setLearnToEarn", "nameLocation": "1533:14:38", "nodeType": "FunctionDefinition", "parameters": {"id": 8282, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8281, "mutability": "mutable", "name": "_learnToEarn", "nameLocation": "1556:12:38", "nodeType": "VariableDeclaration", "scope": 8310, "src": "1548:20:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8280, "name": "address", "nodeType": "ElementaryTypeName", "src": "1548:7:38", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1547:22:38"}, "returnParameters": {"id": 8285, "nodeType": "ParameterList", "parameters": [], "src": "1589:0:38"}, "scope": 8401, "src": "1524:293:38", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8877], "body": {"id": 8342, "nodeType": "Block", "src": "2259:139:38", "statements": [{"expression": {"id": 8335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8322, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8320, "src": "2269:6:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"arguments": [{"expression": {"id": 8328, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2299:3:38", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 8329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2303:6:38", "memberName": "sender", "nodeType": "MemberAccess", "src": "2299:10:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 8330, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8313, "src": "2311:12:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 8331, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8315, "src": "2325:5:38", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 8332, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8317, "src": "2332:7:38", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 8327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "2286:12:38", "typeDescriptions": {"typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_IOUToken_$5429_$", "typeString": "function (address,uint256,string memory,string memory) returns (contract IOUToken)"}, "typeName": {"id": 8326, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8325, "name": "IOUToken", "nameLocations": ["2290:8:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 5429, "src": "2290:8:38"}, "referencedDeclaration": 5429, "src": "2290:8:38", "typeDescriptions": {"typeIdentifier": "t_contract$_IOUToken_$5429", "typeString": "contract IOUToken"}}}, "id": 8333, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2286:54:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IOUToken_$5429", "typeString": "contract IOUToken"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_IOUToken_$5429", "typeString": "contract IOUToken"}], "id": 8324, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2278:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8323, "name": "address", "nodeType": "ElementaryTypeName", "src": "2278:7:38", "typeDescriptions": {}}}, "id": 8334, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2278:63:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2269:72:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8336, "nodeType": "ExpressionStatement", "src": "2269:72:38"}, {"eventCall": {"arguments": [{"id": 8338, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8320, "src": "2370:6:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 8339, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8313, "src": "2378:12:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 8337, "name": "DeployedToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8855, "src": "2356:13:38", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 8340, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2356:35:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8341, "nodeType": "EmitStatement", "src": "2351:40:38"}]}, "documentation": {"id": 8311, "nodeType": "StructuredDocumentation", "src": "1822:281:38", "text": " @notice Deploys IOUT with totalSupply equal to project budget\n @param _totalSupply Token total supply\n @param _name Name of token\n @param _symbol Symbol of token\n @return token_ IOU token address\n \n emit {DeployedToken} events"}, "functionSelector": "da68ed12", "id": 8343, "implemented": true, "kind": "function", "modifiers": [], "name": "deployToken", "nameLocation": "2117:11:38", "nodeType": "FunctionDefinition", "parameters": {"id": 8318, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8313, "mutability": "mutable", "name": "_totalSupply", "nameLocation": "2146:12:38", "nodeType": "VariableDeclaration", "scope": 8343, "src": "2138:20:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8312, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2138:7:38", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8315, "mutability": "mutable", "name": "_name", "nameLocation": "2182:5:38", "nodeType": "VariableDeclaration", "scope": 8343, "src": "2168:19:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8314, "name": "string", "nodeType": "ElementaryTypeName", "src": "2168:6:38", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8317, "mutability": "mutable", "name": "_symbol", "nameLocation": "2211:7:38", "nodeType": "VariableDeclaration", "scope": 8343, "src": "2197:21:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8316, "name": "string", "nodeType": "ElementaryTypeName", "src": "2197:6:38", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2128:96:38"}, "returnParameters": {"id": 8321, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8320, "mutability": "mutable", "name": "token_", "nameLocation": "2251:6:38", "nodeType": "VariableDeclaration", "scope": 8343, "src": "2243:14:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8319, "name": "address", "nodeType": "ElementaryTypeName", "src": "2243:7:38", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2242:16:38"}, "scope": 8401, "src": "2108:290:38", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [8889], "body": {"id": 8399, "nodeType": "Block", "src": "2861:299:38", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 8361, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 8356, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8243, "src": "2879:11:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 8359, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2902:1:38", "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": 8358, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2894:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8357, "name": "address", "nodeType": "ElementaryTypeName", "src": "2894:7:38", "typeDescriptions": {}}}, "id": 8360, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2894:10:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2879:25:38", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4c6561726e546f4561726e2061646472657373206973206e6f742076616c6964", "id": 8362, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2906:34:38", "typeDescriptions": {"typeIdentifier": "t_stringliteral_e45ddec8cf1d5d9cee2b8ead83e3387b5c6f4942841363d86bcd1848a75adc94", "typeString": "literal_string \"LearnToEarn address is not valid\""}, "value": "LearnToEarn address is not valid"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_e45ddec8cf1d5d9cee2b8ead83e3387b5c6f4942841363d86bcd1848a75adc94", "typeString": "literal_string \"LearnToEarn address is not valid\""}], "id": 8355, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2871:7:38", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8363, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2871:70:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8364, "nodeType": "ExpressionStatement", "src": "2871:70:38"}, {"assignments": [8367], "declarations": [{"constant": false, "id": 8367, "mutability": "mutable", "name": "nft_", "nameLocation": "2962:4:38", "nodeType": "VariableDeclaration", "scope": 8399, "src": "2951:15:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}, "typeName": {"id": 8366, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8365, "name": "INFTReward", "nameLocations": ["2951:10:38"], "nodeType": "IdentifierPath", "referencedDeclaration": 8572, "src": "2951:10:38"}, "referencedDeclaration": 8572, "src": "2951:10:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "visibility": "internal"}], "id": 8377, "initialValue": {"arguments": [{"arguments": [{"arguments": [{"id": 8373, "name": "templateNFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8247, "src": "3001:17:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}], "id": 8372, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2993:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8371, "name": "address", "nodeType": "ElementaryTypeName", "src": "2993:7:38", "typeDescriptions": {}}}, "id": 8374, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2993:26:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"id": 8369, "name": "Clones", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2888, "src": "2980:6:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_Clones_$2888_$", "typeString": "type(library Clones)"}}, "id": 8370, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2987:5:38", "memberName": "clone", "nodeType": "MemberAccess", "referencedDeclaration": 2831, "src": "2980:12:38", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$", "typeString": "function (address) returns (address)"}}, "id": 8375, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2980:40:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 8368, "name": "INFTReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8572, "src": "2969:10:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_INFTReward_$8572_$", "typeString": "type(contract INFTReward)"}}, "id": 8376, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2969:52:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "nodeType": "VariableDeclarationStatement", "src": "2951:70:38"}, {"expression": {"arguments": [{"id": 8381, "name": "learnToEarn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8243, "src": "3047:11:38", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 8382, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8346, "src": "3060:5:38", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 8383, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8348, "src": "3067:7:38", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 8384, "name": "_uri", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8350, "src": "3076:4:38", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "expression": {"id": 8378, "name": "nft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8367, "src": "3031:4:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}, "id": 8380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3036:10:38", "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 8571, "src": "3031:15:38", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (address,string memory,string memory,string memory) external"}}, "id": 8385, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3031:50:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8386, "nodeType": "ExpressionStatement", "src": "3031:50:38"}, {"eventCall": {"arguments": [{"arguments": [{"id": 8390, "name": "nft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8367, "src": "3117:4:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}], "id": 8389, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3109:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8388, "name": "address", "nodeType": "ElementaryTypeName", "src": "3109:7:38", "typeDescriptions": {}}}, "id": 8391, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3109:13:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 8387, "name": "DeployedNFT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8865, "src": "3097:11:38", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 8392, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3097:26:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8393, "nodeType": "EmitStatement", "src": "3092:31:38"}, {"expression": {"arguments": [{"id": 8396, "name": "nft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8367, "src": "3148:4:38", "typeDescriptions": {"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_INFTReward_$8572", "typeString": "contract INFTReward"}], "id": 8395, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3140:7:38", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 8394, "name": "address", "nodeType": "ElementaryTypeName", "src": "3140:7:38", "typeDescriptions": {}}}, "id": 8397, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3140:13:38", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 8354, "id": 8398, "nodeType": "Return", "src": "3133:20:38"}]}, "documentation": {"id": 8344, "nodeType": "StructuredDocumentation", "src": "2408:338:38", "text": " @dev Using Clones library to clone a contract instead of deploying new contract\n @notice Deploy new contract to mint NFT\n @param _name Name of NFT\n @param _symbol Symbol of NFT\n @param _uri Ipfs of NFT\n @return address(nft_) address of new contract\n \n emit {DeployedNFT} events"}, "functionSelector": "7309fe22", "id": 8400, "implemented": true, "kind": "function", "modifiers": [], "name": "deployNFT", "nameLocation": "2760:9:38", "nodeType": "FunctionDefinition", "parameters": {"id": 8351, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8346, "mutability": "mutable", "name": "_name", "nameLocation": "2784:5:38", "nodeType": "VariableDeclaration", "scope": 8400, "src": "2770:19:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8345, "name": "string", "nodeType": "ElementaryTypeName", "src": "2770:6:38", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8348, "mutability": "mutable", "name": "_symbol", "nameLocation": "2805:7:38", "nodeType": "VariableDeclaration", "scope": 8400, "src": "2791:21:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8347, "name": "string", "nodeType": "ElementaryTypeName", "src": "2791:6:38", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8350, "mutability": "mutable", "name": "_uri", "nameLocation": "2828:4:38", "nodeType": "VariableDeclaration", "scope": 8400, "src": "2814:18:38", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8349, "name": "string", "nodeType": "ElementaryTypeName", "src": "2814:6:38", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2769:64:38"}, "returnParameters": {"id": 8354, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8353, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 8400, "src": "2852:7:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8352, "name": "address", "nodeType": "ElementaryTypeName", "src": "2852:7:38", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2851:9:38"}, "scope": 8401, "src": "2751:409:38", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 8402, "src": "619:2543:38", "usedErrors": []}], "src": "32:3131:38"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/ILearnToEarn.sol": {"AST": {"absolutePath": "contracts/interfaces/ILearnToEarn.sol", "exportedSymbols": {"Course": [8428], "ILearnToEarn": [8537], "Learner": [8438]}, "id": 8538, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 8403, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:39"}, {"canonicalName": "Course", "id": 8428, "members": [{"constant": false, "id": 8405, "mutability": "mutable", "name": "creator", "nameLocation": "85:7:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "77:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8404, "name": "address", "nodeType": "ElementaryTypeName", "src": "77:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8407, "mutability": "mutable", "name": "rewardAddress", "nameLocation": "106:13:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "98:21:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8406, "name": "address", "nodeType": "ElementaryTypeName", "src": "98:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8409, "mutability": "mutable", "name": "budget", "nameLocation": "133:6:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "125:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8408, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "125:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8411, "mutability": "mutable", "name": "budgetAvailable", "nameLocation": "153:15:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "145:23:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8410, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "145:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8413, "mutability": "mutable", "name": "bonus", "nameLocation": "182:5:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "174:13:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8412, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "174:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8415, "mutability": "mutable", "name": "totalLearnersClaimedBonus", "nameLocation": "201:25:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "193:33:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8414, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8417, "mutability": "mutable", "name": "timeCreated", "nameLocation": "240:11:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "232:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8416, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "232:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8419, "mutability": "mutable", "name": "timeEndBonus", "nameLocation": "265:12:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "257:20:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8418, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "257:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8421, "mutability": "mutable", "name": "timeRemoved", "nameLocation": "291:11:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "283:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8420, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "283:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8423, "mutability": "mutable", "name": "isBonusToken", "nameLocation": "313:12:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "308:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8422, "name": "bool", "nodeType": "ElementaryTypeName", "src": "308:4:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 8425, "mutability": "mutable", "name": "canMintNFT", "nameLocation": "336:10:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "331:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8424, "name": "bool", "nodeType": "ElementaryTypeName", "src": "331:4:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 8427, "mutability": "mutable", "name": "isUsingDuration", "nameLocation": "357:15:39", "nodeType": "VariableDeclaration", "scope": 8428, "src": "352:20:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8426, "name": "bool", "nodeType": "ElementaryTypeName", "src": "352:4:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "name": "Course", "nameLocation": "64:6:39", "nodeType": "StructDefinition", "scope": 8538, "src": "57:318:39", "visibility": "public"}, {"canonicalName": "Learner", "id": 8438, "members": [{"constant": false, "id": 8430, "mutability": "mutable", "name": "timeStarted", "nameLocation": "406:11:39", "nodeType": "VariableDeclaration", "scope": 8438, "src": "398:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8429, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "398:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8432, "mutability": "mutable", "name": "timeCompleted", "nameLocation": "431:13:39", "nodeType": "VariableDeclaration", "scope": 8438, "src": "423:21:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8431, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "423:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8434, "mutability": "mutable", "name": "timeRewarded", "nameLocation": "458:12:39", "nodeType": "VariableDeclaration", "scope": 8438, "src": "450:20:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8437, "mutability": "mutable", "name": "nftIds", "nameLocation": "486:6:39", "nodeType": "VariableDeclaration", "scope": 8438, "src": "476:16:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 8435, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "476:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8436, "nodeType": "ArrayTypeName", "src": "476:9:39", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "visibility": "internal"}], "name": "Learner", "nameLocation": "384:7:39", "nodeType": "StructDefinition", "scope": 8538, "src": "377:118:39", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "ILearnToEarn", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 8537, "linearizedBaseContracts": [8537], "name": "ILearnToEarn", "nameLocation": "508:12:39", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "ef048bc89a4d92f598f18e11c600d5cc675b387c770c6c49012d166043db64a2", "id": 8450, "name": "CreatedCourse", "nameLocation": "533:13:39", "nodeType": "EventDefinition", "parameters": {"id": 8449, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8440, "indexed": true, "mutability": "mutable", "name": "courseId", "nameLocation": "563:8:39", "nodeType": "VariableDeclaration", "scope": 8450, "src": "547:24:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8439, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "547:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8442, "indexed": false, "mutability": "mutable", "name": "creator", "nameLocation": "581:7:39", "nodeType": "VariableDeclaration", "scope": 8450, "src": "573:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8441, "name": "address", "nodeType": "ElementaryTypeName", "src": "573:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8444, "indexed": false, "mutability": "mutable", "name": "token", "nameLocation": "598:5:39", "nodeType": "VariableDeclaration", "scope": 8450, "src": "590:13:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8443, "name": "address", "nodeType": "ElementaryTypeName", "src": "590:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8446, "indexed": false, "mutability": "mutable", "name": "bonus", "nameLocation": "613:5:39", "nodeType": "VariableDeclaration", "scope": 8450, "src": "605:13:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8445, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "605:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8448, "indexed": false, "mutability": "mutable", "name": "timeStarted", "nameLocation": "628:11:39", "nodeType": "VariableDeclaration", "scope": 8450, "src": "620:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8447, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "620:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "546:94:39"}, "src": "527:114:39"}, {"anonymous": false, "eventSelector": "5cd42cadabfcfe861e1f12322ae257de37d1240ae38863b4c8b0b50fd0e32a26", "id": 8456, "name": "AddedBudget", "nameLocation": "652:11:39", "nodeType": "EventDefinition", "parameters": {"id": 8455, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8452, "indexed": true, "mutability": "mutable", "name": "courseId", "nameLocation": "680:8:39", "nodeType": "VariableDeclaration", "scope": 8456, "src": "664:24:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8451, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "664:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8454, "indexed": false, "mutability": "mutable", "name": "budget", "nameLocation": "698:6:39", "nodeType": "VariableDeclaration", "scope": 8456, "src": "690:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8453, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "690:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "663:42:39"}, "src": "646:60:39"}, {"anonymous": false, "eventSelector": "b14f5aab91d7f1973be0a7f66b9f50b5da882aaf454b27c50d6a9d7b2172616c", "id": 8462, "name": "CompletedCourse", "nameLocation": "717:15:39", "nodeType": "EventDefinition", "parameters": {"id": 8461, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8458, "indexed": true, "mutability": "mutable", "name": "courseId", "nameLocation": "749:8:39", "nodeType": "VariableDeclaration", "scope": 8462, "src": "733:24:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8457, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "733:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8460, "indexed": false, "mutability": "mutable", "name": "learner", "nameLocation": "767:7:39", "nodeType": "VariableDeclaration", "scope": 8462, "src": "759:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8459, "name": "address", "nodeType": "ElementaryTypeName", "src": "759:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "732:43:39"}, "src": "711:65:39"}, {"anonymous": false, "eventSelector": "d7168ab8576ce4d8336598fe8c588ccb843823a522fe33c98365c3e082daa2ca", "id": 8475, "name": "ClaimedReward", "nameLocation": "787:13:39", "nodeType": "EventDefinition", "parameters": {"id": 8474, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8464, "indexed": true, "mutability": "mutable", "name": "courseId", "nameLocation": "817:8:39", "nodeType": "VariableDeclaration", "scope": 8475, "src": "801:24:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8463, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "801:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8466, "indexed": true, "mutability": "mutable", "name": "learner", "nameLocation": "843:7:39", "nodeType": "VariableDeclaration", "scope": 8475, "src": "827:23:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8465, "name": "address", "nodeType": "ElementaryTypeName", "src": "827:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8468, "indexed": true, "mutability": "mutable", "name": "rewardAddress", "nameLocation": "868:13:39", "nodeType": "VariableDeclaration", "scope": 8475, "src": "852:29:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8467, "name": "address", "nodeType": "ElementaryTypeName", "src": "852:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8470, "indexed": false, "mutability": "mutable", "name": "bonus", "nameLocation": "891:5:39", "nodeType": "VariableDeclaration", "scope": 8475, "src": "883:13:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8469, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "883:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8473, "indexed": false, "mutability": "mutable", "name": "nftIds", "nameLocation": "908:6:39", "nodeType": "VariableDeclaration", "scope": 8475, "src": "898:16:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 8471, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "898:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8472, "nodeType": "ArrayTypeName", "src": "898:9:39", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "visibility": "internal"}], "src": "800:115:39"}, "src": "781:135:39"}, {"anonymous": false, "eventSelector": "aa558890c86253324a06b9e861f61281fd0810f170827987572e7123581a779f", "id": 8483, "name": "WithdrawnBudget", "nameLocation": "927:15:39", "nodeType": "EventDefinition", "parameters": {"id": 8482, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8477, "indexed": true, "mutability": "mutable", "name": "courseId", "nameLocation": "959:8:39", "nodeType": "VariableDeclaration", "scope": 8483, "src": "943:24:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8476, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "943:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8479, "indexed": true, "mutability": "mutable", "name": "creator", "nameLocation": "985:7:39", "nodeType": "VariableDeclaration", "scope": 8483, "src": "969:23:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8478, "name": "address", "nodeType": "ElementaryTypeName", "src": "969:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8481, "indexed": false, "mutability": "mutable", "name": "amount", "nameLocation": "1002:6:39", "nodeType": "VariableDeclaration", "scope": 8483, "src": "994:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8480, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "994:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "942:67:39"}, "src": "921:89:39"}, {"anonymous": false, "eventSelector": "10156d1d3e0caa069c8a10325a1dae1512b2ff6bb941c18e16194970746f30a4", "id": 8489, "name": "RemovedCourse", "nameLocation": "1021:13:39", "nodeType": "EventDefinition", "parameters": {"id": 8488, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8485, "indexed": true, "mutability": "mutable", "name": "courseId", "nameLocation": "1051:8:39", "nodeType": "VariableDeclaration", "scope": 8489, "src": "1035:24:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8484, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1035:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8487, "indexed": true, "mutability": "mutable", "name": "creator", "nameLocation": "1077:7:39", "nodeType": "VariableDeclaration", "scope": 8489, "src": "1061:23:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8486, "name": "address", "nodeType": "ElementaryTypeName", "src": "1061:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1034:51:39"}, "src": "1015:71:39"}, {"documentation": {"id": 8490, "nodeType": "StructuredDocumentation", "src": "1092:603:39", "text": " @notice Create new course\n @param _rewardAddress Address of token that reward to student after completing course\n @param _budget Total tokens/NFTs that reward\n @param _bonus Bonus when learner completed course\n @param _timeStart Start time of course\n @param _timeEndBonus end date will finish bonus or duration to receive bonus after enrolling in course \n @param _isUsingDuration Using duration for rewarding (true) or using end time (false)\n @param _isBonusToken Awards is token (true) or NFT (false)\n emit {CreatedCourse} event"}, "functionSelector": "b149fd18", "id": 8507, "implemented": false, "kind": "function", "modifiers": [], "name": "createCourse", "nameLocation": "1709:12:39", "nodeType": "FunctionDefinition", "parameters": {"id": 8505, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8492, "mutability": "mutable", "name": "_rewardAddress", "nameLocation": "1730:14:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1722:22:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8491, "name": "address", "nodeType": "ElementaryTypeName", "src": "1722:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8494, "mutability": "mutable", "name": "_budget", "nameLocation": "1754:7:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1746:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8493, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1746:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8496, "mutability": "mutable", "name": "_bonus", "nameLocation": "1771:6:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1763:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8495, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1763:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8498, "mutability": "mutable", "name": "_timeStart", "nameLocation": "1787:10:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1779:18:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8497, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1779:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8500, "mutability": "mutable", "name": "_timeEndBonus", "nameLocation": "1807:13:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1799:21:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8499, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1799:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8502, "mutability": "mutable", "name": "_isUsingDuration", "nameLocation": "1827:16:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1822:21:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8501, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1822:4:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 8504, "mutability": "mutable", "name": "_isBonusToken", "nameLocation": "1850:13:39", "nodeType": "VariableDeclaration", "scope": 8507, "src": "1845:18:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8503, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1845:4:39", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1721:143:39"}, "returnParameters": {"id": 8506, "nodeType": "ParameterList", "parameters": [], "src": "1873:0:39"}, "scope": 8537, "src": "1700:174:39", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8508, "nodeType": "StructuredDocumentation", "src": "1880:179:39", "text": " @notice Add more budget to course\n @param _courseId Id of course\n @param _budget Budget that added to course\n emit {AddedBudget} events"}, "functionSelector": "caca4ad3", "id": 8515, "implemented": false, "kind": "function", "modifiers": [], "name": "addBudget", "nameLocation": "2073:9:39", "nodeType": "FunctionDefinition", "parameters": {"id": 8513, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8510, "mutability": "mutable", "name": "_courseId", "nameLocation": "2091:9:39", "nodeType": "VariableDeclaration", "scope": 8515, "src": "2083:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8509, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2083:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8512, "mutability": "mutable", "name": "_budget", "nameLocation": "2110:7:39", "nodeType": "VariableDeclaration", "scope": 8515, "src": "2102:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8511, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2102:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2082:36:39"}, "returnParameters": {"id": 8514, "nodeType": "ParameterList", "parameters": [], "src": "2127:0:39"}, "scope": 8537, "src": "2064:64:39", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8516, "nodeType": "StructuredDocumentation", "src": "2134:331:39", "text": " @notice Mark as learner completed course when the user submitted all assignments and accepted by creator\n @param _courseId Id of course\n @param _learner Address of learner\n @param _timeStarted Time when learner enrollred in course\n @param _nftIds List Id of nfts that learner will receive"}, "functionSelector": "3c41b482", "id": 8530, "implemented": false, "kind": "function", "modifiers": [], "name": "completeCourse", "nameLocation": "2479:14:39", "nodeType": "FunctionDefinition", "parameters": {"id": 8528, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8518, "mutability": "mutable", "name": "_courseId", "nameLocation": "2502:9:39", "nodeType": "VariableDeclaration", "scope": 8530, "src": "2494:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8517, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2494:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8520, "mutability": "mutable", "name": "_learner", "nameLocation": "2521:8:39", "nodeType": "VariableDeclaration", "scope": 8530, "src": "2513:16:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8519, "name": "address", "nodeType": "ElementaryTypeName", "src": "2513:7:39", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8522, "mutability": "mutable", "name": "_timeStarted", "nameLocation": "2539:12:39", "nodeType": "VariableDeclaration", "scope": 8530, "src": "2531:20:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8521, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2531:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8524, "mutability": "mutable", "name": "_timeCompleted", "nameLocation": "2561:14:39", "nodeType": "VariableDeclaration", "scope": 8530, "src": "2553:22:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8523, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2553:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8527, "mutability": "mutable", "name": "_nftIds", "nameLocation": "2594:7:39", "nodeType": "VariableDeclaration", "scope": 8530, "src": "2577:24:39", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 8525, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2577:7:39", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8526, "nodeType": "ArrayTypeName", "src": "2577:9:39", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "visibility": "internal"}], "src": "2493:109:39"}, "returnParameters": {"id": 8529, "nodeType": "ParameterList", "parameters": [], "src": "2611:0:39"}, "scope": 8537, "src": "2470:142:39", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8531, "nodeType": "StructuredDocumentation", "src": "2618:124:39", "text": " @notice Creator can withdraw tokens bonus after time bonus ended\n @param _courseId Id of the course"}, "functionSelector": "669e88a1", "id": 8536, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawBudget", "nameLocation": "2756:14:39", "nodeType": "FunctionDefinition", "parameters": {"id": 8534, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8533, "mutability": "mutable", "name": "_courseId", "nameLocation": "2779:9:39", "nodeType": "VariableDeclaration", "scope": 8536, "src": "2771:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8532, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2771:7:39", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2770:19:39"}, "returnParameters": {"id": 8535, "nodeType": "ParameterList", "parameters": [], "src": "2798:0:39"}, "scope": 8537, "src": "2747:52:39", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 8538, "src": "498:2303:39", "usedErrors": []}], "src": "32:2770:39"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/INFTReward.sol": {"AST": {"absolutePath": "contracts/interfaces/INFTReward.sol", "exportedSymbols": {"IERC721Upgradeable": [1762], "INFTReward": [8572]}, "id": 8573, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 8539, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:40"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", "id": 8541, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 8573, "sourceUnit": 1629, "src": "56:108:40", "symbolAliases": [{"foreign": {"id": 8540, "name": "IERC721Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1762, "src": "65:18:40", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 8542, "name": "IERC721Upgradeable", "nameLocations": ["190:18:40"], "nodeType": "IdentifierPath", "referencedDeclaration": 1762, "src": "190:18:40"}, "id": 8543, "nodeType": "InheritanceSpecifier", "src": "190:18:40"}], "canonicalName": "INFTReward", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 8572, "linearizedBaseContracts": [8572, 1762, 2695], "name": "INFTReward", "nameLocation": "176:10:40", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "e7cd4ce7f2a465edc730269a1305e8a48bad821e8fb7e152ec413829c01a53c4", "id": 8551, "name": "Minted", "nameLocation": "221:6:40", "nodeType": "EventDefinition", "parameters": {"id": 8550, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8545, "indexed": false, "mutability": "mutable", "name": "account", "nameLocation": "236:7:40", "nodeType": "VariableDeclaration", "scope": 8551, "src": "228:15:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8544, "name": "address", "nodeType": "ElementaryTypeName", "src": "228:7:40", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8547, "indexed": false, "mutability": "mutable", "name": "tokenId", "nameLocation": "253:7:40", "nodeType": "VariableDeclaration", "scope": 8551, "src": "245:15:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8546, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "245:7:40", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8549, "indexed": false, "mutability": "mutable", "name": "uri", "nameLocation": "269:3:40", "nodeType": "VariableDeclaration", "scope": 8551, "src": "262:10:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8548, "name": "string", "nodeType": "ElementaryTypeName", "src": "262:6:40", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "227:46:40"}, "src": "215:59:40"}, {"documentation": {"id": 8552, "nodeType": "StructuredDocumentation", "src": "280:125:40", "text": " @notice mint a NFT for _to address\n @param _to address of user\n \n emit { Minted } events"}, "functionSelector": "6a627842", "id": 8559, "implemented": false, "kind": "function", "modifiers": [], "name": "mint", "nameLocation": "419:4:40", "nodeType": "FunctionDefinition", "parameters": {"id": 8555, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8554, "mutability": "mutable", "name": "_to", "nameLocation": "432:3:40", "nodeType": "VariableDeclaration", "scope": 8559, "src": "424:11:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8553, "name": "address", "nodeType": "ElementaryTypeName", "src": "424:7:40", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "423:13:40"}, "returnParameters": {"id": 8558, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8557, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 8559, "src": "454:7:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8556, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "454:7:40", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "453:9:40"}, "scope": 8572, "src": "410:53:40", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8560, "nodeType": "StructuredDocumentation", "src": "469:210:40", "text": " @notice Replace for contructor\n @param _learnToEarn Address of LearnToEarn contract\n @param _name Name of NFTs\n @param _symbol Symbol of NFTs\n @param _uri ipfs of NFts"}, "functionSelector": "5f1e6f6d", "id": 8571, "implemented": false, "kind": "function", "modifiers": [], "name": "initialize", "nameLocation": "693:10:40", "nodeType": "FunctionDefinition", "parameters": {"id": 8569, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8562, "mutability": "mutable", "name": "_learnToEarn", "nameLocation": "712:12:40", "nodeType": "VariableDeclaration", "scope": 8571, "src": "704:20:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8561, "name": "address", "nodeType": "ElementaryTypeName", "src": "704:7:40", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8564, "mutability": "mutable", "name": "_name", "nameLocation": "740:5:40", "nodeType": "VariableDeclaration", "scope": 8571, "src": "726:19:40", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8563, "name": "string", "nodeType": "ElementaryTypeName", "src": "726:6:40", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8566, "mutability": "mutable", "name": "_symbol", "nameLocation": "761:7:40", "nodeType": "VariableDeclaration", "scope": 8571, "src": "747:21:40", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8565, "name": "string", "nodeType": "ElementaryTypeName", "src": "747:6:40", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8568, "mutability": "mutable", "name": "_uri", "nameLocation": "784:4:40", "nodeType": "VariableDeclaration", "scope": 8571, "src": "770:18:40", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8567, "name": "string", "nodeType": "ElementaryTypeName", "src": "770:6:40", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "703:86:40"}, "returnParameters": {"id": 8570, "nodeType": "ParameterList", "parameters": [], "src": "798:0:40"}, "scope": 8572, "src": "684:115:40", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 8573, "src": "166:635:40", "usedErrors": []}], "src": "32:769:40"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/IReBakedDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/IReBakedDAO.sol", "exportedSymbols": {"IReBakedDAO": [8847]}, "id": 8848, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 8574, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:41"}, {"abstract": false, "baseContracts": [], "canonicalName": "IReBakedDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 8847, "linearizedBaseContracts": [8847], "name": "IReBakedDAO", "nameLocation": "67:11:41", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "2ac12ebf7dfd56173c73b2e43941f0faed1c3f7fb6f959191a4ab4bdd3d32e21", "id": 8580, "name": "UpdatedTreasury", "nameLocation": "91:15:41", "nodeType": "EventDefinition", "parameters": {"id": 8579, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8576, "indexed": false, "mutability": "mutable", "name": "oldTreasury", "nameLocation": "115:11:41", "nodeType": "VariableDeclaration", "scope": 8580, "src": "107:19:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8575, "name": "address", "nodeType": "ElementaryTypeName", "src": "107:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8578, "indexed": false, "mutability": "mutable", "name": "newTreasury", "nameLocation": "136:11:41", "nodeType": "VariableDeclaration", "scope": 8580, "src": "128:19:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8577, "name": "address", "nodeType": "ElementaryTypeName", "src": "128:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "106:42:41"}, "src": "85:64:41"}, {"anonymous": false, "eventSelector": "e13f31eeb084676e55593cb99c5bef76fadde467d9bc2653f56a4c9c3f3302c6", "id": 8590, "name": "CreatedProject", "nameLocation": "160:14:41", "nodeType": "EventDefinition", "parameters": {"id": 8589, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8582, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "191:9:41", "nodeType": "VariableDeclaration", "scope": 8590, "src": "175:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8581, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "175:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8584, "indexed": false, "mutability": "mutable", "name": "initiator", "nameLocation": "210:9:41", "nodeType": "VariableDeclaration", "scope": 8590, "src": "202:17:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8583, "name": "address", "nodeType": "ElementaryTypeName", "src": "202:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8586, "indexed": false, "mutability": "mutable", "name": "token", "nameLocation": "229:5:41", "nodeType": "VariableDeclaration", "scope": 8590, "src": "221:13:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8585, "name": "address", "nodeType": "ElementaryTypeName", "src": "221:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8588, "indexed": false, "mutability": "mutable", "name": "budget", "nameLocation": "244:6:41", "nodeType": "VariableDeclaration", "scope": 8590, "src": "236:14:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8587, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "236:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "174:77:41"}, "src": "154:98:41"}, {"anonymous": false, "eventSelector": "12962f2a364d2a11057d83ee13838ccc9ef2cfcabf5948f69117d12676f7fb97", "id": 8594, "name": "StartedProject", "nameLocation": "263:14:41", "nodeType": "EventDefinition", "parameters": {"id": 8593, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8592, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "294:9:41", "nodeType": "VariableDeclaration", "scope": 8594, "src": "278:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8591, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "278:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "277:27:41"}, "src": "257:48:41"}, {"anonymous": false, "eventSelector": "f8cff203664824068f2b9b06611412aa2f566078fb8d0ffdbbc9eb3b11042b18", "id": 8598, "name": "ApprovedProject", "nameLocation": "316:15:41", "nodeType": "EventDefinition", "parameters": {"id": 8597, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8596, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "348:9:41", "nodeType": "VariableDeclaration", "scope": 8598, "src": "332:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8595, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "332:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "331:27:41"}, "src": "310:49:41"}, {"anonymous": false, "eventSelector": "57854ae7fa7dd108a735bb91879e7ef3ba109e004981ca9d6df5f72510ddb731", "id": 8604, "name": "FinishedProject", "nameLocation": "370:15:41", "nodeType": "EventDefinition", "parameters": {"id": 8603, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8600, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "402:9:41", "nodeType": "VariableDeclaration", "scope": 8604, "src": "386:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8599, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "386:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8602, "indexed": false, "mutability": "mutable", "name": "budgetLeft", "nameLocation": "421:10:41", "nodeType": "VariableDeclaration", "scope": 8604, "src": "413:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8601, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "413:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "385:47:41"}, "src": "364:69:41"}, {"anonymous": false, "eventSelector": "078c5efce40e0c0891ebda17cfbf5d7cdd9d5eb4afb16375d39b8243451871e2", "id": 8616, "name": "CreatedPackage", "nameLocation": "444:14:41", "nodeType": "EventDefinition", "parameters": {"id": 8615, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8606, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "475:9:41", "nodeType": "VariableDeclaration", "scope": 8616, "src": "459:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8605, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "459:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8608, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "502:9:41", "nodeType": "VariableDeclaration", "scope": 8616, "src": "486:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8607, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "486:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8610, "indexed": false, "mutability": "mutable", "name": "budget", "nameLocation": "521:6:41", "nodeType": "VariableDeclaration", "scope": 8616, "src": "513:14:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8609, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "513:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8612, "indexed": false, "mutability": "mutable", "name": "bonus", "nameLocation": "537:5:41", "nodeType": "VariableDeclaration", "scope": 8616, "src": "529:13:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8611, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "529:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8614, "indexed": false, "mutability": "mutable", "name": "observerBudget", "nameLocation": "552:14:41", "nodeType": "VariableDeclaration", "scope": 8616, "src": "544:22:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8613, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "544:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "458:109:41"}, "src": "438:130:41"}, {"anonymous": false, "eventSelector": "b1cc0cc3834b00e41fce4d1b26e0683b2457f753ec2683b88651d001476a6e38", "id": 8625, "name": "AddedObservers", "nameLocation": "579:14:41", "nodeType": "EventDefinition", "parameters": {"id": 8624, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8618, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "610:9:41", "nodeType": "VariableDeclaration", "scope": 8625, "src": "594:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8617, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "594:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8620, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "637:9:41", "nodeType": "VariableDeclaration", "scope": 8625, "src": "621:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8619, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "621:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8623, "indexed": false, "mutability": "mutable", "name": "observers", "nameLocation": "658:9:41", "nodeType": "VariableDeclaration", "scope": 8625, "src": "648:19:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8621, "name": "address", "nodeType": "ElementaryTypeName", "src": "648:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8622, "nodeType": "ArrayTypeName", "src": "648:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "593:75:41"}, "src": "573:96:41"}, {"anonymous": false, "eventSelector": "85572f85b2bc590a66fd61ccb26b098a3e1e5be48c230a5cc1f4c1d23603d1e1", "id": 8634, "name": "RemovedObservers", "nameLocation": "680:16:41", "nodeType": "EventDefinition", "parameters": {"id": 8633, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8627, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "713:9:41", "nodeType": "VariableDeclaration", "scope": 8634, "src": "697:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8626, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "697:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8629, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "740:9:41", "nodeType": "VariableDeclaration", "scope": 8634, "src": "724:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8628, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "724:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8632, "indexed": false, "mutability": "mutable", "name": "observers", "nameLocation": "761:9:41", "nodeType": "VariableDeclaration", "scope": 8634, "src": "751:19:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8630, "name": "address", "nodeType": "ElementaryTypeName", "src": "751:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8631, "nodeType": "ArrayTypeName", "src": "751:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "696:75:41"}, "src": "674:98:41"}, {"anonymous": false, "eventSelector": "8aa39f8fa6c78a00b31a805b7955eb3e38d4cb7bd4d87c84655269141bd8477e", "id": 8644, "name": "AddedCollaborator", "nameLocation": "783:17:41", "nodeType": "EventDefinition", "parameters": {"id": 8643, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8636, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "817:9:41", "nodeType": "VariableDeclaration", "scope": 8644, "src": "801:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8635, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "801:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8638, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "844:9:41", "nodeType": "VariableDeclaration", "scope": 8644, "src": "828:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8637, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "828:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8640, "indexed": false, "mutability": "mutable", "name": "collaborator", "nameLocation": "863:12:41", "nodeType": "VariableDeclaration", "scope": 8644, "src": "855:20:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8639, "name": "address", "nodeType": "ElementaryTypeName", "src": "855:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8642, "indexed": false, "mutability": "mutable", "name": "mgp", "nameLocation": "885:3:41", "nodeType": "VariableDeclaration", "scope": 8644, "src": "877:11:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8641, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "877:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "800:89:41"}, "src": "777:113:41"}, {"anonymous": false, "eventSelector": "89d75bad6a27d516d326126cd95a5626e99ce9548579494bb6d51f59b9c88783", "id": 8652, "name": "ApprovedCollaborator", "nameLocation": "901:20:41", "nodeType": "EventDefinition", "parameters": {"id": 8651, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8646, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "938:9:41", "nodeType": "VariableDeclaration", "scope": 8652, "src": "922:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8645, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "922:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8648, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "965:9:41", "nodeType": "VariableDeclaration", "scope": 8652, "src": "949:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8647, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "949:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8650, "indexed": false, "mutability": "mutable", "name": "collaborator", "nameLocation": "984:12:41", "nodeType": "VariableDeclaration", "scope": 8652, "src": "976:20:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8649, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "921:76:41"}, "src": "895:103:41"}, {"anonymous": false, "eventSelector": "1810672a3dad8f995260ba0777de0e36f462980ce02a3951804f83aac9c2d455", "id": 8660, "name": "RemovedCollaborator", "nameLocation": "1009:19:41", "nodeType": "EventDefinition", "parameters": {"id": 8659, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8654, "indexed": true, "mutability": "mutable", "name": "projectId_", "nameLocation": "1045:10:41", "nodeType": "VariableDeclaration", "scope": 8660, "src": "1029:26:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8653, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1029:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8656, "indexed": true, "mutability": "mutable", "name": "packageId_", "nameLocation": "1073:10:41", "nodeType": "VariableDeclaration", "scope": 8660, "src": "1057:26:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8655, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1057:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8658, "indexed": false, "mutability": "mutable", "name": "collaborator_", "nameLocation": "1093:13:41", "nodeType": "VariableDeclaration", "scope": 8660, "src": "1085:21:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8657, "name": "address", "nodeType": "ElementaryTypeName", "src": "1085:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1028:79:41"}, "src": "1003:105:41"}, {"anonymous": false, "eventSelector": "ca0673658d6abd07a7992b1c692276e95e5693b83c44ebcbc0f5661add8f274f", "id": 8668, "name": "FinishedPackage", "nameLocation": "1119:15:41", "nodeType": "EventDefinition", "parameters": {"id": 8667, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8662, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "1151:9:41", "nodeType": "VariableDeclaration", "scope": 8668, "src": "1135:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8661, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1135:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8664, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "1178:9:41", "nodeType": "VariableDeclaration", "scope": 8668, "src": "1162:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8663, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1162:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8666, "indexed": true, "mutability": "mutable", "name": "budgetLeft", "nameLocation": "1205:10:41", "nodeType": "VariableDeclaration", "scope": 8668, "src": "1189:26:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8665, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1189:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1134:82:41"}, "src": "1113:104:41"}, {"anonymous": false, "eventSelector": "56829e4c362b83a2633cd58ab80f95a4c661582416ca0dd74cf6844198ef9390", "id": 8676, "name": "CanceledPackage", "nameLocation": "1228:15:41", "nodeType": "EventDefinition", "parameters": {"id": 8675, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8670, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "1260:9:41", "nodeType": "VariableDeclaration", "scope": 8676, "src": "1244:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8669, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1244:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8672, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "1287:9:41", "nodeType": "VariableDeclaration", "scope": 8676, "src": "1271:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8671, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1271:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8674, "indexed": true, "mutability": "mutable", "name": "revertedBudget", "nameLocation": "1314:14:41", "nodeType": "VariableDeclaration", "scope": 8676, "src": "1298:30:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8673, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1298:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1243:86:41"}, "src": "1222:108:41"}, {"anonymous": false, "eventSelector": "f791dbe60269baac78be1afe586f70aa816e7a19b3ff88e228ca638e41142dae", "id": 8686, "name": "PaidObserverFee", "nameLocation": "1341:15:41", "nodeType": "EventDefinition", "parameters": {"id": 8685, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8678, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "1373:9:41", "nodeType": "VariableDeclaration", "scope": 8686, "src": "1357:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8677, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1357:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8680, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "1400:9:41", "nodeType": "VariableDeclaration", "scope": 8686, "src": "1384:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8679, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1384:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8682, "indexed": false, "mutability": "mutable", "name": "collaborator", "nameLocation": "1419:12:41", "nodeType": "VariableDeclaration", "scope": 8686, "src": "1411:20:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8681, "name": "address", "nodeType": "ElementaryTypeName", "src": "1411:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8684, "indexed": false, "mutability": "mutable", "name": "amount", "nameLocation": "1441:6:41", "nodeType": "VariableDeclaration", "scope": 8686, "src": "1433:14:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8683, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1433:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1356:92:41"}, "src": "1335:114:41"}, {"anonymous": false, "eventSelector": "53aa87b28abc70f0fb4d2402a35d5e4d91386b5b045ad43d598a715982e32d20", "id": 8698, "name": "PaidCollaboratorRewards", "nameLocation": "1460:23:41", "nodeType": "EventDefinition", "parameters": {"id": 8697, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8688, "indexed": true, "mutability": "mutable", "name": "projectId", "nameLocation": "1500:9:41", "nodeType": "VariableDeclaration", "scope": 8698, "src": "1484:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8687, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1484:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8690, "indexed": true, "mutability": "mutable", "name": "packageId", "nameLocation": "1527:9:41", "nodeType": "VariableDeclaration", "scope": 8698, "src": "1511:25:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8689, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1511:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8692, "indexed": false, "mutability": "mutable", "name": "collaborator", "nameLocation": "1546:12:41", "nodeType": "VariableDeclaration", "scope": 8698, "src": "1538:20:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8691, "name": "address", "nodeType": "ElementaryTypeName", "src": "1538:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8694, "indexed": false, "mutability": "mutable", "name": "mgp", "nameLocation": "1568:3:41", "nodeType": "VariableDeclaration", "scope": 8698, "src": "1560:11:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8693, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1560:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8696, "indexed": false, "mutability": "mutable", "name": "bonus", "nameLocation": "1581:5:41", "nodeType": "VariableDeclaration", "scope": 8698, "src": "1573:13:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8695, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1573:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1483:104:41"}, "src": "1454:134:41"}, {"documentation": {"id": 8699, "nodeType": "StructuredDocumentation", "src": "1594:121:41", "text": " @notice Update treasury address\n @param treasury_ Treasury address\n Emit {UpdatedTreasury}"}, "functionSelector": "7f51bb1f", "id": 8704, "implemented": false, "kind": "function", "modifiers": [], "name": "updateTreasury", "nameLocation": "1729:14:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8702, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8701, "mutability": "mutable", "name": "treasury_", "nameLocation": "1752:9:41", "nodeType": "VariableDeclaration", "scope": 8704, "src": "1744:17:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8700, "name": "address", "nodeType": "ElementaryTypeName", "src": "1744:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1743:19:41"}, "returnParameters": {"id": 8703, "nodeType": "ParameterList", "parameters": [], "src": "1771:0:41"}, "scope": 8847, "src": "1720:52:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8705, "nodeType": "StructuredDocumentation", "src": "1778:443:41", "text": " @dev Creates project proposal\n @param token_ project token address, zero addres if project has not token yet\n (IOUToken will be deployed on project approval)\n @param budget_ total budget (has to be approved on token contract if project has its own token)\n @dev (`token_` == ZERO_ADDRESS) ? project has no token yet : `IOUToken` will be deployed on project approval\n Emit {CreatedProject}"}, "functionSelector": "e82d6572", "id": 8712, "implemented": false, "kind": "function", "modifiers": [], "name": "createProject", "nameLocation": "2235:13:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8710, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8707, "mutability": "mutable", "name": "token_", "nameLocation": "2257:6:41", "nodeType": "VariableDeclaration", "scope": 8712, "src": "2249:14:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8706, "name": "address", "nodeType": "ElementaryTypeName", "src": "2249:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8709, "mutability": "mutable", "name": "budget_", "nameLocation": "2273:7:41", "nodeType": "VariableDeclaration", "scope": 8712, "src": "2265:15:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8708, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2265:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2248:33:41"}, "returnParameters": {"id": 8711, "nodeType": "ParameterList", "parameters": [], "src": "2290:0:41"}, "scope": 8847, "src": "2226:65:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8713, "nodeType": "StructuredDocumentation", "src": "2297:116:41", "text": " @notice Finishes project\n @param _projectId Id of the project\n Emit {FinishedProject}"}, "functionSelector": "85ceab29", "id": 8718, "implemented": false, "kind": "function", "modifiers": [], "name": "finishProject", "nameLocation": "2427:13:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8716, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8715, "mutability": "mutable", "name": "_projectId", "nameLocation": "2449:10:41", "nodeType": "VariableDeclaration", "scope": 8718, "src": "2441:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8714, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2441:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "2440:20:41"}, "returnParameters": {"id": 8717, "nodeType": "ParameterList", "parameters": [], "src": "2469:0:41"}, "scope": 8847, "src": "2418:52:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8719, "nodeType": "StructuredDocumentation", "src": "2476:337:41", "text": " @notice Creates package in project\n @param _projectId Id of the project\n @param _budget MGP budget\n @param _bonus Bonus budget\n @param _observerBudget Observer budget\n @param _collaboratorsLimit maximum collaborators\n @param _observers List of observers\n Emit {CreatedPackage}"}, "functionSelector": "b2b57114", "id": 8735, "implemented": false, "kind": "function", "modifiers": [], "name": "createPackage", "nameLocation": "2827:13:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8733, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8721, "mutability": "mutable", "name": "_projectId", "nameLocation": "2858:10:41", "nodeType": "VariableDeclaration", "scope": 8735, "src": "2850:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8720, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2850:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8723, "mutability": "mutable", "name": "_budget", "nameLocation": "2886:7:41", "nodeType": "VariableDeclaration", "scope": 8735, "src": "2878:15:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8722, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2878:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8725, "mutability": "mutable", "name": "_bonus", "nameLocation": "2911:6:41", "nodeType": "VariableDeclaration", "scope": 8735, "src": "2903:14:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8724, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2903:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8727, "mutability": "mutable", "name": "_observerBudget", "nameLocation": "2935:15:41", "nodeType": "VariableDeclaration", "scope": 8735, "src": "2927:23:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8726, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2927:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8729, "mutability": "mutable", "name": "_collaboratorsLimit", "nameLocation": "2968:19:41", "nodeType": "VariableDeclaration", "scope": 8735, "src": "2960:27:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8728, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2960:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8732, "mutability": "mutable", "name": "_observers", "nameLocation": "3014:10:41", "nodeType": "VariableDeclaration", "scope": 8735, "src": "2997:27:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8730, "name": "address", "nodeType": "ElementaryTypeName", "src": "2997:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8731, "nodeType": "ArrayTypeName", "src": "2997:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "2840:190:41"}, "returnParameters": {"id": 8734, "nodeType": "ParameterList", "parameters": [], "src": "3039:0:41"}, "scope": 8847, "src": "2818:222:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8736, "nodeType": "StructuredDocumentation", "src": "3046:333:41", "text": " @notice Finishes package in project\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborators List of collaborators\n @param _observers List of observers\n @param _scores List of bonus scores for collaborators\n \n Emit {FinishedPackage}"}, "functionSelector": "2926aa80", "id": 8752, "implemented": false, "kind": "function", "modifiers": [], "name": "finishPackage", "nameLocation": "3393:13:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8750, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8738, "mutability": "mutable", "name": "_projectId", "nameLocation": "3424:10:41", "nodeType": "VariableDeclaration", "scope": 8752, "src": "3416:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8737, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3416:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8740, "mutability": "mutable", "name": "_packageId", "nameLocation": "3452:10:41", "nodeType": "VariableDeclaration", "scope": 8752, "src": "3444:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8739, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3444:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8743, "mutability": "mutable", "name": "_collaborators", "nameLocation": "3489:14:41", "nodeType": "VariableDeclaration", "scope": 8752, "src": "3472:31:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8741, "name": "address", "nodeType": "ElementaryTypeName", "src": "3472:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8742, "nodeType": "ArrayTypeName", "src": "3472:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 8746, "mutability": "mutable", "name": "_observers", "nameLocation": "3530:10:41", "nodeType": "VariableDeclaration", "scope": 8752, "src": "3513:27:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8744, "name": "address", "nodeType": "ElementaryTypeName", "src": "3513:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8745, "nodeType": "ArrayTypeName", "src": "3513:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 8749, "mutability": "mutable", "name": "_scores", "nameLocation": "3567:7:41", "nodeType": "VariableDeclaration", "scope": 8752, "src": "3550:24:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 8747, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3550:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8748, "nodeType": "ArrayTypeName", "src": "3550:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "visibility": "internal"}], "src": "3406:174:41"}, "returnParameters": {"id": 8751, "nodeType": "ParameterList", "parameters": [], "src": "3589:0:41"}, "scope": 8847, "src": "3384:206:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8753, "nodeType": "StructuredDocumentation", "src": "3596:303:41", "text": " @notice Cancel package in project and release project budget\n @param _projectId Id of the project\n @param _packageId Id of the project\n @param _collaborators address of the collaborators\n @param _observers address of the observers\n Emit {CanceledPackage}"}, "functionSelector": "085f8a9c", "id": 8768, "implemented": false, "kind": "function", "modifiers": [], "name": "cancelPackage", "nameLocation": "3913:13:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8766, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8755, "mutability": "mutable", "name": "_projectId", "nameLocation": "3944:10:41", "nodeType": "VariableDeclaration", "scope": 8768, "src": "3936:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8754, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3936:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8757, "mutability": "mutable", "name": "_packageId", "nameLocation": "3972:10:41", "nodeType": "VariableDeclaration", "scope": 8768, "src": "3964:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8756, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3964:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8760, "mutability": "mutable", "name": "_collaborators", "nameLocation": "4009:14:41", "nodeType": "VariableDeclaration", "scope": 8768, "src": "3992:31:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8758, "name": "address", "nodeType": "ElementaryTypeName", "src": "3992:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8759, "nodeType": "ArrayTypeName", "src": "3992:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 8763, "mutability": "mutable", "name": "_observers", "nameLocation": "4050:10:41", "nodeType": "VariableDeclaration", "scope": 8768, "src": "4033:27:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8761, "name": "address", "nodeType": "ElementaryTypeName", "src": "4033:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8762, "nodeType": "ArrayTypeName", "src": "4033:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 8765, "mutability": "mutable", "name": "_workStarted", "nameLocation": "4075:12:41", "nodeType": "VariableDeclaration", "scope": 8768, "src": "4070:17:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8764, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4070:4:41", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "3926:167:41"}, "returnParameters": {"id": 8767, "nodeType": "ParameterList", "parameters": [], "src": "4102:0:41"}, "scope": 8847, "src": "3904:199:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8769, "nodeType": "StructuredDocumentation", "src": "4109:256:41", "text": " @notice Adds collaborator to package\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator collaborators' addresses\n @param _mgp MGP amount\n Emit {AddedCollaborator}"}, "functionSelector": "ec104ff1", "id": 8780, "implemented": false, "kind": "function", "modifiers": [], "name": "addCollaborator", "nameLocation": "4379:15:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8778, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8771, "mutability": "mutable", "name": "_projectId", "nameLocation": "4403:10:41", "nodeType": "VariableDeclaration", "scope": 8780, "src": "4395:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8770, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4395:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8773, "mutability": "mutable", "name": "_packageId", "nameLocation": "4423:10:41", "nodeType": "VariableDeclaration", "scope": 8780, "src": "4415:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8772, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4415:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8775, "mutability": "mutable", "name": "_collaborator", "nameLocation": "4443:13:41", "nodeType": "VariableDeclaration", "scope": 8780, "src": "4435:21:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8774, "name": "address", "nodeType": "ElementaryTypeName", "src": "4435:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8777, "mutability": "mutable", "name": "_mgp", "nameLocation": "4466:4:41", "nodeType": "VariableDeclaration", "scope": 8780, "src": "4458:12:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8776, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4458:7:41", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4394:77:41"}, "returnParameters": {"id": 8779, "nodeType": "ParameterList", "parameters": [], "src": "4480:0:41"}, "scope": 8847, "src": "4370:111:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8781, "nodeType": "StructuredDocumentation", "src": "4487:278:41", "text": " @notice Approves collaborator's MGP or deletes collaborator (should be called by admin)\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator collaborator's address\n Emit {ApprovedCollaborator}"}, "functionSelector": "dcce114e", "id": 8790, "implemented": false, "kind": "function", "modifiers": [], "name": "approveCollaborator", "nameLocation": "4779:19:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8788, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8783, "mutability": "mutable", "name": "_projectId", "nameLocation": "4807:10:41", "nodeType": "VariableDeclaration", "scope": 8790, "src": "4799:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8782, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4799:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8785, "mutability": "mutable", "name": "_packageId", "nameLocation": "4827:10:41", "nodeType": "VariableDeclaration", "scope": 8790, "src": "4819:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8784, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4819:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8787, "mutability": "mutable", "name": "_collaborator", "nameLocation": "4847:13:41", "nodeType": "VariableDeclaration", "scope": 8790, "src": "4839:21:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8786, "name": "address", "nodeType": "ElementaryTypeName", "src": "4839:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4798:63:41"}, "returnParameters": {"id": 8789, "nodeType": "ParameterList", "parameters": [], "src": "4870:0:41"}, "scope": 8847, "src": "4770:101:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8791, "nodeType": "StructuredDocumentation", "src": "4877:341:41", "text": " @notice Approves collaborator's MGP or deletes collaborator (should be called by admin)\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _collaborator collaborator's address\n @param _shouldPayMgp Should pay MGP for the collaborator\n Emit {RemovedCollaborator}"}, "functionSelector": "0eae9d88", "id": 8802, "implemented": false, "kind": "function", "modifiers": [], "name": "removeCollaborator", "nameLocation": "5232:18:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8800, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8793, "mutability": "mutable", "name": "_projectId", "nameLocation": "5259:10:41", "nodeType": "VariableDeclaration", "scope": 8802, "src": "5251:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8792, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5251:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8795, "mutability": "mutable", "name": "_packageId", "nameLocation": "5279:10:41", "nodeType": "VariableDeclaration", "scope": 8802, "src": "5271:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8794, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5271:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8797, "mutability": "mutable", "name": "_collaborator", "nameLocation": "5299:13:41", "nodeType": "VariableDeclaration", "scope": 8802, "src": "5291:21:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8796, "name": "address", "nodeType": "ElementaryTypeName", "src": "5291:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8799, "mutability": "mutable", "name": "_shouldPayMgp", "nameLocation": "5319:13:41", "nodeType": "VariableDeclaration", "scope": 8802, "src": "5314:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8798, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5314:4:41", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "5250:83:41"}, "returnParameters": {"id": 8801, "nodeType": "ParameterList", "parameters": [], "src": "5342:0:41"}, "scope": 8847, "src": "5223:120:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8803, "nodeType": "StructuredDocumentation", "src": "5349:171:41", "text": " @notice Self remove collaborator\n @param _projectId Id of the project\n @param _packageId Id of the package\n Emit {RemovedCollaborator}"}, "functionSelector": "03a1fc22", "id": 8810, "implemented": false, "kind": "function", "modifiers": [], "name": "selfRemove", "nameLocation": "5534:10:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8808, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8805, "mutability": "mutable", "name": "_projectId", "nameLocation": "5553:10:41", "nodeType": "VariableDeclaration", "scope": 8810, "src": "5545:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8804, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5545:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8807, "mutability": "mutable", "name": "_packageId", "nameLocation": "5573:10:41", "nodeType": "VariableDeclaration", "scope": 8810, "src": "5565:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8806, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5565:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}], "src": "5544:40:41"}, "returnParameters": {"id": 8809, "nodeType": "ParameterList", "parameters": [], "src": "5593:0:41"}, "scope": 8847, "src": "5525:69:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8811, "nodeType": "StructuredDocumentation", "src": "5600:213:41", "text": " @notice Adds observers to package\n @param _projectId Id of the project\n @param _packageId Id of the package\n @param _observers observers' addresses\n Emit {AddedObservers}"}, "functionSelector": "be06555e", "id": 8821, "implemented": false, "kind": "function", "modifiers": [], "name": "addObservers", "nameLocation": "5827:12:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8819, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8813, "mutability": "mutable", "name": "_projectId", "nameLocation": "5848:10:41", "nodeType": "VariableDeclaration", "scope": 8821, "src": "5840:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8812, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5840:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8815, "mutability": "mutable", "name": "_packageId", "nameLocation": "5868:10:41", "nodeType": "VariableDeclaration", "scope": 8821, "src": "5860:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8814, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5860:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8818, "mutability": "mutable", "name": "_observers", "nameLocation": "5897:10:41", "nodeType": "VariableDeclaration", "scope": 8821, "src": "5880:27:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8816, "name": "address", "nodeType": "ElementaryTypeName", "src": "5880:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8817, "nodeType": "ArrayTypeName", "src": "5880:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "5839:69:41"}, "returnParameters": {"id": 8820, "nodeType": "ParameterList", "parameters": [], "src": "5917:0:41"}, "scope": 8847, "src": "5818:100:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8822, "nodeType": "StructuredDocumentation", "src": "5924:213:41", "text": " @notice Removes observers from package\n @param _projectId Id of the project\n @param _packageId package id\n @param _observers observers' addresses\n Emit {RemovedObservers}"}, "functionSelector": "3a7efc84", "id": 8832, "implemented": false, "kind": "function", "modifiers": [], "name": "removeObservers", "nameLocation": "6151:15:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8830, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8824, "mutability": "mutable", "name": "_projectId", "nameLocation": "6175:10:41", "nodeType": "VariableDeclaration", "scope": 8832, "src": "6167:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8823, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6167:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8826, "mutability": "mutable", "name": "_packageId", "nameLocation": "6195:10:41", "nodeType": "VariableDeclaration", "scope": 8832, "src": "6187:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8825, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6187:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8829, "mutability": "mutable", "name": "_observers", "nameLocation": "6224:10:41", "nodeType": "VariableDeclaration", "scope": 8832, "src": "6207:27:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8827, "name": "address", "nodeType": "ElementaryTypeName", "src": "6207:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8828, "nodeType": "ArrayTypeName", "src": "6207:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "6166:69:41"}, "returnParameters": {"id": 8831, "nodeType": "ParameterList", "parameters": [], "src": "6244:0:41"}, "scope": 8847, "src": "6142:103:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8833, "nodeType": "StructuredDocumentation", "src": "6251:313:41", "text": " @notice Adds, removes observers from package\n @param _projectId Id of the project\n @param _packageId package id\n @param _observersIn observers' addresses to be added\n @param _observersOut observers' addresses to be removed\n Emit {AddedObservers} {RemovedObservers}"}, "functionSelector": "71af530b", "id": 8846, "implemented": false, "kind": "function", "modifiers": [], "name": "updateObservers", "nameLocation": "6578:15:41", "nodeType": "FunctionDefinition", "parameters": {"id": 8844, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8835, "mutability": "mutable", "name": "_projectId", "nameLocation": "6611:10:41", "nodeType": "VariableDeclaration", "scope": 8846, "src": "6603:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8834, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6603:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8837, "mutability": "mutable", "name": "_packageId", "nameLocation": "6639:10:41", "nodeType": "VariableDeclaration", "scope": 8846, "src": "6631:18:41", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "typeName": {"id": 8836, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6631:7:41", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "visibility": "internal"}, {"constant": false, "id": 8840, "mutability": "mutable", "name": "_observersIn", "nameLocation": "6676:12:41", "nodeType": "VariableDeclaration", "scope": 8846, "src": "6659:29:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8838, "name": "address", "nodeType": "ElementaryTypeName", "src": "6659:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8839, "nodeType": "ArrayTypeName", "src": "6659:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}, {"constant": false, "id": 8843, "mutability": "mutable", "name": "_observersOut", "nameLocation": "6715:13:41", "nodeType": "VariableDeclaration", "scope": 8846, "src": "6698:30:41", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 8841, "name": "address", "nodeType": "ElementaryTypeName", "src": "6698:7:41", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 8842, "nodeType": "ArrayTypeName", "src": "6698:9:41", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "6593:141:41"}, "returnParameters": {"id": 8845, "nodeType": "ParameterList", "parameters": [], "src": "6743:0:41"}, "scope": 8847, "src": "6569:175:41", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 8848, "src": "57:6690:41", "usedErrors": []}], "src": "32:6716:41"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/ITokenFactory.sol": {"AST": {"absolutePath": "contracts/interfaces/ITokenFactory.sol", "exportedSymbols": {"ITokenFactory": [8890]}, "id": 8891, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 8849, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:42"}, {"abstract": false, "baseContracts": [], "canonicalName": "ITokenFactory", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 8890, "linearizedBaseContracts": [8890], "name": "ITokenFactory", "nameLocation": "67:13:42", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "9d4a605126592dbb92f903ac98e8c937282fbe6325f14bf4d5eacf3544edc35c", "id": 8855, "name": "DeployedToken", "nameLocation": "93:13:42", "nodeType": "EventDefinition", "parameters": {"id": 8854, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8851, "indexed": true, "mutability": "mutable", "name": "token", "nameLocation": "123:5:42", "nodeType": "VariableDeclaration", "scope": 8855, "src": "107:21:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8850, "name": "address", "nodeType": "ElementaryTypeName", "src": "107:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8853, "indexed": true, "mutability": "mutable", "name": "totalSupply", "nameLocation": "146:11:42", "nodeType": "VariableDeclaration", "scope": 8855, "src": "130:27:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8852, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "130:7:42", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "106:52:42"}, "src": "87:72:42"}, {"anonymous": false, "eventSelector": "448700cd409e255b87a8a438a7cd86b88452daafacabc31ab74b8da7b039a478", "id": 8861, "name": "SetLearnToEarn", "nameLocation": "170:14:42", "nodeType": "EventDefinition", "parameters": {"id": 8860, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8857, "indexed": true, "mutability": "mutable", "name": "oldLearnToEarn", "nameLocation": "201:14:42", "nodeType": "VariableDeclaration", "scope": 8861, "src": "185:30:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8856, "name": "address", "nodeType": "ElementaryTypeName", "src": "185:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 8859, "indexed": true, "mutability": "mutable", "name": "newLearnToEarn", "nameLocation": "233:14:42", "nodeType": "VariableDeclaration", "scope": 8861, "src": "217:30:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8858, "name": "address", "nodeType": "ElementaryTypeName", "src": "217:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "184:64:42"}, "src": "164:85:42"}, {"anonymous": false, "eventSelector": "f784f9219f2a6abce53e3cbad9cdb6703c11c16fe0fb6e2525b74f9a04fed14c", "id": 8865, "name": "DeployedNFT", "nameLocation": "260:11:42", "nodeType": "EventDefinition", "parameters": {"id": 8864, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8863, "indexed": true, "mutability": "mutable", "name": "nft", "nameLocation": "288:3:42", "nodeType": "VariableDeclaration", "scope": 8865, "src": "272:19:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8862, "name": "address", "nodeType": "ElementaryTypeName", "src": "272:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "271:21:42"}, "src": "254:39:42"}, {"documentation": {"id": 8866, "nodeType": "StructuredDocumentation", "src": "299:280:42", "text": " @notice Deploys IOUT with totalSupply equal to project budget\n @param _totalSupply Token total supply\n @param _name Name of token\n @param _symbol Symbol of token\n @return token_ IOU token address\n emit {DeployedToken} events"}, "functionSelector": "da68ed12", "id": 8877, "implemented": false, "kind": "function", "modifiers": [], "name": "deployToken", "nameLocation": "593:11:42", "nodeType": "FunctionDefinition", "parameters": {"id": 8873, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8868, "mutability": "mutable", "name": "_totalSupply", "nameLocation": "613:12:42", "nodeType": "VariableDeclaration", "scope": 8877, "src": "605:20:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8867, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "605:7:42", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 8870, "mutability": "mutable", "name": "_name", "nameLocation": "641:5:42", "nodeType": "VariableDeclaration", "scope": 8877, "src": "627:19:42", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8869, "name": "string", "nodeType": "ElementaryTypeName", "src": "627:6:42", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8872, "mutability": "mutable", "name": "_symbol", "nameLocation": "662:7:42", "nodeType": "VariableDeclaration", "scope": 8877, "src": "648:21:42", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8871, "name": "string", "nodeType": "ElementaryTypeName", "src": "648:6:42", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "604:66:42"}, "returnParameters": {"id": 8876, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8875, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 8877, "src": "689:7:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8874, "name": "address", "nodeType": "ElementaryTypeName", "src": "689:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "688:9:42"}, "scope": 8890, "src": "584:114:42", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 8878, "nodeType": "StructuredDocumentation", "src": "704:225:42", "text": " @notice Deploy new contract to mint NFT\n @param _name Name of NFT\n @param _symbol Symbol of NFT\n @param _uri Ipfs of NFT\n @return nft_ address\n emit {DeployedNFT} events"}, "functionSelector": "7309fe22", "id": 8889, "implemented": false, "kind": "function", "modifiers": [], "name": "deployNFT", "nameLocation": "943:9:42", "nodeType": "FunctionDefinition", "parameters": {"id": 8885, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8880, "mutability": "mutable", "name": "_name", "nameLocation": "967:5:42", "nodeType": "VariableDeclaration", "scope": 8889, "src": "953:19:42", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8879, "name": "string", "nodeType": "ElementaryTypeName", "src": "953:6:42", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8882, "mutability": "mutable", "name": "_symbol", "nameLocation": "988:7:42", "nodeType": "VariableDeclaration", "scope": 8889, "src": "974:21:42", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8881, "name": "string", "nodeType": "ElementaryTypeName", "src": "974:6:42", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 8884, "mutability": "mutable", "name": "_uri", "nameLocation": "1011:4:42", "nodeType": "VariableDeclaration", "scope": 8889, "src": "997:18:42", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 8883, "name": "string", "nodeType": "ElementaryTypeName", "src": "997:6:42", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "952:64:42"}, "returnParameters": {"id": 8888, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8887, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 8889, "src": "1035:7:42", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 8886, "name": "address", "nodeType": "ElementaryTypeName", "src": "1035:7:42", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1034:9:42"}, "scope": 8890, "src": "934:110:42", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 8891, "src": "57:989:42", "usedErrors": []}], "src": "32:1015:42"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/CollaboratorLibrary.sol": {"AST": {"absolutePath": "contracts/libraries/CollaboratorLibrary.sol", "exportedSymbols": {"Collaborator": [9885], "CollaboratorLibrary": [9043]}, "id": 9044, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 8892, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:43"}, {"absolutePath": "contracts/libraries/Structs.sol", "file": "./Structs.sol", "id": 8894, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 9044, "sourceUnit": 9893, "src": "56:45:43", "symbolAliases": [{"foreign": {"id": 8893, "name": "Collaborator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9885, "src": "65:12:43", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CollaboratorLibrary", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 9043, "linearizedBaseContracts": [9043], "name": "CollaboratorLibrary", "nameLocation": "111:19:43", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 8913, "nodeType": "Block", "src": "266:118:43", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 8908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8904, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8901, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8898, "src": "284:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8902, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "298:11:43", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9876, "src": "284:25:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 8903, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "312:1:43", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "284:29:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"id": 8907, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "317:24:43", "subExpression": {"expression": {"id": 8905, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8898, "src": "318:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8906, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "332:9:43", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9884, "src": "318:23:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "284:57:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6e6f207375636820636f6c6c61626f7261746f72", "id": 8909, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "343:22:43", "typeDescriptions": {"typeIdentifier": "t_stringliteral_dd3eaee9af26edf5ca20b4ad4102ff9e79ac65014d13981382f36c87d6d097ec", "typeString": "literal_string \"no such collaborator\""}, "value": "no such collaborator"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_dd3eaee9af26edf5ca20b4ad4102ff9e79ac65014d13981382f36c87d6d097ec", "typeString": "literal_string \"no such collaborator\""}], "id": 8900, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "276:7:43", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8910, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "276:90:43", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8911, "nodeType": "ExpressionStatement", "src": "276:90:43"}, {"id": 8912, "nodeType": "PlaceholderStatement", "src": "376:1:43"}]}, "documentation": {"id": 8895, "nodeType": "StructuredDocumentation", "src": "137:56:43", "text": "@notice Throws if there is no such collaborator"}, "id": 8914, "name": "onlyActiveCollaborator", "nameLocation": "207:22:43", "nodeType": "ModifierDefinition", "parameters": {"id": 8899, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8898, "mutability": "mutable", "name": "collaborator_", "nameLocation": "251:13:43", "nodeType": "VariableDeclaration", "scope": 8914, "src": "230:34:43", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 8897, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8896, "name": "Collaborator", "nameLocations": ["230:12:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "230:12:43"}, "referencedDeclaration": 9885, "src": "230:12:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "src": "229:36:43"}, "src": "198:186:43", "virtual": false, "visibility": "internal"}, {"body": {"id": 8953, "nodeType": "Block", "src": "741:242:43", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 8930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8924, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8918, "src": "759:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8925, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "773:9:43", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9884, "src": "759:23:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8929, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8926, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8918, "src": "786:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8927, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "800:11:43", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9876, "src": "786:25:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 8928, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "815:1:43", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "786:30:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "759:57:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "636f6c6c61626f7261746f7220616c7265616479206164646564", "id": 8931, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "818:28:43", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9f81182aebc803f8492b4fa57889e5cd006f6d8d0213413e13215356efc2594b", "typeString": "literal_string \"collaborator already added\""}, "value": "collaborator already added"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9f81182aebc803f8492b4fa57889e5cd006f6d8d0213413e13215356efc2594b", "typeString": "literal_string \"collaborator already added\""}], "id": 8923, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "751:7:43", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "751:96:43", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8933, "nodeType": "ExpressionStatement", "src": "751:96:43"}, {"expression": {"id": 8938, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 8934, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8918, "src": "858:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8936, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "872:3:43", "memberName": "mgp", "nodeType": "MemberAccess", "referencedDeclaration": 9872, "src": "858:17:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 8937, "name": "mgp_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8920, "src": "878:4:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "858:24:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8939, "nodeType": "ExpressionStatement", "src": "858:24:43"}, {"expression": {"id": 8944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 8940, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8918, "src": "892:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8942, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "906:9:43", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9884, "src": "892:23:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 8943, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "918:5:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "892:31:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 8945, "nodeType": "ExpressionStatement", "src": "892:31:43"}, {"expression": {"id": 8951, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 8946, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8918, "src": "933:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8948, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "947:11:43", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9876, "src": "933:25:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 8949, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "961:5:43", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 8950, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "967:9:43", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "961:15:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "933:43:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8952, "nodeType": "ExpressionStatement", "src": "933:43:43"}]}, "documentation": {"id": 8915, "nodeType": "StructuredDocumentation", "src": "390:261:43", "text": " @notice Adds collaborator, checks for zero address and if already added, records mgp\n @param collaborator_ reference to Collaborator struct\n @param collaborator_ collaborator's address\n @param mgp_ minimum guaranteed payment"}, "id": 8954, "implemented": true, "kind": "function", "modifiers": [], "name": "_addCollaborator", "nameLocation": "665:16:43", "nodeType": "FunctionDefinition", "parameters": {"id": 8921, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8918, "mutability": "mutable", "name": "collaborator_", "nameLocation": "703:13:43", "nodeType": "VariableDeclaration", "scope": 8954, "src": "682:34:43", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 8917, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8916, "name": "Collaborator", "nameLocations": ["682:12:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "682:12:43"}, "referencedDeclaration": 9885, "src": "682:12:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}, {"constant": false, "id": 8920, "mutability": "mutable", "name": "mgp_", "nameLocation": "726:4:43", "nodeType": "VariableDeclaration", "scope": 8954, "src": "718:12:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 8919, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "718:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "681:50:43"}, "returnParameters": {"id": 8922, "nodeType": "ParameterList", "parameters": [], "src": "741:0:43"}, "scope": 9043, "src": "656:327:43", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 8979, "nodeType": "Block", "src": "1246:150:43", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 8968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 8965, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8958, "src": "1264:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8966, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1278:15:43", "memberName": "timeMgpApproved", "nodeType": "MemberAccess", "referencedDeclaration": 9878, "src": "1264:29:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 8967, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1297:1:43", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1264:34:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "636f6c6c61626f7261746f7220616c726561647920617070726f766564", "id": 8969, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1300:31:43", "typeDescriptions": {"typeIdentifier": "t_stringliteral_9aa32d0c3db36a241e731db8b39086c1a0c45112959f9ddfc19f6c546bd4eeb5", "typeString": "literal_string \"collaborator already approved\""}, "value": "collaborator already approved"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_9aa32d0c3db36a241e731db8b39086c1a0c45112959f9ddfc19f6c546bd4eeb5", "typeString": "literal_string \"collaborator already approved\""}], "id": 8964, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1256:7:43", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 8970, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1256:76:43", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 8971, "nodeType": "ExpressionStatement", "src": "1256:76:43"}, {"expression": {"id": 8977, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 8972, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8958, "src": "1342:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8974, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1356:15:43", "memberName": "timeMgpApproved", "nodeType": "MemberAccess", "referencedDeclaration": 9878, "src": "1342:29:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 8975, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1374:5:43", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 8976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1380:9:43", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1374:15:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1342:47:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 8978, "nodeType": "ExpressionStatement", "src": "1342:47:43"}]}, "documentation": {"id": 8955, "nodeType": "StructuredDocumentation", "src": "989:139:43", "text": " @notice Approves collaborator's MGP or deletes collaborator\n @param collaborator_ reference to Collaborator struct"}, "id": 8980, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 8961, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8958, "src": "1231:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}], "id": 8962, "kind": "modifierInvocation", "modifierName": {"id": 8960, "name": "onlyActiveCollaborator", "nameLocations": ["1208:22:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 8914, "src": "1208:22:43"}, "nodeType": "ModifierInvocation", "src": "1208:37:43"}], "name": "_approveCollaborator", "nameLocation": "1142:20:43", "nodeType": "FunctionDefinition", "parameters": {"id": 8959, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8958, "mutability": "mutable", "name": "collaborator_", "nameLocation": "1184:13:43", "nodeType": "VariableDeclaration", "scope": 8980, "src": "1163:34:43", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 8957, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8956, "name": "Collaborator", "nameLocations": ["1163:12:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "1163:12:43"}, "referencedDeclaration": 9885, "src": "1163:12:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "src": "1162:36:43"}, "returnParameters": {"id": 8963, "nodeType": "ParameterList", "parameters": [], "src": "1246:0:43"}, "scope": 9043, "src": "1133:263:43", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 8995, "nodeType": "Block", "src": "1514:47:43", "statements": [{"expression": {"id": 8993, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 8989, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8983, "src": "1524:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 8991, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1538:9:43", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9884, "src": "1524:23:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 8992, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1550:4:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "1524:30:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 8994, "nodeType": "ExpressionStatement", "src": "1524:30:43"}]}, "id": 8996, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 8986, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8983, "src": "1499:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}], "id": 8987, "kind": "modifierInvocation", "modifierName": {"id": 8985, "name": "onlyActiveCollaborator", "nameLocations": ["1476:22:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 8914, "src": "1476:22:43"}, "nodeType": "ModifierInvocation", "src": "1476:37:43"}], "name": "_removeCollaborator", "nameLocation": "1411:19:43", "nodeType": "FunctionDefinition", "parameters": {"id": 8984, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 8983, "mutability": "mutable", "name": "collaborator_", "nameLocation": "1452:13:43", "nodeType": "VariableDeclaration", "scope": 8996, "src": "1431:34:43", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 8982, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8981, "name": "Collaborator", "nameLocations": ["1431:12:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "1431:12:43"}, "referencedDeclaration": 9885, "src": "1431:12:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}], "src": "1430:36:43"}, "returnParameters": {"id": 8988, "nodeType": "ParameterList", "parameters": [], "src": "1514:0:43"}, "scope": 9043, "src": "1402:159:43", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9041, "nodeType": "Block", "src": "1828:269:43", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9009, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9000, "src": "1846:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 9010, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1860:11:43", "memberName": "timeMgpPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9880, "src": "1846:25:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9011, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1875:1:43", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1846:30:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "72657761726420616c72656164792070616964", "id": 9013, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1878:21:43", "typeDescriptions": {"typeIdentifier": "t_stringliteral_f53c2500433bb0b85f01600844b341babdb8856d948cdb67a1d17e1bab9f9a46", "typeString": "literal_string \"reward already paid\""}, "value": "reward already paid"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_f53c2500433bb0b85f01600844b341babdb8856d948cdb67a1d17e1bab9f9a46", "typeString": "literal_string \"reward already paid\""}], "id": 9008, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1838:7:43", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9014, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1838:62:43", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9015, "nodeType": "ExpressionStatement", "src": "1838:62:43"}, {"expression": {"id": 9021, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9016, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9000, "src": "1910:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 9018, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1924:11:43", "memberName": "timeMgpPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9880, "src": "1910:25:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9019, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1938:5:43", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9020, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:9:43", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1938:15:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1910:43:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9022, "nodeType": "ExpressionStatement", "src": "1910:43:43"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9025, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 9023, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9002, "src": "1967:6:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 9024, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1976:1:43", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1967:10:43", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9040, "nodeType": "IfStatement", "src": "1963:128:43", "trueBody": {"id": 9039, "nodeType": "Block", "src": "1979:112:43", "statements": [{"expression": {"id": 9030, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9026, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9000, "src": "1993:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 9028, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2007:5:43", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9874, "src": "1993:19:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9029, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9002, "src": "2015:6:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1993:28:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9031, "nodeType": "ExpressionStatement", "src": "1993:28:43"}, {"expression": {"id": 9037, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9032, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9000, "src": "2035:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}, "id": 9034, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2049:13:43", "memberName": "timeBonusPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9882, "src": "2035:27:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9035, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "2065:5:43", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2071:9:43", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "2065:15:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2035:45:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9038, "nodeType": "ExpressionStatement", "src": "2035:45:43"}]}}]}, "documentation": {"id": 8997, "nodeType": "StructuredDocumentation", "src": "1567:137:43", "text": " @notice Pay Reward to collaborator\n @param collaborator_ collaborator\n @param bonus_ bonus of collaborator"}, "id": 9042, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9005, "name": "collaborator_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9000, "src": "1813:13:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator storage pointer"}}], "id": 9006, "kind": "modifierInvocation", "modifierName": {"id": 9004, "name": "onlyActiveCollaborator", "nameLocations": ["1790:22:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 8914, "src": "1790:22:43"}, "nodeType": "ModifierInvocation", "src": "1790:37:43"}], "name": "_payReward", "nameLocation": "1718:10:43", "nodeType": "FunctionDefinition", "parameters": {"id": 9003, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9000, "mutability": "mutable", "name": "collaborator_", "nameLocation": "1750:13:43", "nodeType": "VariableDeclaration", "scope": 9042, "src": "1729:34:43", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}, "typeName": {"id": 8999, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 8998, "name": "Collaborator", "nameLocations": ["1729:12:43"], "nodeType": "IdentifierPath", "referencedDeclaration": 9885, "src": "1729:12:43"}, "referencedDeclaration": 9885, "src": "1729:12:43", "typeDescriptions": {"typeIdentifier": "t_struct$_Collaborator_$9885_storage_ptr", "typeString": "struct Collaborator"}}, "visibility": "internal"}, {"constant": false, "id": 9002, "mutability": "mutable", "name": "bonus_", "nameLocation": "1773:6:43", "nodeType": "VariableDeclaration", "scope": 9042, "src": "1765:14:43", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9001, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1765:7:43", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1728:52:43"}, "returnParameters": {"id": 9007, "nodeType": "ParameterList", "parameters": [], "src": "1828:0:43"}, "scope": 9043, "src": "1709:388:43", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 9044, "src": "103:1996:43", "usedErrors": []}], "src": "32:2068:43"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/ObserverLibrary.sol": {"AST": {"absolutePath": "contracts/libraries/ObserverLibrary.sol", "exportedSymbols": {"Observer": [9892], "ObserverLibrary": [9134]}, "id": 9135, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 9045, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:44"}, {"absolutePath": "contracts/libraries/Structs.sol", "file": "./Structs.sol", "id": 9047, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 9135, "sourceUnit": 9893, "src": "56:41:44", "symbolAliases": [{"foreign": {"id": 9046, "name": "Observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9892, "src": "65:8:44", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ObserverLibrary", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 9134, "linearizedBaseContracts": [9134], "name": "ObserverLibrary", "nameLocation": "107:15:44", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 9066, "nodeType": "Block", "src": "243:106:44", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 9061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9054, "name": "observer_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9051, "src": "261:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9055, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "271:11:44", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9887, "src": "261:21:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 9056, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "285:1:44", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "261:25:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"id": 9060, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "290:20:44", "subExpression": {"expression": {"id": 9058, "name": "observer_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9051, "src": "291:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9059, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "301:9:44", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9891, "src": "291:19:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "261:49:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6e6f2073756368206f62736572766572", "id": 9062, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "312:18:44", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fb1f2102dd620d8db71c215406addd7f1da90c80756b1661c74f5edaf19afaf0", "typeString": "literal_string \"no such observer\""}, "value": "no such observer"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_fb1f2102dd620d8db71c215406addd7f1da90c80756b1661c74f5edaf19afaf0", "typeString": "literal_string \"no such observer\""}], "id": 9053, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "253:7:44", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9063, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "253:78:44", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9064, "nodeType": "ExpressionStatement", "src": "253:78:44"}, {"id": 9065, "nodeType": "PlaceholderStatement", "src": "341:1:44"}]}, "documentation": {"id": 9048, "nodeType": "StructuredDocumentation", "src": "129:53:44", "text": "@notice Throws if there is no such observer"}, "id": 9067, "name": "onlyActiveObserver", "nameLocation": "196:18:44", "nodeType": "ModifierDefinition", "parameters": {"id": 9052, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9051, "mutability": "mutable", "name": "observer_", "nameLocation": "232:9:44", "nodeType": "VariableDeclaration", "scope": 9067, "src": "215:26:44", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}, "typeName": {"id": 9050, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9049, "name": "Observer", "nameLocations": ["215:8:44"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "215:8:44"}, "referencedDeclaration": 9892, "src": "215:8:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}, "visibility": "internal"}], "src": "214:28:44"}, "src": "187:162:44", "virtual": false, "visibility": "internal"}, {"body": {"id": 9089, "nodeType": "Block", "src": "510:127:44", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9075, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9071, "src": "528:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9076, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "538:11:44", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9887, "src": "528:21:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9077, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "553:1:44", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "528:26:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6f6273657276657220616c7265616479206164646564", "id": 9079, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "556:24:44", "typeDescriptions": {"typeIdentifier": "t_stringliteral_01db46ba4e9a905e53e493d9618107ebf5213085ffb9e60273f9e53fa60ac1d3", "typeString": "literal_string \"observer already added\""}, "value": "observer already added"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_01db46ba4e9a905e53e493d9618107ebf5213085ffb9e60273f9e53fa60ac1d3", "typeString": "literal_string \"observer already added\""}], "id": 9074, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "520:7:44", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9080, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "520:61:44", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9081, "nodeType": "ExpressionStatement", "src": "520:61:44"}, {"expression": {"id": 9087, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9082, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9071, "src": "591:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9084, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "601:11:44", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9887, "src": "591:21:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9085, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "615:5:44", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "621:9:44", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "615:15:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "591:39:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9088, "nodeType": "ExpressionStatement", "src": "591:39:44"}]}, "documentation": {"id": 9068, "nodeType": "StructuredDocumentation", "src": "355:91:44", "text": " @notice Add observer to package\n @param _observer Observer address"}, "id": 9090, "implemented": true, "kind": "function", "modifiers": [], "name": "_addObserver", "nameLocation": "460:12:44", "nodeType": "FunctionDefinition", "parameters": {"id": 9072, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9071, "mutability": "mutable", "name": "_observer", "nameLocation": "490:9:44", "nodeType": "VariableDeclaration", "scope": 9090, "src": "473:26:44", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}, "typeName": {"id": 9070, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9069, "name": "Observer", "nameLocations": ["473:8:44"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "473:8:44"}, "referencedDeclaration": 9892, "src": "473:8:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}, "visibility": "internal"}], "src": "472:28:44"}, "returnParameters": {"id": 9073, "nodeType": "ParameterList", "parameters": [], "src": "510:0:44"}, "scope": 9134, "src": "451:186:44", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9106, "nodeType": "Block", "src": "836:43:44", "statements": [{"expression": {"id": 9104, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9100, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9094, "src": "846:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9102, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "856:9:44", "memberName": "isRemoved", "nodeType": "MemberAccess", "referencedDeclaration": 9891, "src": "846:19:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 9103, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "868:4:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "846:26:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9105, "nodeType": "ExpressionStatement", "src": "846:26:44"}]}, "documentation": {"id": 9091, "nodeType": "StructuredDocumentation", "src": "643:96:44", "text": " @notice Remove observer from package\n @param _observer Observer address"}, "id": 9107, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9097, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9094, "src": "825:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}], "id": 9098, "kind": "modifierInvocation", "modifierName": {"id": 9096, "name": "onlyActiveObserver", "nameLocations": ["806:18:44"], "nodeType": "IdentifierPath", "referencedDeclaration": 9067, "src": "806:18:44"}, "nodeType": "ModifierInvocation", "src": "806:29:44"}], "name": "_removeObserver", "nameLocation": "753:15:44", "nodeType": "FunctionDefinition", "parameters": {"id": 9095, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9094, "mutability": "mutable", "name": "_observer", "nameLocation": "786:9:44", "nodeType": "VariableDeclaration", "scope": 9107, "src": "769:26:44", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}, "typeName": {"id": 9093, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9092, "name": "Observer", "nameLocations": ["769:8:44"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "769:8:44"}, "referencedDeclaration": 9892, "src": "769:8:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}, "visibility": "internal"}], "src": "768:28:44"}, "returnParameters": {"id": 9099, "nodeType": "ParameterList", "parameters": [], "src": "836:0:44"}, "scope": 9134, "src": "744:135:44", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9132, "nodeType": "Block", "src": "1068:124:44", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9121, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9118, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9111, "src": "1086:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9119, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1096:8:44", "memberName": "timePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9889, "src": "1086:18:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1108:1:44", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1086:23:44", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6f627365727665722066656520616c72656164792070616964", "id": 9122, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1111:27:44", "typeDescriptions": {"typeIdentifier": "t_stringliteral_ee9f4e3a064528f67a06f6c0c0b451292b182050371e5e273e76be66e73b1e68", "typeString": "literal_string \"observer fee already paid\""}, "value": "observer fee already paid"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_ee9f4e3a064528f67a06f6c0c0b451292b182050371e5e273e76be66e73b1e68", "typeString": "literal_string \"observer fee already paid\""}], "id": 9117, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1078:7:44", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9123, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:61:44", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9124, "nodeType": "ExpressionStatement", "src": "1078:61:44"}, {"expression": {"id": 9130, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9125, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9111, "src": "1149:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}, "id": 9127, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1159:8:44", "memberName": "timePaid", "nodeType": "MemberAccess", "referencedDeclaration": 9889, "src": "1149:18:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9128, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1170:5:44", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1176:9:44", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1170:15:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1149:36:44", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9131, "nodeType": "ExpressionStatement", "src": "1149:36:44"}]}, "documentation": {"id": 9108, "nodeType": "StructuredDocumentation", "src": "885:86:44", "text": " @notice Observer claim fee\n @param _observer Observer address"}, "id": 9133, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9114, "name": "_observer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9111, "src": "1057:9:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer storage pointer"}}], "id": 9115, "kind": "modifierInvocation", "modifierName": {"id": 9113, "name": "onlyActiveObserver", "nameLocations": ["1038:18:44"], "nodeType": "IdentifierPath", "referencedDeclaration": 9067, "src": "1038:18:44"}, "nodeType": "ModifierInvocation", "src": "1038:29:44"}], "name": "_payObserverFee", "nameLocation": "985:15:44", "nodeType": "FunctionDefinition", "parameters": {"id": 9112, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9111, "mutability": "mutable", "name": "_observer", "nameLocation": "1018:9:44", "nodeType": "VariableDeclaration", "scope": 9133, "src": "1001:26:44", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}, "typeName": {"id": 9110, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9109, "name": "Observer", "nameLocations": ["1001:8:44"], "nodeType": "IdentifierPath", "referencedDeclaration": 9892, "src": "1001:8:44"}, "referencedDeclaration": 9892, "src": "1001:8:44", "typeDescriptions": {"typeIdentifier": "t_struct$_Observer_$9892_storage_ptr", "typeString": "struct Observer"}}, "visibility": "internal"}], "src": "1000:28:44"}, "returnParameters": {"id": 9116, "nodeType": "ParameterList", "parameters": [], "src": "1068:0:44"}, "scope": 9134, "src": "976:216:44", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 9135, "src": "99:1095:44", "usedErrors": []}], "src": "32:1163:44"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/PackageLibrary.sol": {"AST": {"absolutePath": "contracts/libraries/PackageLibrary.sol", "exportedSymbols": {"Package": [9870], "PackageLibrary": [9576]}, "id": 9577, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 9136, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:45"}, {"absolutePath": "contracts/libraries/Structs.sol", "file": "./Structs.sol", "id": 9138, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 9577, "sourceUnit": 9893, "src": "56:40:45", "symbolAliases": [{"foreign": {"id": 9137, "name": "Package", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9870, "src": "65:7:45", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "PackageLibrary", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 9576, "linearizedBaseContracts": [9576], "name": "PackageLibrary", "nameLocation": "106:14:45", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "functionSelector": "eb892b10", "id": 9141, "mutability": "constant", "name": "MAX_COLLABORATORS", "nameLocation": "151:17:45", "nodeType": "VariableDeclaration", "scope": 9576, "src": "127:46:45", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9139, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "127:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "3130", "id": 9140, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "171:2:45", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "visibility": "public"}, {"constant": true, "functionSelector": "ec120a00", "id": 9144, "mutability": "constant", "name": "MAX_OBSERVERS", "nameLocation": "203:13:45", "nodeType": "VariableDeclaration", "scope": 9576, "src": "179:42:45", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9142, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "179:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "3130", "id": 9143, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "219:2:45", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "visibility": "public"}, {"body": {"id": 9157, "nodeType": "Block", "src": "333:73:45", "statements": [{"expression": {"arguments": [{"expression": {"id": 9151, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9148, "src": "351:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9152, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "360:8:45", "memberName": "isActive", "nodeType": "MemberAccess", "referencedDeclaration": 9869, "src": "351:17:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6e6f2073756368207061636b616765", "id": 9153, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "370:17:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_56c9ff310e93ba0b6293590b2d28d1a49f0d4749d1f67471bbb2c4512c7b1b3a", "typeString": "literal_string \"no such package\""}, "value": "no such package"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_56c9ff310e93ba0b6293590b2d28d1a49f0d4749d1f67471bbb2c4512c7b1b3a", "typeString": "literal_string \"no such package\""}], "id": 9150, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "343:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9154, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "343:45:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9155, "nodeType": "ExpressionStatement", "src": "343:45:45"}, {"id": 9156, "nodeType": "PlaceholderStatement", "src": "398:1:45"}]}, "documentation": {"id": 9145, "nodeType": "StructuredDocumentation", "src": "228:47:45", "text": "@notice Throws if there is no package"}, "id": 9158, "name": "onlyActivePackage", "nameLocation": "289:17:45", "nodeType": "ModifierDefinition", "parameters": {"id": 9149, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9148, "mutability": "mutable", "name": "package_", "nameLocation": "323:8:45", "nodeType": "VariableDeclaration", "scope": 9158, "src": "307:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9147, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9146, "name": "Package", "nameLocations": ["307:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "307:7:45"}, "referencedDeclaration": 9870, "src": "307:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "306:26:45"}, "src": "280:126:45", "virtual": false, "visibility": "internal"}, {"body": {"id": 9221, "nodeType": "Block", "src": "906:391:45", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 9180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "30", "id": 9174, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "924:1:45", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 9175, "name": "collaboratorsLimit_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9170, "src": "928:19:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "924:23:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 9177, "name": "collaboratorsLimit_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9170, "src": "951:19:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"id": 9178, "name": "MAX_COLLABORATORS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9141, "src": "974:17:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "951:40:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "924:67:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "696e636f727265637420636f6c6c61626f7261746f7273206c696d6974", "id": 9181, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "993:31:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c2595518826147acf35eff0a23a45682bdf83e012ca3d11c85ffd5120c0b9653", "typeString": "literal_string \"incorrect collaborators limit\""}, "value": "incorrect collaborators limit"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_c2595518826147acf35eff0a23a45682bdf83e012ca3d11c85ffd5120c0b9653", "typeString": "literal_string \"incorrect collaborators limit\""}], "id": 9173, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "916:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9182, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "916:109:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9183, "nodeType": "ExpressionStatement", "src": "916:109:45"}, {"expression": {"id": 9188, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9184, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9162, "src": "1035:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9186, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1044:6:45", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9839, "src": "1035:15:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9187, "name": "budget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9164, "src": "1053:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1035:25:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9189, "nodeType": "ExpressionStatement", "src": "1035:25:45"}, {"expression": {"id": 9194, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9190, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9162, "src": "1070:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9192, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1079:15:45", "memberName": "budgetObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9845, "src": "1070:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9193, "name": "feeObserversBudget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9166, "src": "1097:19:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1070:46:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9195, "nodeType": "ExpressionStatement", "src": "1070:46:45"}, {"expression": {"id": 9200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9196, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9162, "src": "1126:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9198, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1135:5:45", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "1126:14:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9199, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9168, "src": "1143:6:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1126:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9201, "nodeType": "ExpressionStatement", "src": "1126:23:45"}, {"expression": {"id": 9206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9202, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9162, "src": "1159:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9204, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1168:18:45", "memberName": "collaboratorsLimit", "nodeType": "MemberAccess", "referencedDeclaration": 9863, "src": "1159:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9205, "name": "collaboratorsLimit_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9170, "src": "1189:19:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1159:49:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9207, "nodeType": "ExpressionStatement", "src": "1159:49:45"}, {"expression": {"id": 9213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9208, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9162, "src": "1218:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9210, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1227:11:45", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9855, "src": "1218:20:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9211, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:45", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:9:45", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1241:15:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1218:38:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9214, "nodeType": "ExpressionStatement", "src": "1218:38:45"}, {"expression": {"id": 9219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9215, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9162, "src": "1266:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9217, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1275:8:45", "memberName": "isActive", "nodeType": "MemberAccess", "referencedDeclaration": 9869, "src": "1266:17:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "74727565", "id": 9218, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1286:4:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "src": "1266:24:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9220, "nodeType": "ExpressionStatement", "src": "1266:24:45"}]}, "documentation": {"id": 9159, "nodeType": "StructuredDocumentation", "src": "412:293:45", "text": " @notice Creates package in project\n @param package_ reference to Package struct\n @param budget_ MGP budget\n @param feeObserversBudget_ Observers fee budget\n @param bonus_ Bonus budget\n @param collaboratorsLimit_ Limit on number of collaborators"}, "id": 9222, "implemented": true, "kind": "function", "modifiers": [], "name": "_createPackage", "nameLocation": "719:14:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9171, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9162, "mutability": "mutable", "name": "package_", "nameLocation": "759:8:45", "nodeType": "VariableDeclaration", "scope": 9222, "src": "743:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9161, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9160, "name": "Package", "nameLocations": ["743:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "743:7:45"}, "referencedDeclaration": 9870, "src": "743:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9164, "mutability": "mutable", "name": "budget_", "nameLocation": "785:7:45", "nodeType": "VariableDeclaration", "scope": 9222, "src": "777:15:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9163, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "777:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9166, "mutability": "mutable", "name": "feeObserversBudget_", "nameLocation": "810:19:45", "nodeType": "VariableDeclaration", "scope": 9222, "src": "802:27:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9165, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "802:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9168, "mutability": "mutable", "name": "bonus_", "nameLocation": "847:6:45", "nodeType": "VariableDeclaration", "scope": 9222, "src": "839:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9167, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "839:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9170, "mutability": "mutable", "name": "collaboratorsLimit_", "nameLocation": "871:19:45", "nodeType": "VariableDeclaration", "scope": 9222, "src": "863:27:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9169, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "863:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "733:163:45"}, "returnParameters": {"id": 9172, "nodeType": "ParameterList", "parameters": [], "src": "906:0:45"}, "scope": 9576, "src": "710:587:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9245, "nodeType": "Block", "src": "1493:91:45", "statements": [{"expression": {"id": 9237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9232, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9226, "src": "1503:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9234, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1512:12:45", "memberName": "timeCanceled", "nodeType": "MemberAccess", "referencedDeclaration": 9867, "src": "1503:21:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9235, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1527:5:45", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1533:9:45", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1527:15:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1503:39:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9238, "nodeType": "ExpressionStatement", "src": "1503:39:45"}, {"expression": {"id": 9243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9239, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9226, "src": "1552:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9241, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1561:8:45", "memberName": "isActive", "nodeType": "MemberAccess", "referencedDeclaration": 9869, "src": "1552:17:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 9242, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1572:5:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "1552:25:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9244, "nodeType": "ExpressionStatement", "src": "1552:25:45"}]}, "documentation": {"id": 9223, "nodeType": "StructuredDocumentation", "src": "1303:98:45", "text": " @notice Cancel package in project\n @param package_ Package want to cancel"}, "id": 9246, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9229, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9226, "src": "1483:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9230, "kind": "modifierInvocation", "modifierName": {"id": 9228, "name": "onlyActivePackage", "nameLocations": ["1465:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "1465:17:45"}, "nodeType": "ModifierInvocation", "src": "1465:27:45"}], "name": "_cancelPackage", "nameLocation": "1415:14:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9227, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9226, "mutability": "mutable", "name": "package_", "nameLocation": "1446:8:45", "nodeType": "VariableDeclaration", "scope": 9246, "src": "1430:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9225, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9224, "name": "Package", "nameLocations": ["1430:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "1430:7:45"}, "referencedDeclaration": 9870, "src": "1430:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "1429:26:45"}, "returnParameters": {"id": 9231, "nodeType": "ParameterList", "parameters": [], "src": "1493:0:45"}, "scope": 9576, "src": "1406:178:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9269, "nodeType": "Block", "src": "1782:125:45", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9257, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9250, "src": "1800:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9258, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1809:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "1800:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 9259, "name": "MAX_OBSERVERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9144, "src": "1826:13:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1800:39:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6d6178206f62736572766572732072656163686564", "id": 9261, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1841:23:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_21f03a67f75d29f065c0bd0684b80ec466de07e7b8cabcaad45ccdfd9184e001", "typeString": "literal_string \"max observers reached\""}, "value": "max observers reached"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_21f03a67f75d29f065c0bd0684b80ec466de07e7b8cabcaad45ccdfd9184e001", "typeString": "literal_string \"max observers reached\""}], "id": 9256, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1792:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9262, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1792:73:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9263, "nodeType": "ExpressionStatement", "src": "1792:73:45"}, {"expression": {"id": 9267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "1875:25:45", "subExpression": {"expression": {"id": 9264, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9250, "src": "1875:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9266, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1884:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "1875:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9268, "nodeType": "ExpressionStatement", "src": "1875:25:45"}]}, "documentation": {"id": 9247, "nodeType": "StructuredDocumentation", "src": "1590:102:45", "text": " @notice Adds observer to package\n @param package_ reference to Package struct"}, "id": 9270, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9253, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9250, "src": "1772:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9254, "kind": "modifierInvocation", "modifierName": {"id": 9252, "name": "onlyActivePackage", "nameLocations": ["1754:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "1754:17:45"}, "nodeType": "ModifierInvocation", "src": "1754:27:45"}], "name": "_addObserver", "nameLocation": "1706:12:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9251, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9250, "mutability": "mutable", "name": "package_", "nameLocation": "1735:8:45", "nodeType": "VariableDeclaration", "scope": 9270, "src": "1719:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9249, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9248, "name": "Package", "nameLocations": ["1719:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "1719:7:45"}, "referencedDeclaration": 9870, "src": "1719:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "1718:26:45"}, "returnParameters": {"id": 9255, "nodeType": "ParameterList", "parameters": [], "src": "1782:0:45"}, "scope": 9576, "src": "1697:210:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9298, "nodeType": "Block", "src": "2164:143:45", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9286, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9283, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9274, "src": "2182:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9284, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2191:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "2182:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 9285, "name": "count_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9276, "src": "2208:6:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2182:32:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"id": 9287, "name": "MAX_OBSERVERS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9144, "src": "2218:13:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2182:49:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6d6178206f62736572766572732072656163686564", "id": 9289, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2233:23:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_21f03a67f75d29f065c0bd0684b80ec466de07e7b8cabcaad45ccdfd9184e001", "typeString": "literal_string \"max observers reached\""}, "value": "max observers reached"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_21f03a67f75d29f065c0bd0684b80ec466de07e7b8cabcaad45ccdfd9184e001", "typeString": "literal_string \"max observers reached\""}], "id": 9282, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2174:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9290, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2174:83:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9291, "nodeType": "ExpressionStatement", "src": "2174:83:45"}, {"expression": {"id": 9296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9292, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9274, "src": "2267:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9294, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2276:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "2267:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9295, "name": "count_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9276, "src": "2294:6:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2267:33:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9297, "nodeType": "ExpressionStatement", "src": "2267:33:45"}]}, "documentation": {"id": 9271, "nodeType": "StructuredDocumentation", "src": "1913:144:45", "text": " @notice Adds observers to package\n @param package_ reference to Package struct\n @param count_ number of observers"}, "id": 9299, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9279, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9274, "src": "2154:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9280, "kind": "modifierInvocation", "modifierName": {"id": 9278, "name": "onlyActivePackage", "nameLocations": ["2136:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "2136:17:45"}, "nodeType": "ModifierInvocation", "src": "2136:27:45"}], "name": "_addObservers", "nameLocation": "2071:13:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9277, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9274, "mutability": "mutable", "name": "package_", "nameLocation": "2101:8:45", "nodeType": "VariableDeclaration", "scope": 9299, "src": "2085:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9273, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9272, "name": "Package", "nameLocations": ["2085:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "2085:7:45"}, "referencedDeclaration": 9870, "src": "2085:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9276, "mutability": "mutable", "name": "count_", "nameLocation": "2119:6:45", "nodeType": "VariableDeclaration", "scope": 9299, "src": "2111:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9275, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2111:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2084:42:45"}, "returnParameters": {"id": 9281, "nodeType": "ParameterList", "parameters": [], "src": "2164:0:45"}, "scope": 9576, "src": "2062:245:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9314, "nodeType": "Block", "src": "2513:42:45", "statements": [{"expression": {"id": 9312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "2523:25:45", "subExpression": {"expression": {"id": 9309, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9303, "src": "2523:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9311, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2532:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "2523:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9313, "nodeType": "ExpressionStatement", "src": "2523:25:45"}]}, "documentation": {"id": 9300, "nodeType": "StructuredDocumentation", "src": "2313:107:45", "text": " @notice Removes observer from package\n @param package_ reference to Package struct"}, "id": 9315, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9306, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9303, "src": "2503:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9307, "kind": "modifierInvocation", "modifierName": {"id": 9305, "name": "onlyActivePackage", "nameLocations": ["2485:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "2485:17:45"}, "nodeType": "ModifierInvocation", "src": "2485:27:45"}], "name": "_removeObserver", "nameLocation": "2434:15:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9304, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9303, "mutability": "mutable", "name": "package_", "nameLocation": "2466:8:45", "nodeType": "VariableDeclaration", "scope": 9315, "src": "2450:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9302, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9301, "name": "Package", "nameLocations": ["2450:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "2450:7:45"}, "referencedDeclaration": 9870, "src": "2450:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "2449:26:45"}, "returnParameters": {"id": 9308, "nodeType": "ParameterList", "parameters": [], "src": "2513:0:45"}, "scope": 9576, "src": "2425:130:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9333, "nodeType": "Block", "src": "2820:50:45", "statements": [{"expression": {"id": 9331, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9327, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9319, "src": "2830:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9329, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2839:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "2830:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 9330, "name": "count_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9321, "src": "2857:6:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2830:33:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9332, "nodeType": "ExpressionStatement", "src": "2830:33:45"}]}, "documentation": {"id": 9316, "nodeType": "StructuredDocumentation", "src": "2561:149:45", "text": " @notice Removes observers from package\n @param package_ reference to Package struct\n @param count_ number of observers"}, "id": 9334, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9324, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9319, "src": "2810:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9325, "kind": "modifierInvocation", "modifierName": {"id": 9323, "name": "onlyActivePackage", "nameLocations": ["2792:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "2792:17:45"}, "nodeType": "ModifierInvocation", "src": "2792:27:45"}], "name": "_removeObservers", "nameLocation": "2724:16:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9322, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9319, "mutability": "mutable", "name": "package_", "nameLocation": "2757:8:45", "nodeType": "VariableDeclaration", "scope": 9334, "src": "2741:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9318, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9317, "name": "Package", "nameLocations": ["2741:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "2741:7:45"}, "referencedDeclaration": 9870, "src": "2741:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9321, "mutability": "mutable", "name": "count_", "nameLocation": "2775:6:45", "nodeType": "VariableDeclaration", "scope": 9334, "src": "2767:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9320, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2767:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2740:42:45"}, "returnParameters": {"id": 9326, "nodeType": "ParameterList", "parameters": [], "src": "2820:0:45"}, "scope": 9576, "src": "2715:155:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9377, "nodeType": "Block", "src": "3121:304:45", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9347, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3139:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9348, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3148:6:45", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9839, "src": "3139:15:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9352, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9349, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3158:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9350, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3167:15:45", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9841, "src": "3158:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 9351, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9340, "src": "3185:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3158:34:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3139:53:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6e6f7420656e6f756768207061636b61676520627564676574206c656674", "id": 9354, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3194:32:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_42cd87441756dfcff667d305ed8b2b69ff23b7c6b2dc426555029df43be6f274", "typeString": "literal_string \"not enough package budget left\""}, "value": "not enough package budget left"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_42cd87441756dfcff667d305ed8b2b69ff23b7c6b2dc426555029df43be6f274", "typeString": "literal_string \"not enough package budget left\""}], "id": 9346, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3131:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9355, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3131:96:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9356, "nodeType": "ExpressionStatement", "src": "3131:96:45"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9358, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3245:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9359, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3254:18:45", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "3245:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"expression": {"id": 9360, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3275:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9361, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3284:18:45", "memberName": "collaboratorsLimit", "nodeType": "MemberAccess", "referencedDeclaration": 9863, "src": "3275:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3245:57:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "636f6c6c61626f7261746f7273206c696d69742072656163686564", "id": 9363, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3304:29:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_e5c338fbe89973c08e13e9a3c7a7bbd52c8e4d6456038cfdf1e6e6b93b5c28b5", "typeString": "literal_string \"collaborators limit reached\""}, "value": "collaborators limit reached"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_e5c338fbe89973c08e13e9a3c7a7bbd52c8e4d6456038cfdf1e6e6b93b5c28b5", "typeString": "literal_string \"collaborators limit reached\""}], "id": 9357, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3237:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9364, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3237:97:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9365, "nodeType": "ExpressionStatement", "src": "3237:97:45"}, {"expression": {"id": 9370, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9366, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3344:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9368, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3353:15:45", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9841, "src": "3344:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9369, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9340, "src": "3372:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3344:35:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9371, "nodeType": "ExpressionStatement", "src": "3344:35:45"}, {"expression": {"id": 9375, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3389:29:45", "subExpression": {"expression": {"id": 9372, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3389:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9374, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3398:18:45", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "3389:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9376, "nodeType": "ExpressionStatement", "src": "3389:29:45"}]}, "documentation": {"id": 9335, "nodeType": "StructuredDocumentation", "src": "2876:135:45", "text": " @notice Allocate budget to collaborator and increase number of collaborators\n @param amount_ amount to reserve"}, "id": 9378, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9343, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9338, "src": "3111:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9344, "kind": "modifierInvocation", "modifierName": {"id": 9342, "name": "onlyActivePackage", "nameLocations": ["3093:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "3093:17:45"}, "nodeType": "ModifierInvocation", "src": "3093:27:45"}], "name": "_allocateBudget", "nameLocation": "3025:15:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9341, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9338, "mutability": "mutable", "name": "package_", "nameLocation": "3057:8:45", "nodeType": "VariableDeclaration", "scope": 9378, "src": "3041:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9337, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9336, "name": "Package", "nameLocations": ["3041:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "3041:7:45"}, "referencedDeclaration": 9870, "src": "3041:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9340, "mutability": "mutable", "name": "amount_", "nameLocation": "3075:7:45", "nodeType": "VariableDeclaration", "scope": 9378, "src": "3067:15:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9339, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3067:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3040:43:45"}, "returnParameters": {"id": 9345, "nodeType": "ParameterList", "parameters": [], "src": "3121:0:45"}, "scope": 9576, "src": "3016:409:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9393, "nodeType": "Block", "src": "3647:49:45", "statements": [{"expression": {"id": 9391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3657:32:45", "subExpression": {"expression": {"id": 9388, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9382, "src": "3657:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9390, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3666:21:45", "memberName": "approvedCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9865, "src": "3657:30:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9392, "nodeType": "ExpressionStatement", "src": "3657:32:45"}]}, "documentation": {"id": 9379, "nodeType": "StructuredDocumentation", "src": "3431:118:45", "text": " @notice Increase number of approved Collaborator\n @param package_ reference to Package struct"}, "id": 9394, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9385, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9382, "src": "3637:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9386, "kind": "modifierInvocation", "modifierName": {"id": 9384, "name": "onlyActivePackage", "nameLocations": ["3619:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "3619:17:45"}, "nodeType": "ModifierInvocation", "src": "3619:27:45"}], "name": "_approveCollaborator", "nameLocation": "3563:20:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9383, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9382, "mutability": "mutable", "name": "package_", "nameLocation": "3600:8:45", "nodeType": "VariableDeclaration", "scope": 9394, "src": "3584:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9381, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9380, "name": "Package", "nameLocations": ["3584:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "3584:7:45"}, "referencedDeclaration": 9870, "src": "3584:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "3583:26:45"}, "returnParameters": {"id": 9387, "nodeType": "ParameterList", "parameters": [], "src": "3647:0:45"}, "scope": 9576, "src": "3554:142:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9423, "nodeType": "Block", "src": "3963:127:45", "statements": [{"condition": {"id": 9409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3977:9:45", "subExpression": {"id": 9408, "name": "paidMgp_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9400, "src": "3978:8:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9417, "nodeType": "IfStatement", "src": "3973:72:45", "trueBody": {"id": 9416, "nodeType": "Block", "src": "3988:57:45", "statements": [{"expression": {"id": 9414, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9410, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9398, "src": "4002:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9412, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "4011:15:45", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9841, "src": "4002:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 9413, "name": "mgp_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9402, "src": "4030:4:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4002:32:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9415, "nodeType": "ExpressionStatement", "src": "4002:32:45"}]}}, {"expression": {"id": 9421, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "4054:29:45", "subExpression": {"expression": {"id": 9418, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9398, "src": "4054:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9420, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "4063:18:45", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "4054:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9422, "nodeType": "ExpressionStatement", "src": "4054:29:45"}]}, "documentation": {"id": 9395, "nodeType": "StructuredDocumentation", "src": "3702:135:45", "text": " @notice Remove collaborator from package\n @param package_ Package want to cancel\n @param mgp_ MGP amount"}, "id": 9424, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9405, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9398, "src": "3953:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9406, "kind": "modifierInvocation", "modifierName": {"id": 9404, "name": "onlyActivePackage", "nameLocations": ["3935:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "3935:17:45"}, "nodeType": "ModifierInvocation", "src": "3935:27:45"}], "name": "_removeCollaborator", "nameLocation": "3851:19:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9403, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9398, "mutability": "mutable", "name": "package_", "nameLocation": "3887:8:45", "nodeType": "VariableDeclaration", "scope": 9424, "src": "3871:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9397, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9396, "name": "Package", "nameLocations": ["3871:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "3871:7:45"}, "referencedDeclaration": 9870, "src": "3871:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9400, "mutability": "mutable", "name": "paidMgp_", "nameLocation": "3902:8:45", "nodeType": "VariableDeclaration", "scope": 9424, "src": "3897:13:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 9399, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3897:4:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 9402, "mutability": "mutable", "name": "mgp_", "nameLocation": "3920:4:45", "nodeType": "VariableDeclaration", "scope": 9424, "src": "3912:12:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9401, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3912:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3870:55:45"}, "returnParameters": {"id": 9407, "nodeType": "ParameterList", "parameters": [], "src": "3963:0:45"}, "scope": 9576, "src": "3842:248:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9488, "nodeType": "Block", "src": "4454:458:45", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9441, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9437, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4472:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9438, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4481:18:45", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "4472:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 9439, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4503:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9440, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4512:21:45", "memberName": "approvedCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9865, "src": "4503:30:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4472:61:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "756e617070726f76656420636f6c6c61626f7261746f7273206c656674", "id": 9442, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4535:31:45", "typeDescriptions": {"typeIdentifier": "t_stringliteral_ed091be262e797de0fe6bdaedee594092ac508d149b9c65bad4b432d08f6e3b0", "typeString": "literal_string \"unapproved collaborators left\""}, "value": "unapproved collaborators left"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_ed091be262e797de0fe6bdaedee594092ac508d149b9c65bad4b432d08f6e3b0", "typeString": "literal_string \"unapproved collaborators left\""}], "id": 9436, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4464:7:45", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9443, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4464:103:45", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9444, "nodeType": "ExpressionStatement", "src": "4464:103:45"}, {"expression": {"id": 9451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 9445, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9434, "src": "4577:11:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9450, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9446, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4591:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9447, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4600:6:45", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9839, "src": "4591:15:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 9448, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4609:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9449, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4618:15:45", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9841, "src": "4609:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4591:42:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4577:56:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9452, "nodeType": "ExpressionStatement", "src": "4577:56:45"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9453, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4647:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9454, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4656:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "4647:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9455, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4674:1:45", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4647:28:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9462, "nodeType": "IfStatement", "src": "4643:73:45", "trueBody": {"expression": {"id": 9460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 9457, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9434, "src": "4677:11:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 9458, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4692:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9459, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4701:15:45", "memberName": "budgetObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9845, "src": "4692:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4677:39:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9461, "nodeType": "ExpressionStatement", "src": "4677:39:45"}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9466, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9463, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4730:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9464, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4739:18:45", "memberName": "totalCollaborators", "nodeType": "MemberAccess", "referencedDeclaration": 9861, "src": "4730:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9465, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4761:1:45", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4730:32:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9472, "nodeType": "IfStatement", "src": "4726:67:45", "trueBody": {"expression": {"id": 9470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 9467, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9434, "src": "4764:11:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"expression": {"id": 9468, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4779:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9469, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "4788:5:45", "memberName": "bonus", "nodeType": "MemberAccess", "referencedDeclaration": 9849, "src": "4779:14:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4764:29:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9471, "nodeType": "ExpressionStatement", "src": "4764:29:45"}}, {"expression": {"id": 9478, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9473, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4803:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9475, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "4812:12:45", "memberName": "timeFinished", "nodeType": "MemberAccess", "referencedDeclaration": 9857, "src": "4803:21:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9476, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4827:5:45", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9477, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4833:9:45", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4827:15:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4803:39:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9479, "nodeType": "ExpressionStatement", "src": "4803:39:45"}, {"expression": {"id": 9484, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9480, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4852:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9482, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "4861:8:45", "memberName": "isActive", "nodeType": "MemberAccess", "referencedDeclaration": 9869, "src": "4852:17:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "66616c7365", "id": 9483, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4872:5:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "src": "4852:25:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9485, "nodeType": "ExpressionStatement", "src": "4852:25:45"}, {"expression": {"id": 9486, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9434, "src": "4894:11:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 9435, "id": 9487, "nodeType": "Return", "src": "4887:18:45"}]}, "documentation": {"id": 9425, "nodeType": "StructuredDocumentation", "src": "4096:236:45", "text": " @notice Finishes package in project, checks if already finished, records time\n if budget left and there is no collaborators, bonus is refunded to package budget\n @param package_ reference to Package struct"}, "id": 9489, "implemented": true, "kind": "function", "modifiers": [{"arguments": [{"id": 9431, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9428, "src": "4414:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}], "id": 9432, "kind": "modifierInvocation", "modifierName": {"id": 9430, "name": "onlyActivePackage", "nameLocations": ["4396:17:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9158, "src": "4396:17:45"}, "nodeType": "ModifierInvocation", "src": "4396:27:45"}], "name": "_finishPackage", "nameLocation": "4346:14:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9429, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9428, "mutability": "mutable", "name": "package_", "nameLocation": "4377:8:45", "nodeType": "VariableDeclaration", "scope": 9489, "src": "4361:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9427, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9426, "name": "Package", "nameLocations": ["4361:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "4361:7:45"}, "referencedDeclaration": 9870, "src": "4361:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "4360:26:45"}, "returnParameters": {"id": 9435, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9434, "mutability": "mutable", "name": "budgetLeft_", "nameLocation": "4441:11:45", "nodeType": "VariableDeclaration", "scope": 9489, "src": "4433:19:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4433:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4432:21:45"}, "scope": 9576, "src": "4337:575:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9524, "nodeType": "Block", "src": "5127:287:45", "statements": [{"assignments": [9499], "declarations": [{"constant": false, "id": 9499, "mutability": "mutable", "name": "remains", "nameLocation": "5145:7:45", "nodeType": "VariableDeclaration", "scope": 9524, "src": "5137:15:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9498, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5137:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 9505, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9500, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9493, "src": "5155:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9501, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5164:15:45", "memberName": "budgetObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9845, "src": "5155:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 9502, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9493, "src": "5182:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9503, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5191:19:45", "memberName": "budgetObserversPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9847, "src": "5182:28:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5155:55:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5137:73:45"}, {"assignments": [9507], "declarations": [{"constant": false, "id": 9507, "mutability": "mutable", "name": "portion", "nameLocation": "5287:7:45", "nodeType": "VariableDeclaration", "scope": 9524, "src": "5279:15:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9506, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5279:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 9513, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9512, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9508, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9493, "src": "5297:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9509, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5306:15:45", "memberName": "budgetObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9845, "src": "5297:24:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"expression": {"id": 9510, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9493, "src": "5324:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9511, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "5333:14:45", "memberName": "totalObservers", "nodeType": "MemberAccess", "referencedDeclaration": 9859, "src": "5324:23:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5297:50:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5279:68:45"}, {"expression": {"condition": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 9514, "name": "remains", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9499, "src": "5365:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 9515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5375:1:45", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 9516, "name": "portion", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9507, "src": "5379:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5375:11:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5365:21:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 9519, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "5364:23:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"id": 9521, "name": "portion", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9507, "src": "5400:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9522, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "5364:43:45", "trueExpression": {"id": 9520, "name": "remains", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9499, "src": "5390:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 9497, "id": 9523, "nodeType": "Return", "src": "5357:50:45"}]}, "documentation": {"id": 9490, "nodeType": "StructuredDocumentation", "src": "4918:121:45", "text": " @notice Get observer's claimable portion in package\n @param package_ reference to Package struct"}, "id": 9525, "implemented": true, "kind": "function", "modifiers": [], "name": "_getObserverFee", "nameLocation": "5053:15:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9494, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9493, "mutability": "mutable", "name": "package_", "nameLocation": "5085:8:45", "nodeType": "VariableDeclaration", "scope": 9525, "src": "5069:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9492, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9491, "name": "Package", "nameLocations": ["5069:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "5069:7:45"}, "referencedDeclaration": 9870, "src": "5069:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}], "src": "5068:26:45"}, "returnParameters": {"id": 9497, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9496, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 9525, "src": "5118:7:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9495, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5118:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5117:9:45"}, "scope": 9576, "src": "5044:370:45", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 9540, "nodeType": "Block", "src": "5621:56:45", "statements": [{"expression": {"id": 9538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9534, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9529, "src": "5631:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9536, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5640:19:45", "memberName": "budgetObserversPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9847, "src": "5631:28:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9537, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9531, "src": "5663:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5631:39:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9539, "nodeType": "ExpressionStatement", "src": "5631:39:45"}]}, "documentation": {"id": 9526, "nodeType": "StructuredDocumentation", "src": "5420:119:45", "text": " @notice Increases package's observers budget paid\n @param package_ reference to Package struct"}, "id": 9541, "implemented": true, "kind": "function", "modifiers": [], "name": "_payObserverFee", "nameLocation": "5553:15:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9532, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9529, "mutability": "mutable", "name": "package_", "nameLocation": "5585:8:45", "nodeType": "VariableDeclaration", "scope": 9541, "src": "5569:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9528, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9527, "name": "Package", "nameLocations": ["5569:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "5569:7:45"}, "referencedDeclaration": 9870, "src": "5569:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9531, "mutability": "mutable", "name": "amount_", "nameLocation": "5603:7:45", "nodeType": "VariableDeclaration", "scope": 9541, "src": "5595:15:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9530, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5595:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5568:43:45"}, "returnParameters": {"id": 9533, "nodeType": "ParameterList", "parameters": [], "src": "5621:0:45"}, "scope": 9576, "src": "5544:133:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9574, "nodeType": "Block", "src": "5966:169:45", "statements": [{"expression": {"id": 9556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9552, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9545, "src": "5976:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9554, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "5985:10:45", "memberName": "budgetPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9843, "src": "5976:19:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9555, "name": "mgp_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9547, "src": "5999:4:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5976:27:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9557, "nodeType": "ExpressionStatement", "src": "5976:27:45"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 9558, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9549, "src": "6017:6:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 9559, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6026:1:45", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "6017:10:45", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9573, "nodeType": "IfStatement", "src": "6013:116:45", "trueBody": {"id": 9572, "nodeType": "Block", "src": "6029:100:45", "statements": [{"expression": {"id": 9565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9561, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9545, "src": "6043:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9563, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6052:9:45", "memberName": "bonusPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9851, "src": "6043:18:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9564, "name": "bonus_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9549, "src": "6065:6:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6043:28:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9566, "nodeType": "ExpressionStatement", "src": "6043:28:45"}, {"expression": {"id": 9570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "6085:33:45", "subExpression": {"expression": {"id": 9567, "name": "package_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9545, "src": "6085:8:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package storage pointer"}}, "id": 9569, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "6094:22:45", "memberName": "collaboratorsPaidBonus", "nodeType": "MemberAccess", "referencedDeclaration": 9853, "src": "6085:31:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9571, "nodeType": "ExpressionStatement", "src": "6085:33:45"}]}}]}, "documentation": {"id": 9542, "nodeType": "StructuredDocumentation", "src": "5684:162:45", "text": " @notice Pay Reward to budget\n @param package_ reference to Package struct\n @param mgp_ MGP amount\n @param bonus_ Bonus amount"}, "id": 9575, "implemented": true, "kind": "function", "modifiers": [], "name": "_payReward", "nameLocation": "5860:10:45", "nodeType": "FunctionDefinition", "parameters": {"id": 9550, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9545, "mutability": "mutable", "name": "package_", "nameLocation": "5896:8:45", "nodeType": "VariableDeclaration", "scope": 9575, "src": "5880:24:45", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}, "typeName": {"id": 9544, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9543, "name": "Package", "nameLocations": ["5880:7:45"], "nodeType": "IdentifierPath", "referencedDeclaration": 9870, "src": "5880:7:45"}, "referencedDeclaration": 9870, "src": "5880:7:45", "typeDescriptions": {"typeIdentifier": "t_struct$_Package_$9870_storage_ptr", "typeString": "struct Package"}}, "visibility": "internal"}, {"constant": false, "id": 9547, "mutability": "mutable", "name": "mgp_", "nameLocation": "5922:4:45", "nodeType": "VariableDeclaration", "scope": 9575, "src": "5914:12:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9546, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5914:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9549, "mutability": "mutable", "name": "bonus_", "nameLocation": "5944:6:45", "nodeType": "VariableDeclaration", "scope": 9575, "src": "5936:14:45", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9548, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5936:7:45", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5870:86:45"}, "returnParameters": {"id": 9551, "nodeType": "ParameterList", "parameters": [], "src": "5966:0:45"}, "scope": 9576, "src": "5851:284:45", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 9577, "src": "98:6039:45", "usedErrors": []}], "src": "32:6106:45"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/ProjectLibrary.sol": {"AST": {"absolutePath": "contracts/libraries/ProjectLibrary.sol", "exportedSymbols": {"IERC20Upgradeable": [419], "ITokenFactory": [8890], "Project": [9837], "ProjectLibrary": [9816], "SafeERC20Upgradeable": [736]}, "id": 9817, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 9578, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:46"}, {"absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "id": 9581, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 9817, "sourceUnit": 737, "src": "56:137:46", "symbolAliases": [{"foreign": {"id": 9579, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "65:17:46", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 9580, "name": "SafeERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 736, "src": "84:20:46", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/interfaces/ITokenFactory.sol", "file": "../interfaces/ITokenFactory.sol", "id": 9583, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 9817, "sourceUnit": 8891, "src": "194:64:46", "symbolAliases": [{"foreign": {"id": 9582, "name": "ITokenFactory", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8890, "src": "203:13:46", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Structs.sol", "file": "./Structs.sol", "id": 9585, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 9817, "sourceUnit": 9893, "src": "259:40:46", "symbolAliases": [{"foreign": {"id": 9584, "name": "Project", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9837, "src": "268:7:46", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProjectLibrary", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 9816, "linearizedBaseContracts": [9816], "name": "ProjectLibrary", "nameLocation": "309:14:46", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 9589, "libraryName": {"id": 9586, "name": "SafeERC20Upgradeable", "nameLocations": ["336:20:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 736, "src": "336:20:46"}, "nodeType": "UsingForDirective", "src": "330:49:46", "typeName": {"id": 9588, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9587, "name": "IERC20Upgradeable", "nameLocations": ["361:17:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 419, "src": "361:17:46"}, "referencedDeclaration": 419, "src": "361:17:46", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}}, {"body": {"id": 9641, "nodeType": "Block", "src": "692:269:46", "statements": [{"expression": {"id": 9605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9600, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9593, "src": "702:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9602, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "711:9:46", "memberName": "initiator", "nodeType": "MemberAccess", "referencedDeclaration": 9820, "src": "702:18:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9603, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "723:3:46", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 9604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "727:6:46", "memberName": "sender", "nodeType": "MemberAccess", "src": "723:10:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "702:31:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 9606, "nodeType": "ExpressionStatement", "src": "702:31:46"}, {"expression": {"id": 9611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9607, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9593, "src": "743:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9609, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "752:5:46", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 9822, "src": "743:14:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9610, "name": "token_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9595, "src": "760:6:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "743:23:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 9612, "nodeType": "ExpressionStatement", "src": "743:23:46"}, {"expression": {"id": 9617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9613, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9593, "src": "776:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9615, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "785:6:46", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9824, "src": "776:15:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9616, "name": "budget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9597, "src": "794:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "776:25:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9618, "nodeType": "ExpressionStatement", "src": "776:25:46"}, {"expression": {"id": 9624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9619, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9593, "src": "811:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9621, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "820:11:46", "memberName": "timeCreated", "nodeType": "MemberAccess", "referencedDeclaration": 9830, "src": "811:20:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9622, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "834:5:46", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "840:9:46", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "834:15:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "811:38:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9625, "nodeType": "ExpressionStatement", "src": "811:38:46"}, {"expression": {"arguments": [{"expression": {"id": 9631, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "911:3:46", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 9632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "915:6:46", "memberName": "sender", "nodeType": "MemberAccess", "src": "911:10:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 9635, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "931:4:46", "typeDescriptions": {"typeIdentifier": "t_contract$_ProjectLibrary_$9816", "typeString": "library ProjectLibrary"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_ProjectLibrary_$9816", "typeString": "library ProjectLibrary"}], "id": 9634, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "923:7:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 9633, "name": "address", "nodeType": "ElementaryTypeName", "src": "923:7:46", "typeDescriptions": {}}}, "id": 9636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "923:13:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"expression": {"id": 9637, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9593, "src": "938:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9638, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "947:6:46", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9824, "src": "938:15:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 9627, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9593, "src": "878:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9628, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "887:5:46", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 9822, "src": "878:14:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 9626, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "860:17:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 9629, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:33:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 9630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "894:16:46", "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 513, "src": "860:50:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,address,uint256)"}}, "id": 9639, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:94:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9640, "nodeType": "ExpressionStatement", "src": "860:94:46"}]}, "documentation": {"id": 9590, "nodeType": "StructuredDocumentation", "src": "385:180:46", "text": " @notice Creates project proposal\n @param project_ reference to Project struct\n @param token_ project token address\n @param budget_ total budget"}, "id": 9642, "implemented": true, "kind": "function", "modifiers": [], "name": "_createProject", "nameLocation": "579:14:46", "nodeType": "FunctionDefinition", "parameters": {"id": 9598, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9593, "mutability": "mutable", "name": "project_", "nameLocation": "619:8:46", "nodeType": "VariableDeclaration", "scope": 9642, "src": "603:24:46", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 9592, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9591, "name": "Project", "nameLocations": ["603:7:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "603:7:46"}, "referencedDeclaration": 9837, "src": "603:7:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}, {"constant": false, "id": 9595, "mutability": "mutable", "name": "token_", "nameLocation": "645:6:46", "nodeType": "VariableDeclaration", "scope": 9642, "src": "637:14:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9594, "name": "address", "nodeType": "ElementaryTypeName", "src": "637:7:46", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 9597, "mutability": "mutable", "name": "budget_", "nameLocation": "669:7:46", "nodeType": "VariableDeclaration", "scope": 9642, "src": "661:15:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9596, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "661:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "593:89:46"}, "returnParameters": {"id": 9599, "nodeType": "ParameterList", "parameters": [], "src": "692:0:46"}, "scope": 9816, "src": "570:391:46", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9700, "nodeType": "Block", "src": "1279:468:46", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9652, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1297:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9653, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1306:12:46", "memberName": "timeFinished", "nodeType": "MemberAccess", "referencedDeclaration": 9832, "src": "1297:21:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1322:1:46", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1297:26:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "616c72656164792066696e69736865642070726f6a656374", "id": 9656, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1325:26:46", "typeDescriptions": {"typeIdentifier": "t_stringliteral_75be95256ae9d12ef5f898e9d7285d9a17d26198f78f1ee826d569b0e7121197", "typeString": "literal_string \"already finished project\""}, "value": "already finished project"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_75be95256ae9d12ef5f898e9d7285d9a17d26198f78f1ee826d569b0e7121197", "typeString": "literal_string \"already finished project\""}], "id": 9651, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1289:7:46", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9657, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1289:63:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9658, "nodeType": "ExpressionStatement", "src": "1289:63:46"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9664, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9660, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1370:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9661, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1379:13:46", "memberName": "totalPackages", "nodeType": "MemberAccess", "referencedDeclaration": 9834, "src": "1370:22:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"id": 9662, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1396:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9663, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1405:21:46", "memberName": "totalFinishedPackages", "nodeType": "MemberAccess", "referencedDeclaration": 9836, "src": "1396:30:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1370:56:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "756e66696e6973686564207061636b61676573206c656674", "id": 9665, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1428:26:46", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2d138ed1bec770596f06c52e2b2a29827ecd39d9b15f403da40d441285c879d3", "typeString": "literal_string \"unfinished packages left\""}, "value": "unfinished packages left"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2d138ed1bec770596f06c52e2b2a29827ecd39d9b15f403da40d441285c879d3", "typeString": "literal_string \"unfinished packages left\""}], "id": 9659, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1362:7:46", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9666, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1362:93:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9667, "nodeType": "ExpressionStatement", "src": "1362:93:46"}, {"expression": {"id": 9673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9668, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1465:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9670, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1474:12:46", "memberName": "timeFinished", "nodeType": "MemberAccess", "referencedDeclaration": 9832, "src": "1465:21:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"expression": {"id": 9671, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1489:5:46", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 9672, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1495:9:46", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "1489:15:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1465:39:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9674, "nodeType": "ExpressionStatement", "src": "1465:39:46"}, {"assignments": [9676], "declarations": [{"constant": false, "id": 9676, "mutability": "mutable", "name": "budgetLeft_", "nameLocation": "1522:11:46", "nodeType": "VariableDeclaration", "scope": 9700, "src": "1514:19:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9675, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1514:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 9682, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9681, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9677, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1536:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9678, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1545:6:46", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9824, "src": "1536:15:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 9679, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1554:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9680, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1563:15:46", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9826, "src": "1554:24:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1536:42:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1514:64:46"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9685, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 9683, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9676, "src": "1592:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 9684, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1606:1:46", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1592:15:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9697, "nodeType": "IfStatement", "src": "1588:125:46", "trueBody": {"id": 9696, "nodeType": "Block", "src": "1609:104:46", "statements": [{"expression": {"arguments": [{"expression": {"id": 9691, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1670:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9692, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1679:9:46", "memberName": "initiator", "nodeType": "MemberAccess", "referencedDeclaration": 9820, "src": "1670:18:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 9693, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9676, "src": "1690:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 9687, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9646, "src": "1641:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9688, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1650:5:46", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 9822, "src": "1641:14:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 9686, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "1623:17:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 9689, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1623:33:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 9690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1657:12:46", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 487, "src": "1623:46:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,uint256)"}}, "id": 9694, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1623:79:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9695, "nodeType": "ExpressionStatement", "src": "1623:79:46"}]}}, {"expression": {"id": 9698, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9676, "src": "1729:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 9650, "id": 9699, "nodeType": "Return", "src": "1722:18:46"}]}, "documentation": {"id": 9643, "nodeType": "StructuredDocumentation", "src": "967:230:46", "text": " @notice Finishes project, checks if already finished or unfinished packages left\n unallocated budget returned to initiator or burned (in case of IOUToken)\n @param project_ reference to Project struct"}, "id": 9701, "implemented": true, "kind": "function", "modifiers": [], "name": "_finishProject", "nameLocation": "1211:14:46", "nodeType": "FunctionDefinition", "parameters": {"id": 9647, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9646, "mutability": "mutable", "name": "project_", "nameLocation": "1242:8:46", "nodeType": "VariableDeclaration", "scope": 9701, "src": "1226:24:46", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 9645, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9644, "name": "Project", "nameLocations": ["1226:7:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "1226:7:46"}, "referencedDeclaration": 9837, "src": "1226:7:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}], "src": "1225:26:46"}, "returnParameters": {"id": 9650, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9649, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 9701, "src": "1270:7:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9648, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1270:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1269:9:46"}, "scope": 9816, "src": "1202:545:46", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9741, "nodeType": "Block", "src": "2123:273:46", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9714, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9711, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9705, "src": "2141:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9712, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2150:12:46", "memberName": "timeFinished", "nodeType": "MemberAccess", "referencedDeclaration": 9832, "src": "2141:21:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 9713, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2166:1:46", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2141:26:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "70726f6a6563742069732066696e6973686564", "id": 9715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2169:21:46", "typeDescriptions": {"typeIdentifier": "t_stringliteral_afa84a33b9649370a026fa9aa5c169a9392b72dfcc578ed5a0081cf930e5a0b5", "typeString": "literal_string \"project is finished\""}, "value": "project is finished"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_afa84a33b9649370a026fa9aa5c169a9392b72dfcc578ed5a0081cf930e5a0b5", "typeString": "literal_string \"project is finished\""}], "id": 9710, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2133:7:46", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9716, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2133:58:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9717, "nodeType": "ExpressionStatement", "src": "2133:58:46"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9719, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9705, "src": "2209:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9720, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2218:6:46", "memberName": "budget", "nodeType": "MemberAccess", "referencedDeclaration": 9824, "src": "2209:15:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9724, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 9721, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9705, "src": "2228:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9722, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "2237:15:46", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9826, "src": "2228:24:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 9723, "name": "totalBudget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9707, "src": "2255:12:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2228:39:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2209:58:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "6e6f7420656e6f7567682070726f6a65637420627564676574206c656674", "id": 9726, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2269:32:46", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d27e1e41eed816741d364ef7be75687b959b087b5aa4a7916c90f68081f88ce2", "typeString": "literal_string \"not enough project budget left\""}, "value": "not enough project budget left"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_d27e1e41eed816741d364ef7be75687b959b087b5aa4a7916c90f68081f88ce2", "typeString": "literal_string \"not enough project budget left\""}], "id": 9718, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2201:7:46", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 9727, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2201:101:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9728, "nodeType": "ExpressionStatement", "src": "2201:101:46"}, {"expression": {"id": 9733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9729, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9705, "src": "2312:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9731, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2321:15:46", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9826, "src": "2312:24:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9732, "name": "totalBudget_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9707, "src": "2340:12:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2312:40:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9734, "nodeType": "ExpressionStatement", "src": "2312:40:46"}, {"expression": {"id": 9739, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9735, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9705, "src": "2362:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9737, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2371:13:46", "memberName": "totalPackages", "nodeType": "MemberAccess", "referencedDeclaration": 9834, "src": "2362:22:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 9738, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2388:1:46", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "2362:27:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9740, "nodeType": "ExpressionStatement", "src": "2362:27:46"}]}, "documentation": {"id": 9702, "nodeType": "StructuredDocumentation", "src": "1753:254:46", "text": " @notice Creates package in project, check if there is budget available\n allocates budget and increase total number of packages\n @param project_ reference to Project struct\n @param totalBudget_ total budget MGP + Bonus"}, "id": 9742, "implemented": true, "kind": "function", "modifiers": [], "name": "_reservePackagesBudget", "nameLocation": "2021:22:46", "nodeType": "FunctionDefinition", "parameters": {"id": 9708, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9705, "mutability": "mutable", "name": "project_", "nameLocation": "2069:8:46", "nodeType": "VariableDeclaration", "scope": 9742, "src": "2053:24:46", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 9704, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9703, "name": "Project", "nameLocations": ["2053:7:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "2053:7:46"}, "referencedDeclaration": 9837, "src": "2053:7:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}, {"constant": false, "id": 9707, "mutability": "mutable", "name": "totalBudget_", "nameLocation": "2095:12:46", "nodeType": "VariableDeclaration", "scope": 9742, "src": "2087:20:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9706, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2087:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2043:70:46"}, "returnParameters": {"id": 9709, "nodeType": "ParameterList", "parameters": [], "src": "2123:0:46"}, "scope": 9816, "src": "2012:384:46", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9762, "nodeType": "Block", "src": "2671:98:46", "statements": [{"expression": {"id": 9755, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9751, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9746, "src": "2681:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9753, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2690:15:46", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9826, "src": "2681:24:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 9754, "name": "budgetToBeReverted_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9748, "src": "2709:19:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2681:47:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9756, "nodeType": "ExpressionStatement", "src": "2681:47:46"}, {"expression": {"id": 9760, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "2738:24:46", "subExpression": {"expression": {"id": 9757, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9746, "src": "2738:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9759, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2747:13:46", "memberName": "totalPackages", "nodeType": "MemberAccess", "referencedDeclaration": 9834, "src": "2738:22:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9761, "nodeType": "ExpressionStatement", "src": "2738:24:46"}]}, "documentation": {"id": 9743, "nodeType": "StructuredDocumentation", "src": "2402:170:46", "text": " @notice Get back package budget package\n @param project_ Project reference address\n @param budgetToBeReverted_ Budget amount to be reverted"}, "id": 9763, "implemented": true, "kind": "function", "modifiers": [], "name": "_revertPackageBudget", "nameLocation": "2586:20:46", "nodeType": "FunctionDefinition", "parameters": {"id": 9749, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9746, "mutability": "mutable", "name": "project_", "nameLocation": "2623:8:46", "nodeType": "VariableDeclaration", "scope": 9763, "src": "2607:24:46", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 9745, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9744, "name": "Project", "nameLocations": ["2607:7:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "2607:7:46"}, "referencedDeclaration": 9837, "src": "2607:7:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}, {"constant": false, "id": 9748, "mutability": "mutable", "name": "budgetToBeReverted_", "nameLocation": "2641:19:46", "nodeType": "VariableDeclaration", "scope": 9763, "src": "2633:27:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9747, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2633:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2606:55:46"}, "returnParameters": {"id": 9750, "nodeType": "ParameterList", "parameters": [], "src": "2671:0:46"}, "scope": 9816, "src": "2577:192:46", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9787, "nodeType": "Block", "src": "3116:119:46", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 9774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 9772, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9769, "src": "3130:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 9773, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3144:1:46", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3130:15:46", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 9781, "nodeType": "IfStatement", "src": "3126:60:46", "trueBody": {"expression": {"id": 9779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9775, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9767, "src": "3147:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9777, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3156:15:46", "memberName": "budgetAllocated", "nodeType": "MemberAccess", "referencedDeclaration": 9826, "src": "3147:24:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 9778, "name": "budgetLeft_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9769, "src": "3175:11:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3147:39:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9780, "nodeType": "ExpressionStatement", "src": "3147:39:46"}}, {"expression": {"id": 9785, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3196:32:46", "subExpression": {"expression": {"id": 9782, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9767, "src": "3196:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9784, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3205:21:46", "memberName": "totalFinishedPackages", "nodeType": "MemberAccess", "referencedDeclaration": 9836, "src": "3196:30:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9786, "nodeType": "ExpressionStatement", "src": "3196:32:46"}]}, "documentation": {"id": 9764, "nodeType": "StructuredDocumentation", "src": "2775:256:46", "text": " @notice Finishes package in project, budget left addded refunded back to project budget\n increases total number of finished packages\n @param project_ reference to Project struct\n @param budgetLeft_ amount of budget left"}, "id": 9788, "implemented": true, "kind": "function", "modifiers": [], "name": "_finishPackage", "nameLocation": "3045:14:46", "nodeType": "FunctionDefinition", "parameters": {"id": 9770, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9767, "mutability": "mutable", "name": "project_", "nameLocation": "3076:8:46", "nodeType": "VariableDeclaration", "scope": 9788, "src": "3060:24:46", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 9766, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9765, "name": "Project", "nameLocations": ["3060:7:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "3060:7:46"}, "referencedDeclaration": 9837, "src": "3060:7:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}, {"constant": false, "id": 9769, "mutability": "mutable", "name": "budgetLeft_", "nameLocation": "3094:11:46", "nodeType": "VariableDeclaration", "scope": 9788, "src": "3086:19:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9768, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3086:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3059:47:46"}, "returnParameters": {"id": 9771, "nodeType": "ParameterList", "parameters": [], "src": "3116:0:46"}, "scope": 9816, "src": "3036:199:46", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 9814, "nodeType": "Block", "src": "3524:123:46", "statements": [{"expression": {"id": 9803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 9799, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9792, "src": "3534:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9801, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "3543:10:46", "memberName": "budgetPaid", "nodeType": "MemberAccess", "referencedDeclaration": 9828, "src": "3534:19:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 9802, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9796, "src": "3557:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3534:30:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 9804, "nodeType": "ExpressionStatement", "src": "3534:30:46"}, {"expression": {"arguments": [{"id": 9810, "name": "receiver_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9794, "src": "3621:9:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 9811, "name": "amount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9796, "src": "3632:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"arguments": [{"expression": {"id": 9806, "name": "project_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9792, "src": "3592:8:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project storage pointer"}}, "id": 9807, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "3601:5:46", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 9822, "src": "3592:14:46", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 9805, "name": "IERC20Upgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "3574:17:46", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "type(contract IERC20Upgradeable)"}}, "id": 9808, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3574:33:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20Upgradeable_$419", "typeString": "contract IERC20Upgradeable"}}, "id": 9809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3608:12:46", "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 487, "src": "3574:46:46", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$419_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$419_$", "typeString": "function (contract IERC20Upgradeable,address,uint256)"}}, "id": 9812, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3574:66:46", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 9813, "nodeType": "ExpressionStatement", "src": "3574:66:46"}]}, "documentation": {"id": 9789, "nodeType": "StructuredDocumentation", "src": "3241:163:46", "text": " @notice Pays from project's budget, increases budget paid\n @param project_ reference to Project struct\n @param amount_ amount to pay"}, "id": 9815, "implemented": true, "kind": "function", "modifiers": [], "name": "_pay", "nameLocation": "3418:4:46", "nodeType": "FunctionDefinition", "parameters": {"id": 9797, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 9792, "mutability": "mutable", "name": "project_", "nameLocation": "3448:8:46", "nodeType": "VariableDeclaration", "scope": 9815, "src": "3432:24:46", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}, "typeName": {"id": 9791, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 9790, "name": "Project", "nameLocations": ["3432:7:46"], "nodeType": "IdentifierPath", "referencedDeclaration": 9837, "src": "3432:7:46"}, "referencedDeclaration": 9837, "src": "3432:7:46", "typeDescriptions": {"typeIdentifier": "t_struct$_Project_$9837_storage_ptr", "typeString": "struct Project"}}, "visibility": "internal"}, {"constant": false, "id": 9794, "mutability": "mutable", "name": "receiver_", "nameLocation": "3474:9:46", "nodeType": "VariableDeclaration", "scope": 9815, "src": "3466:17:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9793, "name": "address", "nodeType": "ElementaryTypeName", "src": "3466:7:46", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 9796, "mutability": "mutable", "name": "amount_", "nameLocation": "3501:7:46", "nodeType": "VariableDeclaration", "scope": 9815, "src": "3493:15:46", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9795, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3493:7:46", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3422:92:46"}, "returnParameters": {"id": 9798, "nodeType": "ParameterList", "parameters": [], "src": "3524:0:46"}, "scope": 9816, "src": "3409:238:46", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 9817, "src": "301:3348:46", "usedErrors": []}], "src": "32:3618:46"}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/Structs.sol": {"AST": {"absolutePath": "contracts/libraries/Structs.sol", "exportedSymbols": {"Collaborator": [9885], "Observer": [9892], "Package": [9870], "Project": [9837]}, "id": 9893, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 9818, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:47"}, {"canonicalName": "Project", "id": 9837, "members": [{"constant": false, "id": 9820, "mutability": "mutable", "name": "initiator", "nameLocation": "86:9:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "78:17:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9819, "name": "address", "nodeType": "ElementaryTypeName", "src": "78:7:47", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 9822, "mutability": "mutable", "name": "token", "nameLocation": "109:5:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "101:13:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 9821, "name": "address", "nodeType": "ElementaryTypeName", "src": "101:7:47", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 9824, "mutability": "mutable", "name": "budget", "nameLocation": "128:6:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "120:14:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9823, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "120:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9826, "mutability": "mutable", "name": "budgetAllocated", "nameLocation": "148:15:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "140:23:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9825, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "140:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9828, "mutability": "mutable", "name": "budgetPaid", "nameLocation": "177:10:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "169:18:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9827, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "169:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9830, "mutability": "mutable", "name": "timeCreated", "nameLocation": "201:11:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "193:19:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9829, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9832, "mutability": "mutable", "name": "timeFinished", "nameLocation": "226:12:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "218:20:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9831, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "218:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9834, "mutability": "mutable", "name": "totalPackages", "nameLocation": "252:13:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "244:21:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9833, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "244:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9836, "mutability": "mutable", "name": "totalFinishedPackages", "nameLocation": "279:21:47", "nodeType": "VariableDeclaration", "scope": 9837, "src": "271:29:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9835, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "271:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Project", "nameLocation": "64:7:47", "nodeType": "StructDefinition", "scope": 9893, "src": "57:246:47", "visibility": "public"}, {"canonicalName": "Package", "id": 9870, "members": [{"constant": false, "id": 9839, "mutability": "mutable", "name": "budget", "nameLocation": "334:6:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "326:14:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9838, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "326:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9841, "mutability": "mutable", "name": "budgetAllocated", "nameLocation": "354:15:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "346:23:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9840, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "346:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9843, "mutability": "mutable", "name": "budgetPaid", "nameLocation": "383:10:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "375:18:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9842, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "375:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9845, "mutability": "mutable", "name": "budgetObservers", "nameLocation": "407:15:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "399:23:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9844, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "399:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9847, "mutability": "mutable", "name": "budgetObserversPaid", "nameLocation": "436:19:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "428:27:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9846, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "428:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9849, "mutability": "mutable", "name": "bonus", "nameLocation": "469:5:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "461:13:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9848, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "461:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9851, "mutability": "mutable", "name": "bonusPaid", "nameLocation": "488:9:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "480:17:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9850, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "480:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9853, "mutability": "mutable", "name": "collaboratorsPaidBonus", "nameLocation": "511:22:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "503:30:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9852, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "503:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9855, "mutability": "mutable", "name": "timeCreated", "nameLocation": "547:11:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "539:19:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9854, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "539:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9857, "mutability": "mutable", "name": "timeFinished", "nameLocation": "572:12:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "564:20:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9856, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "564:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9859, "mutability": "mutable", "name": "totalObservers", "nameLocation": "598:14:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "590:22:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9858, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "590:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9861, "mutability": "mutable", "name": "totalCollaborators", "nameLocation": "626:18:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "618:26:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9860, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "618:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9863, "mutability": "mutable", "name": "collaboratorsLimit", "nameLocation": "658:18:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "650:26:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9862, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "650:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9865, "mutability": "mutable", "name": "approvedCollaborators", "nameLocation": "690:21:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "682:29:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9864, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9867, "mutability": "mutable", "name": "timeCanceled", "nameLocation": "725:12:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "717:20:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9866, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "717:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9869, "mutability": "mutable", "name": "isActive", "nameLocation": "748:8:47", "nodeType": "VariableDeclaration", "scope": 9870, "src": "743:13:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 9868, "name": "bool", "nodeType": "ElementaryTypeName", "src": "743:4:47", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "name": "Package", "nameLocation": "312:7:47", "nodeType": "StructDefinition", "scope": 9893, "src": "305:454:47", "visibility": "public"}, {"canonicalName": "Collaborator", "id": 9885, "members": [{"constant": false, "id": 9872, "mutability": "mutable", "name": "mgp", "nameLocation": "795:3:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "787:11:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9871, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "787:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9874, "mutability": "mutable", "name": "bonus", "nameLocation": "812:5:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "804:13:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9873, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "804:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9876, "mutability": "mutable", "name": "timeCreated", "nameLocation": "831:11:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "823:19:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9875, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "823:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9878, "mutability": "mutable", "name": "timeMgpApproved", "nameLocation": "856:15:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "848:23:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9877, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "848:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9880, "mutability": "mutable", "name": "timeMgpPaid", "nameLocation": "885:11:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "877:19:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9879, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "877:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9882, "mutability": "mutable", "name": "timeBonusPaid", "nameLocation": "910:13:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "902:21:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9881, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "902:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9884, "mutability": "mutable", "name": "isRemoved", "nameLocation": "934:9:47", "nodeType": "VariableDeclaration", "scope": 9885, "src": "929:14:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 9883, "name": "bool", "nodeType": "ElementaryTypeName", "src": "929:4:47", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "name": "Collaborator", "nameLocation": "768:12:47", "nodeType": "StructDefinition", "scope": 9893, "src": "761:185:47", "visibility": "public"}, {"canonicalName": "Observer", "id": 9892, "members": [{"constant": false, "id": 9887, "mutability": "mutable", "name": "timeCreated", "nameLocation": "978:11:47", "nodeType": "VariableDeclaration", "scope": 9892, "src": "970:19:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9886, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "970:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9889, "mutability": "mutable", "name": "timePaid", "nameLocation": "1003:8:47", "nodeType": "VariableDeclaration", "scope": 9892, "src": "995:16:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 9888, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "995:7:47", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 9891, "mutability": "mutable", "name": "isRemoved", "nameLocation": "1022:9:47", "nodeType": "VariableDeclaration", "scope": 9892, "src": "1017:14:47", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 9890, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1017:4:47", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "name": "Observer", "nameLocation": "955:8:47", "nodeType": "StructDefinition", "scope": 9893, "src": "948:86:47", "visibility": "public"}], "src": "32:1003:47"}}}, "sourceList": ["/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/access/Ownable.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/proxy/Clones.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Address.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Context.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Strings.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ERC721Test.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/IOUToken.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/LearnToEarn.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/LearnToEarnTest.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/NFTReward.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ReBakedDAO.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/TokenFactory.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/ILearnToEarn.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/INFTReward.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/IReBakedDAO.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/ITokenFactory.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/CollaboratorLibrary.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/ObserverLibrary.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/PackageLibrary.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/ProjectLibrary.sol", "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/Structs.sol"], "contracts": {"/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\"},{\"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\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:ReentrancyGuardUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol:IERC20Upgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol:IERC20PermitUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol:SafeERC20Upgradeable": {"srcmap": "740:3847:5:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;740:3847:5;;;;;;;;;;;;;;;;;", "srcmap-runtime": "740:3847:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e165e128eb3b0861a743517b065f5f6c2595b678a8b664c05e6ca19f1306949664736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e165e128eb3b0861a743517b065f5f6c2595b678a8b664c05e6ca19f1306949664736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol:ERC721Upgradeable": {"srcmap": "751:14424:6:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "751:14424:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1987:344;;;;;;:::i;:::-;;:::i;:::-;;;565:14:48;;558:22;540:41;;528:2;513:18;1987:344:6;;;;;;;;2931:98;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:48;;;1679:51;;1667:2;1652:18;4407:167:6;1533:203:48;3928:418:6;;;;;;:::i;:::-;;:::i;:::-;;5084:327;;;;;;:::i;:::-;;:::i;5477:179::-;;;;;;:::i;:::-;;:::i;2651:218::-;;;;;;:::i;:::-;;:::i;2390:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2848:25:48;;;2836:2;2821:18;2390:204:6;2702:177:48;3093:102:6;;;:::i;4641:153::-;;;;;;:::i;:::-;;:::i;5722:315::-;;;;;;:::i;:::-;;:::i;3261:276::-;;;;;;:::i;:::-;;:::i;4860:162::-;;;;;;:::i;:::-;;:::i;1987:344::-;2111:4;-1:-1:-1;;;;;;2146:51:6;;-1:-1:-1;;;2146:51:6;;:126;;-1:-1:-1;;;;;;;2213:59:6;;-1:-1:-1;;;2213:59:6;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:15;;;2288:36:6;2127:197;1987:344;-1:-1:-1;;1987:344:6:o;2931:98::-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:6;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:6;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:6;:2;-1:-1:-1;;;;;4076:11:6;;4068:57;;;;-1:-1:-1;;;4068:57:6;;5363:2:48;4068:57:6;;;5345:21:48;5402:2;5382:18;;;5375:30;5441:34;5421:18;;;5414:62;-1:-1:-1;;;5492:18:48;;;5485:31;5533:19;;4068:57:6;;;;;;;;;929:10:12;-1:-1:-1;;;;;4157:21:6;;;;:62;;-1:-1:-1;4182:37:6;4199:5;929:10:12;4860:162:6;:::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:6;;5765:2:48;4136:171:6;;;5747:21:48;5804:2;5784:18;;;5777:30;5843:34;5823:18;;;5816:62;5914:32;5894:18;;;5887:60;5964:19;;4136:171:6;5563:426:48;4136:171:6;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;5084:327::-;5273:41;929:10:12;5306:7:6;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:6;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;5477:179::-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;2651:218::-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:6;;2784:56;;;;-1:-1:-1;;;2784:56:6;;6611:2:48;2784:56:6;;;6593:21:48;6650:2;6630:18;;;6623:30;-1:-1:-1;;;6669:18:48;;;6662:54;6733:18;;2784:56:6;6409:348:48;2390:204:6;2462:7;-1:-1:-1;;;;;2489:19:6;;2481:73;;;;-1:-1:-1;;;2481:73:6;;6964:2:48;2481:73:6;;;6946:21:48;7003:2;6983:18;;;6976:30;7042:34;7022:18;;;7015:62;-1:-1:-1;;;7093:18:48;;;7086:39;7142:19;;2481:73:6;6762:405:48;2481:73:6;-1:-1:-1;;;;;;2571:16:6;;;;;:9;:16;;;;;;;2390:204::o;3093:102::-;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;929:10:12;4768:8:6;4778;4735:18;:52::i;:::-;4641:153;;:::o;5722:315::-;5890:41;929:10:12;5923:7:6;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:6;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;3261:276::-;3334:13;3359:23;3374:7;3359:14;:23::i;:::-;3393:21;3417:10;3855:9;;;;;;;;;-1:-1:-1;3855:9:6;;;3779:92;3417:10;3393:34;;3468:1;3450:7;3444:21;:25;:86;;;;;;;;;;;;;;;;;3496:7;3505:18;:7;:16;:18::i;:::-;3479:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3444:86;3437:93;3261:276;-1:-1:-1;;;3261:276:6:o;4860:162::-;-1:-1:-1;;;;;4980:25:6;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162::o;12173:133::-;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:6;12246:53;;;;-1:-1:-1;;;12246:53:6;;6611:2:48;12246:53:6;;;6593:21:48;6650:2;6630:18;;;6623:30;-1:-1:-1;;;6669:18:48;;;6662:54;6733:18;;12246:53:6;6409:348:48;12246:53:6;12173:133;:::o;11464:182::-;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:6;-1:-1:-1;;;;;11538:29:6;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:6;;;;;;;;;;;11464:182;;:::o;7789:272::-;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:6;:7;-1:-1:-1;;;;;7966:16:6;;:52;;;;7986:32;8003:5;8010:7;7986:16;:32::i;:::-;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:6;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:6;;7966:87;7958:96;7789:272;-1:-1:-1;;;;7789:272:6:o;10736:616::-;10901:4;-1:-1:-1;;;;;10863:42:6;:34;10889:7;10863:25;:34::i;:::-;-1:-1:-1;;;;;10863:42:6;;10855:92;;;;-1:-1:-1;;;10855:92:6;;7875:2:48;10855:92:6;;;7857:21:48;7914:2;7894:18;;;7887:30;7953:34;7933:18;;;7926:62;-1:-1:-1;;;8004:18:48;;;7997:35;8049:19;;10855:92:6;7673:401:48;10855:92:6;-1:-1:-1;;;;;10965:16:6;;10957:65;;;;-1:-1:-1;;;10957:65:6;;8281:2:48;10957:65:6;;;8263:21:48;8320:2;8300:18;;;8293:30;8359:34;8339:18;;;8332:62;-1:-1:-1;;;8410:18:48;;;8403:34;8454:19;;10957:65:6;8079:400:48;10957:65:6;11134:29;11151:1;11155:7;11134:8;:29::i;:::-;-1:-1:-1;;;;;11174:15:6;;;;;;:9;:15;;;;;:20;;11193:1;;11174:15;:20;;11193:1;;11174:20;:::i;:::-;;;;-1:-1:-1;;;;;;;11204:13:6;;;;;;:9;:13;;;;;:18;;11221:1;;11204:13;:18;;11221:1;;11204:18;:::i;:::-;;;;-1:-1:-1;;11232:16:6;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;11232:21:6;-1:-1:-1;;;;;11232:21:6;;;;;;;;;11269:27;;11232:16;;11269:27;;;;;;;3998:348;3928:418;;:::o;11782:307::-;11932:8;-1:-1:-1;;;;;11923:17:6;:5;-1:-1:-1;;;;;11923:17:6;;11915:55;;;;-1:-1:-1;;;11915:55:6;;9081:2:48;11915:55:6;;;9063:21:48;9120:2;9100:18;;;9093:30;9159:27;9139:18;;;9132:55;9204:18;;11915:55:6;8879:349:48;11915:55:6;-1:-1:-1;;;;;11980:25:6;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:6;;;;;;;;;;12041:41;;540::48;;;12041::6;;513:18:48;12041:41:6;;;;;;;11782:307;;;:::o;6898:305::-;7048:28;7058:4;7064:2;7068:7;7048:9;:28::i;:::-;7094:47;7117:4;7123:2;7127:7;7136:4;7094:22;:47::i;:::-;7086:110;;;;-1:-1:-1;;;7086:110:6;;;;;;;:::i;403:703:13:-;459:13;676:5;685:1;676:10;672:51;;-1:-1:-1;;702:10:13;;;;;;;;;;;;-1:-1:-1;;;702:10:13;;;;;403:703::o;672:51::-;747:5;732:12;786:75;793:9;;786:75;;818:8;;;;:::i;:::-;;-1:-1:-1;840:10:13;;-1:-1:-1;848:2:13;840:10;;:::i;:::-;;;786:75;;;870:19;902:6;892:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;892:17:13;;870:39;;919:150;926:10;;919:150;;952:11;962:1;952:11;;:::i;:::-;;-1:-1:-1;1020:10:13;1028:2;1020:5;:10;:::i;:::-;1007:24;;:2;:24;:::i;:::-;994:39;;977:6;984;977:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;977:56:13;;;;;;;;-1:-1:-1;1047:11:13;1056:2;1047:11;;:::i;:::-;;;919:150;;12858:853:6;13007:4;-1:-1:-1;;;;;13027:13:6;;1476:19:11;:23;13023:682:6;;13062:82;;-1:-1:-1;;;13062:82:6;;-1:-1:-1;;;;;13062:47:6;;;;;:82;;929:10:12;;13124:4:6;;13130:7;;13139:4;;13062:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:6;;;;;;;;-1:-1:-1;;13062:82:6;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:6;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:6;-1:-1:-1;;;13194:62:6;;-1:-1:-1;13187:69:6;;13023:682;-1:-1:-1;13690:4:6;12858:853;;;;;;:::o;14:131:48:-;-1:-1:-1;;;;;;88:32:48;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:48;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:48;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:48:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:48;;1348:180;-1:-1:-1;1348:180:48:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:48;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:48:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:186::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2662:29;2681:9;2662:29;:::i;2884:347::-;2949:6;2957;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3049:29;3068:9;3049:29;:::i;:::-;3039:39;;3128:2;3117:9;3113:18;3100:32;3175:5;3168:13;3161:21;3154:5;3151:32;3141:60;;3197:1;3194;3187:12;3141:60;3220:5;3210:15;;;2884:347;;;;;:::o;3236:127::-;3297:10;3292:3;3288:20;3285:1;3278:31;3328:4;3325:1;3318:15;3352:4;3349:1;3342:15;3368:1138;3463:6;3471;3479;3487;3540:3;3528:9;3519:7;3515:23;3511:33;3508:53;;;3557:1;3554;3547:12;3508:53;3580:29;3599:9;3580:29;:::i;:::-;3570:39;;3628:38;3662:2;3651:9;3647:18;3628:38;:::i;:::-;3618:48;;3713:2;3702:9;3698:18;3685:32;3675:42;;3768:2;3757:9;3753:18;3740:32;3791:18;3832:2;3824:6;3821:14;3818:34;;;3848:1;3845;3838:12;3818:34;3886:6;3875:9;3871:22;3861:32;;3931:7;3924:4;3920:2;3916:13;3912:27;3902:55;;3953:1;3950;3943:12;3902:55;3989:2;3976:16;4011:2;4007;4004:10;4001:36;;;4017:18;;:::i;:::-;4092:2;4086:9;4060:2;4146:13;;-1:-1:-1;;4142:22:48;;;4166:2;4138:31;4134:40;4122:53;;;4190:18;;;4210:22;;;4187:46;4184:72;;;4236:18;;:::i;:::-;4276:10;4272:2;4265:22;4311:2;4303:6;4296:18;4351:7;4346:2;4341;4337;4333:11;4329:20;4326:33;4323:53;;;4372:1;4369;4362:12;4323:53;4428:2;4423;4419;4415:11;4410:2;4402:6;4398:15;4385:46;4473:1;4468:2;4463;4455:6;4451:15;4447:24;4440:35;4494:6;4484:16;;;;;;;3368:1138;;;;;;;:::o;4511:260::-;4579:6;4587;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4679:29;4698:9;4679:29;:::i;:::-;4669:39;;4727:38;4761:2;4750:9;4746:18;4727:38;:::i;:::-;4717:48;;4511:260;;;;;:::o;4776:380::-;4855:1;4851:12;;;;4898;;;4919:61;;4973:4;4965:6;4961:17;4951:27;;4919:61;5026:2;5018:6;5015:14;4995:18;4992:38;4989:161;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;4989:161;;4776:380;;;:::o;5994:410::-;6196:2;6178:21;;;6235:2;6215:18;;;6208:30;6274:34;6269:2;6254:18;;6247:62;-1:-1:-1;;;6340:2:48;6325:18;;6318:44;6394:3;6379:19;;5994:410::o;7172:496::-;7351:3;7389:6;7383:13;7405:66;7464:6;7459:3;7452:4;7444:6;7440:17;7405:66;:::i;:::-;7534:13;;7493:16;;;;7556:70;7534:13;7493:16;7603:4;7591:17;;7556:70;:::i;:::-;7642:20;;7172:496;-1:-1:-1;;;;7172:496:48:o;8484:127::-;8545:10;8540:3;8536:20;8533:1;8526:31;8576:4;8573:1;8566:15;8600:4;8597:1;8590:15;8616:128;8683:9;;;8704:11;;;8701:37;;;8718:18;;:::i;8749:125::-;8814:9;;;8835:10;;;8832:36;;;8848:18;;:::i;9233:414::-;9435:2;9417:21;;;9474:2;9454:18;;;9447:30;9513:34;9508:2;9493:18;;9486:62;-1:-1:-1;;;9579:2:48;9564:18;;9557:48;9637:3;9622:19;;9233:414::o;9652:135::-;9691:3;9712:17;;;9709:43;;9732:18;;:::i;:::-;-1:-1:-1;9779:1:48;9768:13;;9652:135::o;9792:127::-;9853:10;9848:3;9844:20;9841:1;9834:31;9884:4;9881:1;9874:15;9908:4;9905:1;9898:15;9924:120;9964:1;9990;9980:35;;9995:18;;:::i;:::-;-1:-1:-1;10029:9:48;;9924:120::o;10049:112::-;10081:1;10107;10097:35;;10112:18;;:::i;:::-;-1:-1:-1;10146:9:48;;10049:112::o;10166:127::-;10227:10;10222:3;10218:20;10215:1;10208:31;10258:4;10255:1;10248:15;10282:4;10279:1;10272:15;10298:489;-1:-1:-1;;;;;10567:15:48;;;10549:34;;10619:15;;10614:2;10599:18;;10592:43;10666:2;10651:18;;10644:34;;;10714:3;10709:2;10694:18;;10687:31;;;10492:4;;10735:46;;10761:19;;10753:6;10735:46;:::i;:::-;10727:54;10298:489;-1:-1:-1;;;;;;10298:489:48:o;10792:249::-;10861:6;10914:2;10902:9;10893:7;10889:23;10885:32;10882:52;;;10930:1;10927;10920:12;10882:52;10962:9;10956:16;10981:30;11005:5;10981:30;:::i", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b5061110b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c32565b6101ff565b60405190151581526020015b60405180910390f35b610104610251565b6040516100f39190610c9f565b61012461011f366004610cb2565b6102e3565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610ce7565b61030a565b005b61014f61015f366004610d11565b610424565b61014f610172366004610d11565b610455565b610124610185366004610cb2565b610470565b61019d610198366004610d4d565b6104d0565b6040519081526020016100f3565b610104610556565b61014f6101c1366004610d68565b610565565b61014f6101d4366004610dba565b610574565b6101046101e7366004610cb2565b6105ac565b6100e76101fa366004610e96565b610620565b60006001600160e01b031982166380ac58cd60e01b148061023057506001600160e01b03198216635b5e139f60e01b145b8061024b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461026090610ec9565b80601f016020809104026020016040519081016040528092919081815260200182805461028c90610ec9565b80156102d95780601f106102ae576101008083540402835291602001916102d9565b820191906000526020600020905b8154815290600101906020018083116102bc57829003601f168201915b5050505050905090565b60006102ee8261064e565b506000908152606960205260409020546001600160a01b031690565b600061031582610470565b9050806001600160a01b0316836001600160a01b0316036103875760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103a357506103a38133610620565b6104155760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161037e565b61041f83836106b0565b505050565b61042e338261071e565b61044a5760405162461bcd60e51b815260040161037e90610f03565b61041f83838361077d565b61041f83838360405180602001604052806000815250610574565b6000818152606760205260408120546001600160a01b03168061024b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b60006001600160a01b03821661053a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161037e565b506001600160a01b031660009081526068602052604090205490565b60606066805461026090610ec9565b610570338383610919565b5050565b61057e338361071e565b61059a5760405162461bcd60e51b815260040161037e90610f03565b6105a6848484846109e7565b50505050565b60606105b78261064e565b60006105ce60408051602081019091526000815290565b905060008151116105ee5760405180602001604052806000815250610619565b806105f884610a1a565b604051602001610609929190610f51565b6040516020818303038152906040525b9392505050565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b6000818152606760205260409020546001600160a01b03166106ad5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b50565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e582610470565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072a83610470565b9050806001600160a01b0316846001600160a01b0316148061075157506107518185610620565b806107755750836001600160a01b031661076a846102e3565b6001600160a01b0316145b949350505050565b826001600160a01b031661079082610470565b6001600160a01b0316146107f45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161037e565b6001600160a01b0382166108565760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161037e565b6108616000826106b0565b6001600160a01b038316600090815260686020526040812080546001929061088a908490610f96565b90915550506001600160a01b03821660009081526068602052604081208054600192906108b8908490610fa9565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361097a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161037e565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109f284848461077d565b6109fe84848484610b1b565b6105a65760405162461bcd60e51b815260040161037e90610fbc565b606081600003610a415750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a6b5780610a558161100e565b9150610a649050600a8361103d565b9150610a45565b60008167ffffffffffffffff811115610a8657610a86610da4565b6040519080825280601f01601f191660200182016040528015610ab0576020820181803683370190505b5090505b841561077557610ac5600183610f96565b9150610ad2600a86611051565b610add906030610fa9565b60f81b818381518110610af257610af2611065565b60200101906001600160f81b031916908160001a905350610b14600a8661103d565b9450610ab4565b60006001600160a01b0384163b15610c1157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b5f90339089908890889060040161107b565b6020604051808303816000875af1925050508015610b9a575060408051601f3d908101601f19168201909252610b97918101906110b8565b60015b610bf7573d808015610bc8576040519150601f19603f3d011682016040523d82523d6000602084013e610bcd565b606091505b508051600003610bef5760405162461bcd60e51b815260040161037e90610fbc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610775565b506001949350505050565b6001600160e01b0319811681146106ad57600080fd5b600060208284031215610c4457600080fd5b813561061981610c1c565b60005b83811015610c6a578181015183820152602001610c52565b50506000910152565b60008151808452610c8b816020860160208601610c4f565b601f01601f19169290920160200192915050565b6020815260006106196020830184610c73565b600060208284031215610cc457600080fd5b5035919050565b80356001600160a01b0381168114610ce257600080fd5b919050565b60008060408385031215610cfa57600080fd5b610d0383610ccb565b946020939093013593505050565b600080600060608486031215610d2657600080fd5b610d2f84610ccb565b9250610d3d60208501610ccb565b9150604084013590509250925092565b600060208284031215610d5f57600080fd5b61061982610ccb565b60008060408385031215610d7b57600080fd5b610d8483610ccb565b915060208301358015158114610d9957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dd057600080fd5b610dd985610ccb565b9350610de760208601610ccb565b925060408501359150606085013567ffffffffffffffff80821115610e0b57600080fd5b818701915087601f830112610e1f57600080fd5b813581811115610e3157610e31610da4565b604051601f8201601f19908116603f01168101908382118183101715610e5957610e59610da4565b816040528281528a6020848701011115610e7257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ea957600080fd5b610eb283610ccb565b9150610ec060208401610ccb565b90509250929050565b600181811c90821680610edd57607f821691505b602082108103610efd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f63818460208801610c4f565b835190830190610f77818360208801610c4f565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561024b5761024b610f80565b8082018082111561024b5761024b610f80565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006001820161102057611020610f80565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261104c5761104c611027565b500490565b60008261106057611060611027565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110ae90830184610c73565b9695505050505050565b6000602082840312156110ca57600080fd5b815161061981610c1c56fea264697066735822122026d21cd25ee907011cf5081bee77041a3e0d54377ffa5bce3d94ea3783baa26464736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c32565b6101ff565b60405190151581526020015b60405180910390f35b610104610251565b6040516100f39190610c9f565b61012461011f366004610cb2565b6102e3565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610ce7565b61030a565b005b61014f61015f366004610d11565b610424565b61014f610172366004610d11565b610455565b610124610185366004610cb2565b610470565b61019d610198366004610d4d565b6104d0565b6040519081526020016100f3565b610104610556565b61014f6101c1366004610d68565b610565565b61014f6101d4366004610dba565b610574565b6101046101e7366004610cb2565b6105ac565b6100e76101fa366004610e96565b610620565b60006001600160e01b031982166380ac58cd60e01b148061023057506001600160e01b03198216635b5e139f60e01b145b8061024b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606065805461026090610ec9565b80601f016020809104026020016040519081016040528092919081815260200182805461028c90610ec9565b80156102d95780601f106102ae576101008083540402835291602001916102d9565b820191906000526020600020905b8154815290600101906020018083116102bc57829003601f168201915b5050505050905090565b60006102ee8261064e565b506000908152606960205260409020546001600160a01b031690565b600061031582610470565b9050806001600160a01b0316836001600160a01b0316036103875760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103a357506103a38133610620565b6104155760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161037e565b61041f83836106b0565b505050565b61042e338261071e565b61044a5760405162461bcd60e51b815260040161037e90610f03565b61041f83838361077d565b61041f83838360405180602001604052806000815250610574565b6000818152606760205260408120546001600160a01b03168061024b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b60006001600160a01b03821661053a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161037e565b506001600160a01b031660009081526068602052604090205490565b60606066805461026090610ec9565b610570338383610919565b5050565b61057e338361071e565b61059a5760405162461bcd60e51b815260040161037e90610f03565b6105a6848484846109e7565b50505050565b60606105b78261064e565b60006105ce60408051602081019091526000815290565b905060008151116105ee5760405180602001604052806000815250610619565b806105f884610a1a565b604051602001610609929190610f51565b6040516020818303038152906040525b9392505050565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b6000818152606760205260409020546001600160a01b03166106ad5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b50565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e582610470565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072a83610470565b9050806001600160a01b0316846001600160a01b0316148061075157506107518185610620565b806107755750836001600160a01b031661076a846102e3565b6001600160a01b0316145b949350505050565b826001600160a01b031661079082610470565b6001600160a01b0316146107f45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161037e565b6001600160a01b0382166108565760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161037e565b6108616000826106b0565b6001600160a01b038316600090815260686020526040812080546001929061088a908490610f96565b90915550506001600160a01b03821660009081526068602052604081208054600192906108b8908490610fa9565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361097a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161037e565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109f284848461077d565b6109fe84848484610b1b565b6105a65760405162461bcd60e51b815260040161037e90610fbc565b606081600003610a415750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a6b5780610a558161100e565b9150610a649050600a8361103d565b9150610a45565b60008167ffffffffffffffff811115610a8657610a86610da4565b6040519080825280601f01601f191660200182016040528015610ab0576020820181803683370190505b5090505b841561077557610ac5600183610f96565b9150610ad2600a86611051565b610add906030610fa9565b60f81b818381518110610af257610af2611065565b60200101906001600160f81b031916908160001a905350610b14600a8661103d565b9450610ab4565b60006001600160a01b0384163b15610c1157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b5f90339089908890889060040161107b565b6020604051808303816000875af1925050508015610b9a575060408051601f3d908101601f19168201909252610b97918101906110b8565b60015b610bf7573d808015610bc8576040519150601f19603f3d011682016040523d82523d6000602084013e610bcd565b606091505b508051600003610bef5760405162461bcd60e51b815260040161037e90610fbc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610775565b506001949350505050565b6001600160e01b0319811681146106ad57600080fd5b600060208284031215610c4457600080fd5b813561061981610c1c565b60005b83811015610c6a578181015183820152602001610c52565b50506000910152565b60008151808452610c8b816020860160208601610c4f565b601f01601f19169290920160200192915050565b6020815260006106196020830184610c73565b600060208284031215610cc457600080fd5b5035919050565b80356001600160a01b0381168114610ce257600080fd5b919050565b60008060408385031215610cfa57600080fd5b610d0383610ccb565b946020939093013593505050565b600080600060608486031215610d2657600080fd5b610d2f84610ccb565b9250610d3d60208501610ccb565b9150604084013590509250925092565b600060208284031215610d5f57600080fd5b61061982610ccb565b60008060408385031215610d7b57600080fd5b610d8483610ccb565b915060208301358015158114610d9957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dd057600080fd5b610dd985610ccb565b9350610de760208601610ccb565b925060408501359150606085013567ffffffffffffffff80821115610e0b57600080fd5b818701915087601f830112610e1f57600080fd5b813581811115610e3157610e31610da4565b604051601f8201601f19908116603f01168101908382118183101715610e5957610e59610da4565b816040528281528a6020848701011115610e7257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ea957600080fd5b610eb283610ccb565b9150610ec060208401610ccb565b90509250929050565b600181811c90821680610edd57607f821691505b602082108103610efd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f63818460208801610c4f565b835190830190610f77818360208801610c4f565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561024b5761024b610f80565b8082018082111561024b5761024b610f80565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006001820161102057611020610f80565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261104c5761104c611027565b500490565b60008261106057611060611027565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110ae90830184610c73565b9695505050505050565b6000602082840312156110ca57600080fd5b815161061981610c1c56fea264697066735822122026d21cd25ee907011cf5081bee77041a3e0d54377ffa5bce3d94ea3783baa26464736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol:IERC721ReceiverUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol:IERC721Upgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol:ERC721URIStorageUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol:IERC721MetadataUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol:AddressUpgradeable": {"srcmap": "194:7172:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:7172:11;;;;;;;;;;;;;;;;;", "srcmap-runtime": "194:7172:11:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b8450de9442c0887020110ff364de8fdab82c4ec019c93283f4d51585d7f21f664736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b8450de9442c0887020110ff364de8fdab82c4ec019c93283f4d51585d7f21f664736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol:StringsUpgradeable": {"srcmap": "161:2246:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;161:2246:13;;;;;;;;;;;;;;;;;", "srcmap-runtime": "161:2246:13:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122067d9896cecbf745108d0d8c3d2f705d23ad36aac36bc943cabe3bb8c18e4b68064736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122067d9896cecbf745108d0d8c3d2f705d23ad36aac36bc943cabe3bb8c18e4b68064736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol:ERC165CheckerUpgradeable": {"srcmap": "460:4447:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;460:4447:14;;;;;;;;;;;;;;;;;", "srcmap-runtime": "460:4447:14:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203803f371ecd16ee7c70312f2eb0fda83e1ef503ba1894e6be72c873168ea12da64736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203803f371ecd16ee7c70312f2eb0fda83e1ef503ba1894e6be72c873168ea12da64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol:IERC165Upgradeable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/access/Ownable.sol:Ownable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"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\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/proxy/Clones.sol:Clones": {"srcmap": "755:2946:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;755:2946:18;;;;;;;;;;;;;;;;;", "srcmap-runtime": "755:2946:18:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cdf79bd7fb0da099da785a4981880b8ed5d56c34b4f73816d8a51bfcad39081a64736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cdf79bd7fb0da099da785a4981880b8ed5d56c34b4f73816d8a51bfcad39081a64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20": {"srcmap": "1403:11214:19:-:0;;;1978:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2044:5;:13;2052:5;2044;:13;:::i;:::-;-1:-1:-1;2067:7:19;:17;2077:7;2067;:17;:::i;:::-;;1978:113;;1403:11214;;14:127:48;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:48;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:48;;;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:48: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:48;;;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:48;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:48;;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:48;;;3992:26;3943:89;-1:-1:-1;;2747:1:48;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:48;;;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:48;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:48;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:48:o;:::-;1403:11214:19;;;;;;", "srcmap-runtime": "1403:11214:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:48;;1162:22;1144:41;;1132:2;1117:18;4433:197:19;1004:187:48;3244:106:19;3331:12;;3244:106;;;1342:25:48;;;1330:2;1315:18;3244:106:19;1196:177:48;5192:286:19;;;;;;:::i;:::-;;:::i;3093:91::-;;;3175:2;1853:36:48;;1841:2;1826:18;3093:91:19;1711:184:48;5873:234:19;;;;;;:::i;:::-;;:::i;3408:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3508:18:19;3482:7;3508:18;;;;;;;;;;;;3408:125;2367:102;;;:::i;6594:427::-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;;:::i;2156:98::-;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:28;4570:32:19;719:10:28;4586:7:19;4595:6;4570:8;:32::i;:::-;4619:4;4612:11;;;4433:197;;;;;:::o;5192:286::-;5319:4;719:10:28;5375:38:19;5391:4;719:10:28;5406:6:19;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:19;;5192:286;-1:-1:-1;;;;5192:286:19:o;5873:234::-;5961:4;719:10:28;6015:64:19;719:10:28;6031:7:19;6068:10;6040:25;719:10:28;6031:7:19;6040:9;:25::i;:::-;:38;;;;:::i;:::-;6015:8;:64::i;2367:102::-;2423:13;2455:7;2448:14;;;;;:::i;6594:427::-;6687:4;719:10:28;6687:4:19;6768:25;719:10:28;6785:7:19;6768:9;:25::i;:::-;6741:52;;6831:15;6811:16;:35;;6803:85;;;;-1:-1:-1;;;6803:85:19;;3170:2:48;6803:85:19;;;3152:21:48;3209:2;3189:18;;;3182:30;3248:34;3228:18;;;3221:62;-1:-1:-1;;;3299:18:48;;;3292:35;3344:19;;6803:85:19;;;;;;;;;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;3729:189::-;3808:4;719:10:28;3862:28:19;719:10:28;3879:2:19;3883:6;3862:9;:28::i;3976:149::-;-1:-1:-1;;;;;4091:18:19;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149::o;10110:370::-;-1:-1:-1;;;;;10241:19:19;;10233:68;;;;-1:-1:-1;;;10233:68:19;;3576:2:48;10233:68:19;;;3558:21:48;3615:2;3595:18;;;3588:30;3654:34;3634:18;;;3627:62;-1:-1:-1;;;3705:18:48;;;3698:34;3749:19;;10233:68:19;3374:400:48;10233:68:19;-1:-1:-1;;;;;10319:21:19;;10311:68;;;;-1:-1:-1;;;10311:68:19;;3981:2:48;10311:68:19;;;3963:21:48;4020:2;4000:18;;;3993:30;4059:34;4039:18;;;4032:62;-1:-1:-1;;;4110:18:48;;;4103:32;4152:19;;10311:68:19;3779:398:48;10311:68:19;-1:-1:-1;;;;;10390:18:19;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10441:32;;1342:25:48;;;10441:32:19;;1315:18:48;10441:32:19;;;;;;;10110:370;;;:::o;10761:441::-;10891:24;10918:25;10928:5;10935:7;10918:9;:25::i;:::-;10891:52;;-1:-1:-1;;10957:16:19;:37;10953:243;;11038:6;11018:16;:26;;11010:68;;;;-1:-1:-1;;;11010:68:19;;4384:2:48;11010:68:19;;;4366:21:48;4423:2;4403:18;;;4396:30;4462:31;4442:18;;;4435:59;4511:18;;11010:68:19;4182:353:48;11010:68:19;11120:51;11129:5;11136:7;11164:6;11145:16;:25;11120:8;:51::i;:::-;10881:321;10761:441;;;:::o;7475:651::-;-1:-1:-1;;;;;7601:18:19;;7593:68;;;;-1:-1:-1;;;7593:68:19;;4742:2:48;7593:68:19;;;4724:21:48;4781:2;4761:18;;;4754:30;4820:34;4800:18;;;4793:62;-1:-1:-1;;;4871:18:48;;;4864:35;4916:19;;7593:68:19;4540:401:48;7593:68:19;-1:-1:-1;;;;;7679:16:19;;7671:64;;;;-1:-1:-1;;;7671:64:19;;5148:2:48;7671:64:19;;;5130:21:48;5187:2;5167:18;;;5160:30;5226:34;5206:18;;;5199:62;-1:-1:-1;;;5277:18:48;;;5270:33;5320:19;;7671:64:19;4946:399:48;7671:64:19;-1:-1:-1;;;;;7817:15:19;;7795:19;7817:15;;;;;;;;;;;7850:21;;;;7842:72;;;;-1:-1:-1;;;7842:72:19;;5552:2:48;7842:72:19;;;5534:21:48;5591:2;5571:18;;;5564:30;5630:34;5610:18;;;5603:62;-1:-1:-1;;;5681:18:48;;;5674:36;5727:19;;7842:72:19;5350:402:48;7842:72:19;-1:-1:-1;;;;;7948:15:19;;;:9;:15;;;;;;;;;;;7966:20;;;7948:38;;8006:13;;;;;;;;:23;;7980:6;;7948:9;8006:23;;7980:6;;8006:23;:::i;:::-;;;;;;;;8060:2;-1:-1:-1;;;;;8045:26:19;8054:4;-1:-1:-1;;;;;8045:26:19;;8064:6;8045:26;;;;1342:25:48;;1330:2;1315:18;;1196:177;8045:26:19;;;;;;;;8082:37;11786:121;14:548:48;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:48;;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:48: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:48: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:222::-;2806:9;;;2827:10;;;2824:133;;;2879:10;2874:3;2870:20;2867:1;2860:31;2914:4;2911:1;2904:15;2942:4;2939:1;2932:15", "abi": "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"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\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b5060405162000b7038038062000b7083398101604081905262000034916200011f565b600362000042838262000218565b50600462000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61087c80620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c6565b60405180910390f35b6100df6100da366004610730565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075a565b61024c565b604051601281526020016100c3565b6100df610131366004610730565b610270565b6100f3610144366004610796565b6001600160a01b031660009081526020819052604090205490565b6100b6610292565b6100df610175366004610730565b6102a1565b6100df610188366004610730565b610321565b6100f361019b3660046107b8565b61032f565b6060600380546101af906107eb565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107eb565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b60003361024081858561035a565b60019150505b92915050565b60003361025a85828561047e565b6102658585856104f8565b506001949350505050565b600033610240818585610283838361032f565b61028d9190610825565b61035a565b6060600480546101af906107eb565b600033816102af828661032f565b9050838110156103145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610265828686840361035a565b6000336102408185856104f8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103bc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161030b565b6001600160a01b03821661041d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161030b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061048a848461032f565b905060001981146104f257818110156104e55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161030b565b6104f2848484840361035a565b50505050565b6001600160a01b03831661055c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161030b565b6001600160a01b0382166105be5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161030b565b6001600160a01b038316600090815260208190526040902054818110156106365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161030b565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066d908490610825565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b991815260200190565b60405180910390a36104f2565b600060208083528351808285015260005b818110156106f3578581018301518582016040015282016106d7565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461072b57600080fd5b919050565b6000806040838503121561074357600080fd5b61074c83610714565b946020939093013593505050565b60008060006060848603121561076f57600080fd5b61077884610714565b925061078660208501610714565b9150604084013590509250925092565b6000602082840312156107a857600080fd5b6107b182610714565b9392505050565b600080604083850312156107cb57600080fd5b6107d483610714565b91506107e260208401610714565b90509250929050565b600181811c908216806107ff57607f821691505b60208210810361081f57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024657634e487b7160e01b600052601160045260246000fdfea26469706673582212201977af5c3ad321f46487af4dfb1fbb65756e8cfe8ad8a2caeb1eed2b7a5ec59d64736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c6565b60405180910390f35b6100df6100da366004610730565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075a565b61024c565b604051601281526020016100c3565b6100df610131366004610730565b610270565b6100f3610144366004610796565b6001600160a01b031660009081526020819052604090205490565b6100b6610292565b6100df610175366004610730565b6102a1565b6100df610188366004610730565b610321565b6100f361019b3660046107b8565b61032f565b6060600380546101af906107eb565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107eb565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b60003361024081858561035a565b60019150505b92915050565b60003361025a85828561047e565b6102658585856104f8565b506001949350505050565b600033610240818585610283838361032f565b61028d9190610825565b61035a565b6060600480546101af906107eb565b600033816102af828661032f565b9050838110156103145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610265828686840361035a565b6000336102408185856104f8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103bc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161030b565b6001600160a01b03821661041d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161030b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061048a848461032f565b905060001981146104f257818110156104e55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161030b565b6104f2848484840361035a565b50505050565b6001600160a01b03831661055c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161030b565b6001600160a01b0382166105be5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161030b565b6001600160a01b038316600090815260208190526040902054818110156106365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161030b565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066d908490610825565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b991815260200190565b60405180910390a36104f2565b600060208083528351808285015260005b818110156106f3578581018301518582016040015282016106d7565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461072b57600080fd5b919050565b6000806040838503121561074357600080fd5b61074c83610714565b946020939093013593505050565b60008060006060848603121561076f57600080fd5b61077884610714565b925061078660208501610714565b9150604084013590509250925092565b6000602082840312156107a857600080fd5b6107b182610714565b9392505050565b600080604083850312156107cb57600080fd5b6107d483610714565b91506107e260208401610714565b90509250929050565b600181811c908216806107ff57607f821691505b60208210810361081f57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024657634e487b7160e01b600052601160045260246000fdfea26469706673582212201977af5c3ad321f46487af4dfb1fbb65756e8cfe8ad8a2caeb1eed2b7a5ec59d64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"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\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721": {"srcmap": "628:13718:22:-:0;;;1390:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1456:5;:13;1464:5;1456;:13;:::i;:::-;-1:-1:-1;1479:7:22;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;628:13718;;14:127:48;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:48;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:48;;;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:48: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:48;;;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:48;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:48;;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:48;;;3992:26;3943:89;-1:-1:-1;;2747:1:48;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:48;;;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:48;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:48;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:48:o;:::-;628:13718:22;;;;;;", "srcmap-runtime": "628:13718:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300;;;;;;:::i;:::-;;:::i;:::-;;;565:14:48;;558:22;540:41;;528:2;513:18;1570:300:22;;;;;;;;2470:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:48;;;1679:51;;1667:2;1652:18;3935:167:22;1533:203:48;3467:407:22;;;;;;:::i;:::-;;:::i;:::-;;4612:327;;;;;;:::i;:::-;;:::i;5005:179::-;;;;;;:::i;:::-;;:::i;2190:218::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2848:25:48;;;2836:2;2821:18;1929:204:22;2702:177:48;2632:102:22;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5250:315::-;;;;;;:::i;:::-;;:::i;2800:276::-;;;;;;:::i;:::-;;:::i;4388:162::-;;;;;;:::i;:::-;;:::i;1570:300::-;1672:4;-1:-1:-1;;;;;;1707:40:22;;-1:-1:-1;;;1707:40:22;;:104;;-1:-1:-1;;;;;;;1763:48:22;;-1:-1:-1;;;1763:48:22;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:30;;;1827:36:22;1688:175;1570:300;-1:-1:-1;;1570:300:22:o;2470:98::-;2524:13;2556:5;2549:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2470:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:22;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:22;;3935:167::o;3467:407::-;3547:13;3563:23;3578:7;3563:14;:23::i;:::-;3547:39;;3610:5;-1:-1:-1;;;;;3604:11:22;:2;-1:-1:-1;;;;;3604:11:22;;3596:57;;;;-1:-1:-1;;;3596:57:22;;5363:2:48;3596:57:22;;;5345:21:48;5402:2;5382:18;;;5375:30;5441:34;5421:18;;;5414:62;-1:-1:-1;;;5492:18:48;;;5485:31;5533:19;;3596:57:22;;;;;;;;;719:10:28;-1:-1:-1;;;;;3685:21:22;;;;:62;;-1:-1:-1;3710:37:22;3727:5;719:10:28;4388:162:22;:::i;3710:37::-;3664:171;;;;-1:-1:-1;;;3664:171:22;;5765:2:48;3664:171:22;;;5747:21:48;5804:2;5784:18;;;5777:30;5843:34;5823:18;;;5816:62;5914:32;5894:18;;;5887:60;5964:19;;3664:171:22;5563:426:48;3664:171:22;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3537:337;3467:407;;:::o;4612:327::-;4801:41;719:10:28;4834:7:22;4801:18;:41::i;:::-;4793:100;;;;-1:-1:-1;;;4793:100:22;;;;;;;:::i;:::-;4904:28;4914:4;4920:2;4924:7;4904:9;:28::i;5005:179::-;5138:39;5155:4;5161:2;5165:7;5138:39;;;;;;;;;;;;:16;:39::i;2190:218::-;2262:7;2297:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2297:16:22;;2323:56;;;;-1:-1:-1;;;2323:56:22;;6611:2:48;2323:56:22;;;6593:21:48;6650:2;6630:18;;;6623:30;-1:-1:-1;;;6669:18:48;;;6662:54;6733:18;;2323:56:22;6409:348:48;1929:204:22;2001:7;-1:-1:-1;;;;;2028:19:22;;2020:73;;;;-1:-1:-1;;;2020:73:22;;6964:2:48;2020:73:22;;;6946:21:48;7003:2;6983:18;;;6976:30;7042:34;7022:18;;;7015:62;-1:-1:-1;;;7093:18:48;;;7086:39;7142:19;;2020:73:22;6762:405:48;2020:73:22;-1:-1:-1;;;;;;2110:16:22;;;;;:9;:16;;;;;;;1929:204::o;2632:102::-;2688:13;2720:7;2713:14;;;;;:::i;4169:153::-;4263:52;719:10:28;4296:8:22;4306;4263:18;:52::i;:::-;4169:153;;:::o;5250:315::-;5418:41;719:10:28;5451:7:22;5418:18;:41::i;:::-;5410:100;;;;-1:-1:-1;;;5410:100:22;;;;;;;:::i;:::-;5520:38;5534:4;5540:2;5544:7;5553:4;5520:13;:38::i;:::-;5250:315;;;;:::o;2800:276::-;2873:13;2898:23;2913:7;2898:14;:23::i;:::-;2932:21;2956:10;3394:9;;;;;;;;;-1:-1:-1;3394:9:22;;;3318:92;2956:10;2932:34;;3007:1;2989:7;2983:21;:25;:86;;;;;;;;;;;;;;;;;3035:7;3044:18;:7;:16;:18::i;:::-;3018:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2983:86;2976:93;2800:276;-1:-1:-1;;;2800:276:22:o;4388:162::-;-1:-1:-1;;;;;4508:25:22;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162::o;11657:133::-;7099:4;7122:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7122:16:22;11730:53;;;;-1:-1:-1;;;11730:53:22;;6611:2:48;11730:53:22;;;6593:21:48;6650:2;6630:18;;;6623:30;-1:-1:-1;;;6669:18:48;;;6662:54;6733:18;;11730:53:22;6409:348:48;11730:53:22;11657:133;:::o;10959:171::-;11033:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11033:29:22;-1:-1:-1;;;;;11033:29:22;;;;;;;;:24;;11086:23;11033:24;11086:14;:23::i;:::-;-1:-1:-1;;;;;11077:46:22;;;;;;;;;;;10959:171;;:::o;7317:261::-;7410:4;7426:13;7442:23;7457:7;7442:14;:23::i;:::-;7426:39;;7494:5;-1:-1:-1;;;;;7483:16:22;:7;-1:-1:-1;;;;;7483:16:22;;:52;;;;7503:32;7520:5;7527:7;7503:16;:32::i;:::-;7483:87;;;;7563:7;-1:-1:-1;;;;;7539:31:22;:20;7551:7;7539:11;:20::i;:::-;-1:-1:-1;;;;;7539:31:22;;7483:87;7475:96;7317:261;-1:-1:-1;;;;7317:261:22:o;10242:605::-;10396:4;-1:-1:-1;;;;;10369:31:22;:23;10384:7;10369:14;:23::i;:::-;-1:-1:-1;;;;;10369:31:22;;10361:81;;;;-1:-1:-1;;;10361:81:22;;7875:2:48;10361:81:22;;;7857:21:48;7914:2;7894:18;;;7887:30;7953:34;7933:18;;;7926:62;-1:-1:-1;;;8004:18:48;;;7997:35;8049:19;;10361:81:22;7673:401:48;10361:81:22;-1:-1:-1;;;;;10460:16:22;;10452:65;;;;-1:-1:-1;;;10452:65:22;;8281:2:48;10452:65:22;;;8263:21:48;8320:2;8300:18;;;8293:30;8359:34;8339:18;;;8332:62;-1:-1:-1;;;8410:18:48;;;8403:34;8454:19;;10452:65:22;8079:400:48;10452:65:22;10629:29;10646:1;10650:7;10629:8;:29::i;:::-;-1:-1:-1;;;;;10669:15:22;;;;;;:9;:15;;;;;:20;;10688:1;;10669:15;:20;;10688:1;;10669:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10699:13:22;;;;;;:9;:13;;;;;:18;;10716:1;;10699:13;:18;;10716:1;;10699:18;:::i;:::-;;;;-1:-1:-1;;10727:16:22;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10727:21:22;-1:-1:-1;;;;;10727:21:22;;;;;;;;;10764:27;;10727:16;;10764:27;;;;;;;3537:337;3467:407;;:::o;11266:307::-;11416:8;-1:-1:-1;;;;;11407:17:22;:5;-1:-1:-1;;;;;11407:17:22;;11399:55;;;;-1:-1:-1;;;11399:55:22;;9081:2:48;11399:55:22;;;9063:21:48;9120:2;9100:18;;;9093:30;9159:27;9139:18;;;9132:55;9204:18;;11399:55:22;8879:349:48;11399:55:22;-1:-1:-1;;;;;11464:25:22;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11464:46:22;;;;;;;;;;11525:41;;540::48;;;11525::22;;513:18:48;11525:41:22;;;;;;;11266:307;;;:::o;6426:305::-;6576:28;6586:4;6592:2;6596:7;6576:9;:28::i;:::-;6622:47;6645:4;6651:2;6655:7;6664:4;6622:22;:47::i;:::-;6614:110;;;;-1:-1:-1;;;6614:110:22;;;;;;;:::i;392:703:29:-;448:13;665:5;674:1;665:10;661:51;;-1:-1:-1;;691:10:29;;;;;;;;;;;;-1:-1:-1;;;691:10:29;;;;;392:703::o;661:51::-;736:5;721:12;775:75;782:9;;775:75;;807:8;;;;:::i;:::-;;-1:-1:-1;829:10:29;;-1:-1:-1;837:2:29;829:10;;:::i;:::-;;;775:75;;;859:19;891:6;881:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:17:29;;859:39;;908:150;915:10;;908:150;;941:11;951:1;941:11;;:::i;:::-;;-1:-1:-1;1009:10:29;1017:2;1009:5;:10;:::i;:::-;996:24;;:2;:24;:::i;:::-;983:39;;966:6;973;966:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;966:56:29;;;;;;;;-1:-1:-1;1036:11:29;1045:2;1036:11;;:::i;:::-;;;908:150;;12342:831:22;12491:4;-1:-1:-1;;;;;12511:13:22;;1465:19:27;:23;12507:660:22;;12546:71;;-1:-1:-1;;;12546:71:22;;-1:-1:-1;;;;;12546:36:22;;;;;:71;;719:10:28;;12597:4:22;;12603:7;;12612:4;;12546:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12546:71:22;;;;;;;;-1:-1:-1;;12546:71:22;;;;;;;;;;;;:::i;:::-;;;12542:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12784:6;:13;12801:1;12784:18;12780:321;;12826:60;;-1:-1:-1;;;12826:60:22;;;;;;;:::i;12780:321::-;13053:6;13047:13;13038:6;13034:2;13030:15;13023:38;12542:573;-1:-1:-1;;;;;;12667:51:22;-1:-1:-1;;;12667:51:22;;-1:-1:-1;12660:58:22;;12507:660;-1:-1:-1;13152:4:22;12342:831;;;;;;:::o;14:131:48:-;-1:-1:-1;;;;;;88:32:48;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:48;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:48;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:48:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:48;;1348:180;-1:-1:-1;1348:180:48:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:48;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:48:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:186::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2662:29;2681:9;2662:29;:::i;2884:347::-;2949:6;2957;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3049:29;3068:9;3049:29;:::i;:::-;3039:39;;3128:2;3117:9;3113:18;3100:32;3175:5;3168:13;3161:21;3154:5;3151:32;3141:60;;3197:1;3194;3187:12;3141:60;3220:5;3210:15;;;2884:347;;;;;:::o;3236:127::-;3297:10;3292:3;3288:20;3285:1;3278:31;3328:4;3325:1;3318:15;3352:4;3349:1;3342:15;3368:1138;3463:6;3471;3479;3487;3540:3;3528:9;3519:7;3515:23;3511:33;3508:53;;;3557:1;3554;3547:12;3508:53;3580:29;3599:9;3580:29;:::i;:::-;3570:39;;3628:38;3662:2;3651:9;3647:18;3628:38;:::i;:::-;3618:48;;3713:2;3702:9;3698:18;3685:32;3675:42;;3768:2;3757:9;3753:18;3740:32;3791:18;3832:2;3824:6;3821:14;3818:34;;;3848:1;3845;3838:12;3818:34;3886:6;3875:9;3871:22;3861:32;;3931:7;3924:4;3920:2;3916:13;3912:27;3902:55;;3953:1;3950;3943:12;3902:55;3989:2;3976:16;4011:2;4007;4004:10;4001:36;;;4017:18;;:::i;:::-;4092:2;4086:9;4060:2;4146:13;;-1:-1:-1;;4142:22:48;;;4166:2;4138:31;4134:40;4122:53;;;4190:18;;;4210:22;;;4187:46;4184:72;;;4236:18;;:::i;:::-;4276:10;4272:2;4265:22;4311:2;4303:6;4296:18;4351:7;4346:2;4341;4337;4333:11;4329:20;4326:33;4323:53;;;4372:1;4369;4362:12;4323:53;4428:2;4423;4419;4415:11;4410:2;4402:6;4398:15;4385:46;4473:1;4468:2;4463;4455:6;4451:15;4447:24;4440:35;4494:6;4484:16;;;;;;;3368:1138;;;;;;;:::o;4511:260::-;4579:6;4587;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4679:29;4698:9;4679:29;:::i;:::-;4669:39;;4727:38;4761:2;4750:9;4746:18;4727:38;:::i;:::-;4717:48;;4511:260;;;;;:::o;4776:380::-;4855:1;4851:12;;;;4898;;;4919:61;;4973:4;4965:6;4961:17;4951:27;;4919:61;5026:2;5018:6;5015:14;4995:18;4992:38;4989:161;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;4989:161;;4776:380;;;:::o;5994:410::-;6196:2;6178:21;;;6235:2;6215:18;;;6208:30;6274:34;6269:2;6254:18;;6247:62;-1:-1:-1;;;6340:2:48;6325:18;;6318:44;6394:3;6379:19;;5994:410::o;7172:496::-;7351:3;7389:6;7383:13;7405:66;7464:6;7459:3;7452:4;7444:6;7440:17;7405:66;:::i;:::-;7534:13;;7493:16;;;;7556:70;7534:13;7493:16;7603:4;7591:17;;7556:70;:::i;:::-;7642:20;;7172:496;-1:-1:-1;;;;7172:496:48:o;8484:127::-;8545:10;8540:3;8536:20;8533:1;8526:31;8576:4;8573:1;8566:15;8600:4;8597:1;8590:15;8616:128;8683:9;;;8704:11;;;8701:37;;;8718:18;;:::i;8749:125::-;8814:9;;;8835:10;;;8832:36;;;8848:18;;:::i;9233:414::-;9435:2;9417:21;;;9474:2;9454:18;;;9447:30;9513:34;9508:2;9493:18;;9486:62;-1:-1:-1;;;9579:2:48;9564:18;;9557:48;9637:3;9622:19;;9233:414::o;9652:135::-;9691:3;9712:17;;;9709:43;;9732:18;;:::i;:::-;-1:-1:-1;9779:1:48;9768:13;;9652:135::o;9792:127::-;9853:10;9848:3;9844:20;9841:1;9834:31;9884:4;9881:1;9874:15;9908:4;9905:1;9898:15;9924:120;9964:1;9990;9980:35;;9995:18;;:::i;:::-;-1:-1:-1;10029:9:48;;9924:120::o;10049:112::-;10081:1;10107;10097:35;;10112:18;;:::i;:::-;-1:-1:-1;10146:9:48;;10049:112::o;10166:127::-;10227:10;10222:3;10218:20;10215:1;10208:31;10258:4;10255:1;10248:15;10282:4;10279:1;10272:15;10298:489;-1:-1:-1;;;;;10567:15:48;;;10549:34;;10619:15;;10614:2;10599:18;;10592:43;10666:2;10651:18;;10644:34;;;10714:3;10709:2;10694:18;;10687:31;;;10492:4;;10735:46;;10761:19;;10753:6;10735:46;:::i;:::-;10727:54;10298:489;-1:-1:-1;;;;;;10298:489:48:o;10792:249::-;10861:6;10914:2;10902:9;10893:7;10889:23;10885:32;10882:52;;;10930:1;10927;10920:12;10882:52;10962:9;10956:16;10981:30;11005:5;10981:30;:::i", "abi": "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b50604051620013ff380380620013ff83398101604081905262000034916200011f565b600062000042838262000218565b50600162000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61110b80620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c32565b6101ff565b60405190151581526020015b60405180910390f35b610104610251565b6040516100f39190610c9f565b61012461011f366004610cb2565b6102e3565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610ce7565b61030a565b005b61014f61015f366004610d11565b610424565b61014f610172366004610d11565b610455565b610124610185366004610cb2565b610470565b61019d610198366004610d4d565b6104d0565b6040519081526020016100f3565b610104610556565b61014f6101c1366004610d68565b610565565b61014f6101d4366004610dba565b610574565b6101046101e7366004610cb2565b6105ac565b6100e76101fa366004610e96565b610620565b60006001600160e01b031982166380ac58cd60e01b148061023057506001600160e01b03198216635b5e139f60e01b145b8061024b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461026090610ec9565b80601f016020809104026020016040519081016040528092919081815260200182805461028c90610ec9565b80156102d95780601f106102ae576101008083540402835291602001916102d9565b820191906000526020600020905b8154815290600101906020018083116102bc57829003601f168201915b5050505050905090565b60006102ee8261064e565b506000908152600460205260409020546001600160a01b031690565b600061031582610470565b9050806001600160a01b0316836001600160a01b0316036103875760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103a357506103a38133610620565b6104155760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161037e565b61041f83836106b0565b505050565b61042e338261071e565b61044a5760405162461bcd60e51b815260040161037e90610f03565b61041f83838361077d565b61041f83838360405180602001604052806000815250610574565b6000818152600260205260408120546001600160a01b03168061024b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b60006001600160a01b03821661053a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161037e565b506001600160a01b031660009081526003602052604090205490565b60606001805461026090610ec9565b610570338383610919565b5050565b61057e338361071e565b61059a5760405162461bcd60e51b815260040161037e90610f03565b6105a6848484846109e7565b50505050565b60606105b78261064e565b60006105ce60408051602081019091526000815290565b905060008151116105ee5760405180602001604052806000815250610619565b806105f884610a1a565b604051602001610609929190610f51565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260409020546001600160a01b03166106ad5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e582610470565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072a83610470565b9050806001600160a01b0316846001600160a01b0316148061075157506107518185610620565b806107755750836001600160a01b031661076a846102e3565b6001600160a01b0316145b949350505050565b826001600160a01b031661079082610470565b6001600160a01b0316146107f45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161037e565b6001600160a01b0382166108565760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161037e565b6108616000826106b0565b6001600160a01b038316600090815260036020526040812080546001929061088a908490610f96565b90915550506001600160a01b03821660009081526003602052604081208054600192906108b8908490610fa9565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361097a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161037e565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109f284848461077d565b6109fe84848484610b1b565b6105a65760405162461bcd60e51b815260040161037e90610fbc565b606081600003610a415750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a6b5780610a558161100e565b9150610a649050600a8361103d565b9150610a45565b60008167ffffffffffffffff811115610a8657610a86610da4565b6040519080825280601f01601f191660200182016040528015610ab0576020820181803683370190505b5090505b841561077557610ac5600183610f96565b9150610ad2600a86611051565b610add906030610fa9565b60f81b818381518110610af257610af2611065565b60200101906001600160f81b031916908160001a905350610b14600a8661103d565b9450610ab4565b60006001600160a01b0384163b15610c1157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b5f90339089908890889060040161107b565b6020604051808303816000875af1925050508015610b9a575060408051601f3d908101601f19168201909252610b97918101906110b8565b60015b610bf7573d808015610bc8576040519150601f19603f3d011682016040523d82523d6000602084013e610bcd565b606091505b508051600003610bef5760405162461bcd60e51b815260040161037e90610fbc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610775565b506001949350505050565b6001600160e01b0319811681146106ad57600080fd5b600060208284031215610c4457600080fd5b813561061981610c1c565b60005b83811015610c6a578181015183820152602001610c52565b50506000910152565b60008151808452610c8b816020860160208601610c4f565b601f01601f19169290920160200192915050565b6020815260006106196020830184610c73565b600060208284031215610cc457600080fd5b5035919050565b80356001600160a01b0381168114610ce257600080fd5b919050565b60008060408385031215610cfa57600080fd5b610d0383610ccb565b946020939093013593505050565b600080600060608486031215610d2657600080fd5b610d2f84610ccb565b9250610d3d60208501610ccb565b9150604084013590509250925092565b600060208284031215610d5f57600080fd5b61061982610ccb565b60008060408385031215610d7b57600080fd5b610d8483610ccb565b915060208301358015158114610d9957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dd057600080fd5b610dd985610ccb565b9350610de760208601610ccb565b925060408501359150606085013567ffffffffffffffff80821115610e0b57600080fd5b818701915087601f830112610e1f57600080fd5b813581811115610e3157610e31610da4565b604051601f8201601f19908116603f01168101908382118183101715610e5957610e59610da4565b816040528281528a6020848701011115610e7257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ea957600080fd5b610eb283610ccb565b9150610ec060208401610ccb565b90509250929050565b600181811c90821680610edd57607f821691505b602082108103610efd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f63818460208801610c4f565b835190830190610f77818360208801610c4f565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561024b5761024b610f80565b8082018082111561024b5761024b610f80565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006001820161102057611020610f80565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261104c5761104c611027565b500490565b60008261106057611060611027565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110ae90830184610c73565b9695505050505050565b6000602082840312156110ca57600080fd5b815161061981610c1c56fea2646970667358221220567193447a7f17c9f9f67d7fbebdb51ff66d09049c855c6c8dd449d64c94e19764736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c32565b6101ff565b60405190151581526020015b60405180910390f35b610104610251565b6040516100f39190610c9f565b61012461011f366004610cb2565b6102e3565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610ce7565b61030a565b005b61014f61015f366004610d11565b610424565b61014f610172366004610d11565b610455565b610124610185366004610cb2565b610470565b61019d610198366004610d4d565b6104d0565b6040519081526020016100f3565b610104610556565b61014f6101c1366004610d68565b610565565b61014f6101d4366004610dba565b610574565b6101046101e7366004610cb2565b6105ac565b6100e76101fa366004610e96565b610620565b60006001600160e01b031982166380ac58cd60e01b148061023057506001600160e01b03198216635b5e139f60e01b145b8061024b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461026090610ec9565b80601f016020809104026020016040519081016040528092919081815260200182805461028c90610ec9565b80156102d95780601f106102ae576101008083540402835291602001916102d9565b820191906000526020600020905b8154815290600101906020018083116102bc57829003601f168201915b5050505050905090565b60006102ee8261064e565b506000908152600460205260409020546001600160a01b031690565b600061031582610470565b9050806001600160a01b0316836001600160a01b0316036103875760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103a357506103a38133610620565b6104155760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161037e565b61041f83836106b0565b505050565b61042e338261071e565b61044a5760405162461bcd60e51b815260040161037e90610f03565b61041f83838361077d565b61041f83838360405180602001604052806000815250610574565b6000818152600260205260408120546001600160a01b03168061024b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b60006001600160a01b03821661053a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161037e565b506001600160a01b031660009081526003602052604090205490565b60606001805461026090610ec9565b610570338383610919565b5050565b61057e338361071e565b61059a5760405162461bcd60e51b815260040161037e90610f03565b6105a6848484846109e7565b50505050565b60606105b78261064e565b60006105ce60408051602081019091526000815290565b905060008151116105ee5760405180602001604052806000815250610619565b806105f884610a1a565b604051602001610609929190610f51565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260409020546001600160a01b03166106ad5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e582610470565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072a83610470565b9050806001600160a01b0316846001600160a01b0316148061075157506107518185610620565b806107755750836001600160a01b031661076a846102e3565b6001600160a01b0316145b949350505050565b826001600160a01b031661079082610470565b6001600160a01b0316146107f45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161037e565b6001600160a01b0382166108565760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161037e565b6108616000826106b0565b6001600160a01b038316600090815260036020526040812080546001929061088a908490610f96565b90915550506001600160a01b03821660009081526003602052604081208054600192906108b8908490610fa9565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361097a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161037e565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109f284848461077d565b6109fe84848484610b1b565b6105a65760405162461bcd60e51b815260040161037e90610fbc565b606081600003610a415750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a6b5780610a558161100e565b9150610a649050600a8361103d565b9150610a45565b60008167ffffffffffffffff811115610a8657610a86610da4565b6040519080825280601f01601f191660200182016040528015610ab0576020820181803683370190505b5090505b841561077557610ac5600183610f96565b9150610ad2600a86611051565b610add906030610fa9565b60f81b818381518110610af257610af2611065565b60200101906001600160f81b031916908160001a905350610b14600a8661103d565b9450610ab4565b60006001600160a01b0384163b15610c1157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b5f90339089908890889060040161107b565b6020604051808303816000875af1925050508015610b9a575060408051601f3d908101601f19168201909252610b97918101906110b8565b60015b610bf7573d808015610bc8576040519150601f19603f3d011682016040523d82523d6000602084013e610bcd565b606091505b508051600003610bef5760405162461bcd60e51b815260040161037e90610fbc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610775565b506001949350505050565b6001600160e01b0319811681146106ad57600080fd5b600060208284031215610c4457600080fd5b813561061981610c1c565b60005b83811015610c6a578181015183820152602001610c52565b50506000910152565b60008151808452610c8b816020860160208601610c4f565b601f01601f19169290920160200192915050565b6020815260006106196020830184610c73565b600060208284031215610cc457600080fd5b5035919050565b80356001600160a01b0381168114610ce257600080fd5b919050565b60008060408385031215610cfa57600080fd5b610d0383610ccb565b946020939093013593505050565b600080600060608486031215610d2657600080fd5b610d2f84610ccb565b9250610d3d60208501610ccb565b9150604084013590509250925092565b600060208284031215610d5f57600080fd5b61061982610ccb565b60008060408385031215610d7b57600080fd5b610d8483610ccb565b915060208301358015158114610d9957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dd057600080fd5b610dd985610ccb565b9350610de760208601610ccb565b925060408501359150606085013567ffffffffffffffff80821115610e0b57600080fd5b818701915087601f830112610e1f57600080fd5b813581811115610e3157610e31610da4565b604051601f8201601f19908116603f01168101908382118183101715610e5957610e59610da4565b816040528281528a6020848701011115610e7257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ea957600080fd5b610eb283610ccb565b9150610ec060208401610ccb565b90509250929050565b600181811c90821680610edd57607f821691505b602082108103610efd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f63818460208801610c4f565b835190830190610f77818360208801610c4f565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561024b5761024b610f80565b8082018082111561024b5761024b610f80565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006001820161102057611020610f80565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261104c5761104c611027565b500490565b60008261106057611060611027565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110ae90830184610c73565b9695505050505050565b6000602082840312156110ca57600080fd5b815161061981610c1c56fea2646970667358221220567193447a7f17c9f9f67d7fbebdb51ff66d09049c855c6c8dd449d64c94e19764736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol:IERC721": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol:IERC721Receiver": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol:ERC721URIStorage": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Address.sol:Address": {"srcmap": "194:8111:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8111:27;;;;;;;;;;;;;;;;;", "srcmap-runtime": "194:8111:27:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206af4a6c2ea199a402f324b33d83781e045280f151b8e8f13fc6b5ffdb7db88cd64736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206af4a6c2ea199a402f324b33d83781e045280f151b8e8f13fc6b5ffdb7db88cd64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Context.sol:Context": {"srcmap": "", "srcmap-runtime": "", "abi": "[]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/Strings.sol:Strings": {"srcmap": "161:2235:29:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;161:2235:29;;;;;;;;;;;;;;;;;", "srcmap-runtime": "161:2235:29:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b303b02ccdf79afcb75435de6b23bc4ab5c08d9d37aa26d6fb1f7cde1a0a85864736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b303b02ccdf79afcb75435de6b23bc4ab5c08d9d37aa26d6fb1f7cde1a0a85864736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ERC721Test.sol:ERC721Test": {"srcmap": "341:873:32:-:0;;;691:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;752:4;758:6;1456:5:22;:13;752:4:32;1456:5:22;:13;:::i;:::-;-1:-1:-1;1479:7:22;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;936:32:17;955:12;:10;;;:12;;:::i;:::-;936:18;:32::i;:::-;691:77:32;;341:873;;640:96:28;719:10;;640:96::o;2433:187:17:-;2525:6;;;-1:-1:-1;;;;;2541:17:17;;;-1:-1:-1;;;;;;2541:17:17;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;14:127:48:-;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:48;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:48;;;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:48: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:48;;;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:48;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:48;;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:48;;;3992:26;3943:89;-1:-1:-1;;2747:1:48;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:48;;;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:48;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:48;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:48:o;:::-;341:873:32;;;;;;", "srcmap-runtime": "341:873:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300:22;;;;;;:::i;:::-;;:::i;:::-;;;565:14:48;;558:22;540:41;;528:2;513:18;1570:300:22;;;;;;;;2470:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:48;;;1679:51;;1667:2;1652:18;3935:167:22;1533:203:48;3467:407:22;;;;;;:::i;:::-;;:::i;:::-;;4612:327;;;;;;:::i;:::-;;:::i;5005:179::-;;;;;;:::i;:::-;;:::i;2190:218::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2848:25:48;;;2836:2;2821:18;1929:204:22;2702:177:48;522:23:32;;;;;;1831:101:17;;;:::i;1201:85::-;1273:6;;-1:-1:-1;;;;;1273:6:17;1201:85;;2632:102:22;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5250:315::-;;;;;;:::i;:::-;;:::i;482:608:25:-;;;;;;:::i;:::-;;:::i;4388:162:22:-;;;;;;:::i;:::-;;:::i;943:269:32:-;;;;;;:::i;:::-;;:::i;2081:198:17:-;;;;;;:::i;:::-;;:::i;1570:300:22:-;1672:4;-1:-1:-1;;;;;;1707:40:22;;-1:-1:-1;;;1707:40:22;;:104;;-1:-1:-1;;;;;;;1763:48:22;;-1:-1:-1;;;1763:48:22;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:30;;;1827:36:22;1688:175;1570:300;-1:-1:-1;;1570:300:22:o;2470:98::-;2524:13;2556:5;2549:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2470:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:22;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:22;;3935:167::o;3467:407::-;3547:13;3563:23;3578:7;3563:14;:23::i;:::-;3547:39;;3610:5;-1:-1:-1;;;;;3604:11:22;:2;-1:-1:-1;;;;;3604:11:22;;3596:57;;;;-1:-1:-1;;;3596:57:22;;6056:2:48;3596:57:22;;;6038:21:48;6095:2;6075:18;;;6068:30;6134:34;6114:18;;;6107:62;-1:-1:-1;;;6185:18:48;;;6178:31;6226:19;;3596:57:22;;;;;;;;;719:10:28;-1:-1:-1;;;;;3685:21:22;;;;:62;;-1:-1:-1;3710:37:22;3727:5;719:10:28;4388:162:22;:::i;3710:37::-;3664:171;;;;-1:-1:-1;;;3664:171:22;;6458:2:48;3664:171:22;;;6440:21:48;6497:2;6477:18;;;6470:30;6536:34;6516:18;;;6509:62;6607:32;6587:18;;;6580:60;6657:19;;3664:171:22;6256:426:48;3664:171:22;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3537:337;3467:407;;:::o;4612:327::-;4801:41;719:10:28;4834:7:22;4801:18;:41::i;:::-;4793:100;;;;-1:-1:-1;;;4793:100:22;;;;;;;:::i;:::-;4904:28;4914:4;4920:2;4924:7;4904:9;:28::i;5005:179::-;5138:39;5155:4;5161:2;5165:7;5138:39;;;;;;;;;;;;:16;:39::i;2190:218::-;2262:7;2297:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2297:16:22;;2323:56;;;;-1:-1:-1;;;2323:56:22;;7304:2:48;2323:56:22;;;7286:21:48;7343:2;7323:18;;;7316:30;-1:-1:-1;;;7362:18:48;;;7355:54;7426:18;;2323:56:22;7102:348:48;1929:204:22;2001:7;-1:-1:-1;;;;;2028:19:22;;2020:73;;;;-1:-1:-1;;;2020:73:22;;7657:2:48;2020:73:22;;;7639:21:48;7696:2;7676:18;;;7669:30;7735:34;7715:18;;;7708:62;-1:-1:-1;;;7786:18:48;;;7779:39;7835:19;;2020:73:22;7455:405:48;2020:73:22;-1:-1:-1;;;;;;2110:16:22;;;;;:9;:16;;;;;;;1929:204::o;1831:101:17:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;2632:102:22:-;2688:13;2720:7;2713:14;;;;;:::i;4169:153::-;4263:52;719:10:28;4296:8:22;4306;4263:18;:52::i;:::-;4169:153;;:::o;5250:315::-;5418:41;719:10:28;5451:7:22;5418:18;:41::i;:::-;5410:100;;;;-1:-1:-1;;;5410:100:22;;;;;;;:::i;:::-;5520:38;5534:4;5540:2;5544:7;5553:4;5520:13;:38::i;:::-;5250:315;;;;:::o;482:608:25:-;555:13;580:23;595:7;580:14;:23::i;:::-;614;640:19;;;:10;:19;;;;;614:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;669:18;690:10;3394:9:22;;;;;;;;;-1:-1:-1;3394:9:22;;;3318:92;690:10:25;669:31;;779:4;773:18;795:1;773:23;769:70;;-1:-1:-1;819:9:25;482:608;-1:-1:-1;;482:608:25:o;769:70::-;941:23;;:27;937:106;;1015:4;1021:9;998:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;984:48;;;;482:608;;;:::o;937:106::-;1060:23;1075:7;1060:14;:23::i;:::-;1053:30;482:608;-1:-1:-1;;;;482:608:25:o;4388:162:22:-;-1:-1:-1;;;;;4508:25:22;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162::o;943:269:32:-;1094:13:17;:11;:13::i;:::-;-1:-1:-1;;;;;1030:17:32;::::1;1022:45;;;::::0;-1:-1:-1;;;1022:45:32;;8568:2:48;1022:45:32::1;::::0;::::1;8550:21:48::0;8607:2;8587:18;;;8580:30;-1:-1:-1;;;8626:18:48;;;8619:45;8681:18;;1022:45:32::1;8366:339:48::0;1022:45:32::1;1077:8;:10:::0;;;:8:::1;:10;::::0;::::1;:::i;:::-;;;;;;1097:24;1107:3;1112:8;;1097:9;:24::i;:::-;1131:28;1144:8;;1154:4;1131:12;:28::i;:::-;1175:30;1185:3;1190:8;;1200:4;1175:30;;;;;;;;:::i;:::-;;;;;;;;943:269:::0;;:::o;2081:198:17:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:17;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:17;;9577:2:48;2161:73:17::1;::::0;::::1;9559:21:48::0;9616:2;9596:18;;;9589:30;9655:34;9635:18;;;9628:62;-1:-1:-1;;;9706:18:48;;;9699:36;9752:19;;2161:73:17::1;9375:402:48::0;2161:73:17::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;11657:133:22:-;7099:4;7122:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7122:16:22;11730:53;;;;-1:-1:-1;;;11730:53:22;;7304:2:48;11730:53:22;;;7286:21:48;7343:2;7323:18;;;7316:30;-1:-1:-1;;;7362:18:48;;;7355:54;7426:18;;11730:53:22;7102:348:48;10959:171:22;11033:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11033:29:22;-1:-1:-1;;;;;11033:29:22;;;;;;;;:24;;11086:23;11033:24;11086:14;:23::i;:::-;-1:-1:-1;;;;;11077:46:22;;;;;;;;;;;10959:171;;:::o;7317:261::-;7410:4;7426:13;7442:23;7457:7;7442:14;:23::i;:::-;7426:39;;7494:5;-1:-1:-1;;;;;7483:16:22;:7;-1:-1:-1;;;;;7483:16:22;;:52;;;;7503:32;7520:5;7527:7;7503:16;:32::i;:::-;7483:87;;;;7563:7;-1:-1:-1;;;;;7539:31:22;:20;7551:7;7539:11;:20::i;:::-;-1:-1:-1;;;;;7539:31:22;;7475:96;7317:261;-1:-1:-1;;;;7317:261:22:o;10242:605::-;10396:4;-1:-1:-1;;;;;10369:31:22;:23;10384:7;10369:14;:23::i;:::-;-1:-1:-1;;;;;10369:31:22;;10361:81;;;;-1:-1:-1;;;10361:81:22;;9984:2:48;10361:81:22;;;9966:21:48;10023:2;10003:18;;;9996:30;10062:34;10042:18;;;10035:62;-1:-1:-1;;;10113:18:48;;;10106:35;10158:19;;10361:81:22;9782:401:48;10361:81:22;-1:-1:-1;;;;;10460:16:22;;10452:65;;;;-1:-1:-1;;;10452:65:22;;10390:2:48;10452:65:22;;;10372:21:48;10429:2;10409:18;;;10402:30;10468:34;10448:18;;;10441:62;-1:-1:-1;;;10519:18:48;;;10512:34;10563:19;;10452:65:22;10188:400:48;10452:65:22;10629:29;10646:1;10650:7;10629:8;:29::i;:::-;-1:-1:-1;;;;;10669:15:22;;;;;;:9;:15;;;;;:20;;10688:1;;10669:15;:20;;10688:1;;10669:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10699:13:22;;;;;;:9;:13;;;;;:18;;10716:1;;10699:13;:18;;10716:1;;10699:18;:::i;:::-;;;;-1:-1:-1;;10727:16:22;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10727:21:22;-1:-1:-1;;;;;10727:21:22;;;;;;;;;10764:27;;10727:16;;10764:27;;;;;;;3537:337;3467:407;;:::o;1359:130:17:-;1273:6;;-1:-1:-1;;;;;1273:6:17;719:10:28;1422:23:17;1414:68;;;;-1:-1:-1;;;1414:68:17;;11058:2:48;1414:68:17;;;11040:21:48;;;11077:18;;;11070:30;11136:34;11116:18;;;11109:62;11188:18;;1414:68:17;10856:356:48;2433:187:17;2525:6;;;-1:-1:-1;;;;;2541:17:17;;;-1:-1:-1;;;;;;2541:17:17;;;;;;;2573:40;;2525:6;;;2541:17;2525:6;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;11266:307:22:-;11416:8;-1:-1:-1;;;;;11407:17:22;:5;-1:-1:-1;;;;;11407:17:22;;11399:55;;;;-1:-1:-1;;;11399:55:22;;11419:2:48;11399:55:22;;;11401:21:48;11458:2;11438:18;;;11431:30;11497:27;11477:18;;;11470:55;11542:18;;11399:55:22;11217:349:48;11399:55:22;-1:-1:-1;;;;;11464:25:22;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11464:46:22;;;;;;;;;;11525:41;;540::48;;;11525::22;;513:18:48;11525:41:22;;;;;;;11266:307;;;:::o;6426:305::-;6576:28;6586:4;6592:2;6596:7;6576:9;:28::i;:::-;6622:47;6645:4;6651:2;6655:7;6664:4;6622:22;:47::i;:::-;6614:110;;;;-1:-1:-1;;;6614:110:22;;;;;;;:::i;2800:276::-;2873:13;2898:23;2913:7;2898:14;:23::i;:::-;2932:21;2956:10;3394:9;;;;;;;;;-1:-1:-1;3394:9:22;;;3318:92;2956:10;2932:34;;3007:1;2989:7;2983:21;:25;:86;;;;;;;;;;;;;;;;;3035:7;3044:18;:7;:16;:18::i;:::-;3018:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2983:86;2976:93;2800:276;-1:-1:-1;;;2800:276:22:o;7908:108::-;7983:26;7993:2;7997:7;7983:26;;;;;;;;;;;;:9;:26::i;1237:214:25:-;7099:4:22;7122:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7122:16:22;1328:75:25;;;;-1:-1:-1;;;1328:75:25;;12192:2:48;1328:75:25;;;12174:21:48;12231:2;12211:18;;;12204:30;12270:34;12250:18;;;12243:62;-1:-1:-1;;;12321:18:48;;;12314:44;12375:19;;1328:75:25;11990:410:48;1328:75:25;1413:19;;;;:10;:19;;;;;:31;1435:9;1413:19;:31;:::i;12342:831:22:-;12491:4;-1:-1:-1;;;;;12511:13:22;;1465:19:27;:23;12507:660:22;;12546:71;;-1:-1:-1;;;12546:71:22;;-1:-1:-1;;;;;12546:36:22;;;;;:71;;719:10:28;;12597:4:22;;12603:7;;12612:4;;12546:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12546:71:22;;;;;;;;-1:-1:-1;;12546:71:22;;;;;;;;;;;;:::i;:::-;;;12542:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12784:6;:13;12801:1;12784:18;12780:321;;12826:60;;-1:-1:-1;;;12826:60:22;;;;;;;:::i;12780:321::-;13053:6;13047:13;13038:6;13034:2;13030:15;13023:38;12542:573;-1:-1:-1;;;;;;12667:51:22;-1:-1:-1;;;12667:51:22;;-1:-1:-1;12660:58:22;;12507:660;-1:-1:-1;13152:4:22;12342:831;;;;;;:::o;392:703:29:-;448:13;665:5;674:1;665:10;661:51;;-1:-1:-1;;691:10:29;;;;;;;;;;;;-1:-1:-1;;;691:10:29;;;;;392:703::o;661:51::-;736:5;721:12;775:75;782:9;;775:75;;807:8;;;;:::i;:::-;;-1:-1:-1;829:10:29;;-1:-1:-1;837:2:29;829:10;;:::i;:::-;;;775:75;;;859:19;891:6;881:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:17:29;;859:39;;908:150;915:10;;908:150;;941:11;951:1;941:11;;:::i;:::-;;-1:-1:-1;1009:10:29;1017:2;1009:5;:10;:::i;:::-;996:24;;:2;:24;:::i;:::-;983:39;;966:6;973;966:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;966:56:29;;;;;;;;-1:-1:-1;1036:11:29;1045:2;1036:11;;:::i;:::-;;;908:150;;8237:309:22;8361:18;8367:2;8371:7;8361:5;:18::i;:::-;8410:53;8441:1;8445:2;8449:7;8458:4;8410:22;:53::i;:::-;8389:150;;;;-1:-1:-1;;;8389:150:22;;;;;;;:::i;8868:427::-;-1:-1:-1;;;;;8947:16:22;;8939:61;;;;-1:-1:-1;;;8939:61:22;;16065:2:48;8939:61:22;;;16047:21:48;;;16084:18;;;16077:30;16143:34;16123:18;;;16116:62;16195:18;;8939:61:22;15863:356:48;8939:61:22;7099:4;7122:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7122:16:22;:30;9010:58;;;;-1:-1:-1;;;9010:58:22;;16426:2:48;9010:58:22;;;16408:21:48;16465:2;16445:18;;;16438:30;16504;16484:18;;;16477:58;16552:18;;9010:58:22;16224:352:48;9010:58:22;-1:-1:-1;;;;;9135:13:22;;;;;;:9;:13;;;;;:18;;9152:1;;9135:13;:18;;9152:1;;9135:18;:::i;:::-;;;;-1:-1:-1;;9163:16:22;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9163:21:22;-1:-1:-1;;;;;9163:21:22;;;;;;;;9200:33;;9163:16;;;9200:33;;9163:16;;9200:33;4169:153;;:::o;14:131:48:-;-1:-1:-1;;;;;;88:32:48;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:48;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:48;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:48:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:48;;1348:180;-1:-1:-1;1348:180:48:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:48;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:48:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:186::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2662:29;2681:9;2662:29;:::i;2884:347::-;2949:6;2957;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3049:29;3068:9;3049:29;:::i;:::-;3039:39;;3128:2;3117:9;3113:18;3100:32;3175:5;3168:13;3161:21;3154:5;3151:32;3141:60;;3197:1;3194;3187:12;3141:60;3220:5;3210:15;;;2884:347;;;;;:::o;3236:127::-;3297:10;3292:3;3288:20;3285:1;3278:31;3328:4;3325:1;3318:15;3352:4;3349:1;3342:15;3368:631;3432:5;3462:18;3503:2;3495:6;3492:14;3489:40;;;3509:18;;:::i;:::-;3584:2;3578:9;3552:2;3638:15;;-1:-1:-1;;3634:24:48;;;3660:2;3630:33;3626:42;3614:55;;;3684:18;;;3704:22;;;3681:46;3678:72;;;3730:18;;:::i;:::-;3770:10;3766:2;3759:22;3799:6;3790:15;;3829:6;3821;3814:22;3869:3;3860:6;3855:3;3851:16;3848:25;3845:45;;;3886:1;3883;3876:12;3845:45;3936:6;3931:3;3924:4;3916:6;3912:17;3899:44;3991:1;3984:4;3975:6;3967;3963:19;3959:30;3952:41;;;;3368:631;;;;;:::o;4004:666::-;4099:6;4107;4115;4123;4176:3;4164:9;4155:7;4151:23;4147:33;4144:53;;;4193:1;4190;4183:12;4144:53;4216:29;4235:9;4216:29;:::i;:::-;4206:39;;4264:38;4298:2;4287:9;4283:18;4264:38;:::i;:::-;4254:48;;4349:2;4338:9;4334:18;4321:32;4311:42;;4404:2;4393:9;4389:18;4376:32;4431:18;4423:6;4420:30;4417:50;;;4463:1;4460;4453:12;4417:50;4486:22;;4539:4;4531:13;;4527:27;-1:-1:-1;4517:55:48;;4568:1;4565;4558:12;4517:55;4591:73;4656:7;4651:2;4638:16;4633:2;4629;4625:11;4591:73;:::i;:::-;4581:83;;;4004:666;;;;;;;:::o;4675:260::-;4743:6;4751;4804:2;4792:9;4783:7;4779:23;4775:32;4772:52;;;4820:1;4817;4810:12;4772:52;4843:29;4862:9;4843:29;:::i;:::-;4833:39;;4891:38;4925:2;4914:9;4910:18;4891:38;:::i;:::-;4881:48;;4675:260;;;;;:::o;4940:524::-;5018:6;5026;5079:2;5067:9;5058:7;5054:23;5050:32;5047:52;;;5095:1;5092;5085:12;5047:52;5118:29;5137:9;5118:29;:::i;:::-;5108:39;;5198:2;5187:9;5183:18;5170:32;5225:18;5217:6;5214:30;5211:50;;;5257:1;5254;5247:12;5211:50;5280:22;;5333:4;5325:13;;5321:27;-1:-1:-1;5311:55:48;;5362:1;5359;5352:12;5311:55;5385:73;5450:7;5445:2;5432:16;5427:2;5423;5419:11;5385:73;:::i;:::-;5375:83;;;4940:524;;;;;:::o;5469:380::-;5548:1;5544:12;;;;5591;;;5612:61;;5666:4;5658:6;5654:17;5644:27;;5612:61;5719:2;5711:6;5708:14;5688:18;5685:38;5682:161;;5765:10;5760:3;5756:20;5753:1;5746:31;5800:4;5797:1;5790:15;5828:4;5825:1;5818:15;5682:161;;5469:380;;;:::o;6687:410::-;6889:2;6871:21;;;6928:2;6908:18;;;6901:30;6967:34;6962:2;6947:18;;6940:62;-1:-1:-1;;;7033:2:48;7018:18;;7011:44;7087:3;7072:19;;6687:410::o;7865:496::-;8044:3;8082:6;8076:13;8098:66;8157:6;8152:3;8145:4;8137:6;8133:17;8098:66;:::i;:::-;8227:13;;8186:16;;;;8249:70;8227:13;8186:16;8296:4;8284:17;;8249:70;:::i;:::-;8335:20;;7865:496;-1:-1:-1;;;;7865:496:48:o;8710:127::-;8771:10;8766:3;8762:20;8759:1;8752:31;8802:4;8799:1;8792:15;8826:4;8823:1;8816:15;8842:135;8881:3;8902:17;;;8899:43;;8922:18;;:::i;:::-;-1:-1:-1;8969:1:48;8958:13;;8842:135::o;8982:388::-;9216:1;9212;9207:3;9203:11;9199:19;9191:6;9187:32;9176:9;9169:51;9256:6;9251:2;9240:9;9236:18;9229:34;9299:2;9294;9283:9;9279:18;9272:30;9150:4;9319:45;9360:2;9349:9;9345:18;9337:6;9319:45;:::i;:::-;9311:53;8982:388;-1:-1:-1;;;;;8982:388:48:o;10593:128::-;10660:9;;;10681:11;;;10678:37;;;10695:18;;:::i;10726:125::-;10791:9;;;10812:10;;;10809:36;;;10825:18;;:::i;11571:414::-;11773:2;11755:21;;;11812:2;11792:18;;;11785:30;11851:34;11846:2;11831:18;;11824:62;-1:-1:-1;;;11917:2:48;11902:18;;11895:48;11975:3;11960:19;;11571:414::o;12531:545::-;12633:2;12628:3;12625:11;12622:448;;;12669:1;12694:5;12690:2;12683:17;12739:4;12735:2;12725:19;12809:2;12797:10;12793:19;12790:1;12786:27;12780:4;12776:38;12845:4;12833:10;12830:20;12827:47;;;-1:-1:-1;12868:4:48;12827:47;12923:2;12918:3;12914:12;12911:1;12907:20;12901:4;12897:31;12887:41;;12978:82;12996:2;12989:5;12986:13;12978:82;;;13041:17;;;13022:1;13011:13;12978:82;;;12982:3;;;12531:545;;;:::o;13252:1352::-;13378:3;13372:10;13405:18;13397:6;13394:30;13391:56;;;13427:18;;:::i;:::-;13456:97;13546:6;13506:38;13538:4;13532:11;13506:38;:::i;:::-;13500:4;13456:97;:::i;:::-;13608:4;;13672:2;13661:14;;13689:1;13684:663;;;;14391:1;14408:6;14405:89;;;-1:-1:-1;14460:19:48;;;14454:26;14405:89;-1:-1:-1;;13209:1:48;13205:11;;;13201:24;13197:29;13187:40;13233:1;13229:11;;;13184:57;14507:81;;13654:944;;13684:663;12478:1;12471:14;;;12515:4;12502:18;;-1:-1:-1;;13720:20:48;;;13838:236;13852:7;13849:1;13846:14;13838:236;;;13941:19;;;13935:26;13920:42;;14033:27;;;;14001:1;13989:14;;;;13868:19;;13838:236;;;13842:3;14102:6;14093:7;14090:19;14087:201;;;14163:19;;;14157:26;-1:-1:-1;;14246:1:48;14242:14;;;14258:3;14238:24;14234:37;14230:42;14215:58;14200:74;;14087:201;-1:-1:-1;;;;;14334:1:48;14318:14;;;14314:22;14301:36;;-1:-1:-1;13252:1352:48:o;14609:489::-;-1:-1:-1;;;;;14878:15:48;;;14860:34;;14930:15;;14925:2;14910:18;;14903:43;14977:2;14962:18;;14955:34;;;15025:3;15020:2;15005:18;;14998:31;;;14803:4;;15046:46;;15072:19;;15064:6;15046:46;:::i;:::-;15038:54;14609:489;-1:-1:-1;;;;;;14609:489:48:o;15103:249::-;15172:6;15225:2;15213:9;15204:7;15200:23;15196:32;15193:52;;;15241:1;15238;15231:12;15193:52;15273:9;15267:16;15292:30;15316:5;15292:30;:::i;15357:127::-;15418:10;15413:3;15409:20;15406:1;15399:31;15449:4;15446:1;15439:15;15473:4;15470:1;15463:15;15489:120;15529:1;15555;15545:35;;15560:18;;:::i;:::-;-1:-1:-1;15594:9:48;;15489:120::o;15614:112::-;15646:1;15672;15662:35;;15677:18;;:::i;:::-;-1:-1:-1;15711:9:48;;15614:112::o;15731:127::-;15792:10;15787:3;15783:20;15780:1;15773:31;15823:4;15820:1;15813:15;15847:4;15844:1;15837:15", "abi": "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"MintedNFT\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"name\":\"mintNFT\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b5060405162001bdd38038062001bdd833981016040819052620000349162000193565b818160006200004483826200028c565b5060016200005382826200028c565b505050620000706200006a6200007860201b60201c565b6200007c565b505062000358565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000f657600080fd5b81516001600160401b0380821115620001135762000113620000ce565b604051601f8301601f19908116603f011681019082821181831017156200013e576200013e620000ce565b816040528381526020925086838588010111156200015b57600080fd5b600091505b838210156200017f578582018301518183018401529082019062000160565b600093810190920192909252949350505050565b60008060408385031215620001a757600080fd5b82516001600160401b0380821115620001bf57600080fd5b620001cd86838701620000e4565b93506020850151915080821115620001e457600080fd5b50620001f385828601620000e4565b9150509250929050565b600181811c908216806200021257607f821691505b6020821081036200023357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028757600081815260208120601f850160051c81016020861015620002625750805b601f850160051c820191505b8181101562000283578281556001016200026e565b5050505b505050565b81516001600160401b03811115620002a857620002a8620000ce565b620002c081620002b98454620001fd565b8462000239565b602080601f831160018114620002f85760008415620002df5750858301515b600019600386901b1c1916600185901b17855562000283565b600085815260208120601f198616915b82811015620003295788860151825594840194600190910190840162000308565b5085821015620003485787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61187580620003686000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde1461022f578063c87b56dd14610242578063e985e9c514610255578063eacabe1414610268578063f2fde38b1461027b57600080fd5b8063715018a6146101fb5780638da5cb5b1461020357806395d89b4114610214578063a22cb4651461021c57600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab5780636352211e146101be57806370a08231146101d1578063714cff56146101f257600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e6101293660046111e6565b61028e565b60405190151581526020015b60405180910390f35b61014b6102e0565b60405161013a9190611253565b61016b610166366004611266565b610372565b6040516001600160a01b03909116815260200161013a565b61019661019136600461129b565b610399565b005b6101966101a63660046112c5565b6104b3565b6101966101b93660046112c5565b6104e4565b61016b6101cc366004611266565b6104ff565b6101e46101df366004611301565b61055f565b60405190815260200161013a565b6101e460085481565b6101966105e5565b6007546001600160a01b031661016b565b61014b6105f9565b61019661022a36600461131c565b610608565b61019661023d3660046113e4565b610617565b61014b610250366004611266565b61064f565b61012e610263366004611460565b61075f565b610196610276366004611493565b61078d565b610196610289366004611301565b61084b565b60006001600160e01b031982166380ac58cd60e01b14806102bf57506001600160e01b03198216635b5e139f60e01b145b806102da57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102ef906114f5565b80601f016020809104026020016040519081016040528092919081815260200182805461031b906114f5565b80156103685780601f1061033d57610100808354040283529160200191610368565b820191906000526020600020905b81548152906001019060200180831161034b57829003601f168201915b5050505050905090565b600061037d826108c4565b506000908152600460205260409020546001600160a01b031690565b60006103a4826104ff565b9050806001600160a01b0316836001600160a01b0316036104165760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806104325750610432813361075f565b6104a45760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161040d565b6104ae8383610923565b505050565b6104bd3382610991565b6104d95760405162461bcd60e51b815260040161040d9061152f565b6104ae8383836109ef565b6104ae83838360405180602001604052806000815250610617565b6000818152600260205260408120546001600160a01b0316806102da5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161040d565b60006001600160a01b0382166105c95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161040d565b506001600160a01b031660009081526003602052604090205490565b6105ed610b8b565b6105f76000610be5565b565b6060600180546102ef906114f5565b610613338383610c37565b5050565b6106213383610991565b61063d5760405162461bcd60e51b815260040161040d9061152f565b61064984848484610d05565b50505050565b606061065a826108c4565b60008281526006602052604081208054610673906114f5565b80601f016020809104026020016040519081016040528092919081815260200182805461069f906114f5565b80156106ec5780601f106106c1576101008083540402835291602001916106ec565b820191906000526020600020905b8154815290600101906020018083116106cf57829003601f168201915b50505050509050600061070a60408051602081019091526000815290565b9050805160000361071c575092915050565b81511561074e57808260405160200161073692919061157d565b60405160208183030381529060405292505050919050565b61075784610d38565b949350505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610795610b8b565b6001600160a01b0382166107dd5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161040d565b600880549060006107ed836115c2565b91905055506107fe82600854610dac565b61080a60085482610dc6565b7f9f0432214927ca5d54e705bee45cb45cd0b88d9c6bc15906cc3498feb1d81310826008548360405161083f939291906115db565b60405180910390a15050565b610853610b8b565b6001600160a01b0381166108b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040d565b6108c181610be5565b50565b6000818152600260205260409020546001600160a01b03166108c15760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161040d565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610958826104ff565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061099d836104ff565b9050806001600160a01b0316846001600160a01b031614806109c457506109c4818561075f565b806107575750836001600160a01b03166109dd84610372565b6001600160a01b031614949350505050565b826001600160a01b0316610a02826104ff565b6001600160a01b031614610a665760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161040d565b6001600160a01b038216610ac85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161040d565b610ad3600082610923565b6001600160a01b0383166000908152600360205260408120805460019290610afc90849061160b565b90915550506001600160a01b0382166000908152600360205260408120805460019290610b2a90849061161e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6007546001600160a01b031633146105f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603610c985760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161040d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d108484846109ef565b610d1c84848484610e59565b6106495760405162461bcd60e51b815260040161040d90611631565b6060610d43826108c4565b6000610d5a60408051602081019091526000815290565b90506000815111610d7a5760405180602001604052806000815250610da5565b80610d8484610f5a565b604051602001610d9592919061157d565b6040516020818303038152906040525b9392505050565b61061382826040518060200160405280600081525061105b565b6000828152600260205260409020546001600160a01b0316610e415760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161040d565b60008281526006602052604090206104ae82826116d1565b60006001600160a01b0384163b15610f4f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610e9d903390899088908890600401611791565b6020604051808303816000875af1925050508015610ed8575060408051601f3d908101601f19168201909252610ed5918101906117ce565b60015b610f35573d808015610f06576040519150601f19603f3d011682016040523d82523d6000602084013e610f0b565b606091505b508051600003610f2d5760405162461bcd60e51b815260040161040d90611631565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610757565b506001949350505050565b606081600003610f815750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610fab5780610f95816115c2565b9150610fa49050600a83611801565b9150610f85565b60008167ffffffffffffffff811115610fc657610fc6611358565b6040519080825280601f01601f191660200182016040528015610ff0576020820181803683370190505b5090505b84156107575761100560018361160b565b9150611012600a86611815565b61101d90603061161e565b60f81b81838151811061103257611032611829565b60200101906001600160f81b031916908160001a905350611054600a86611801565b9450610ff4565b611065838361108e565b6110726000848484610e59565b6104ae5760405162461bcd60e51b815260040161040d90611631565b6001600160a01b0382166110e45760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161040d565b6000818152600260205260409020546001600160a01b0316156111495760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161040d565b6001600160a01b038216600090815260036020526040812080546001929061117290849061161e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b0319811681146108c157600080fd5b6000602082840312156111f857600080fd5b8135610da5816111d0565b60005b8381101561121e578181015183820152602001611206565b50506000910152565b6000815180845261123f816020860160208601611203565b601f01601f19169290920160200192915050565b602081526000610da56020830184611227565b60006020828403121561127857600080fd5b5035919050565b80356001600160a01b038116811461129657600080fd5b919050565b600080604083850312156112ae57600080fd5b6112b78361127f565b946020939093013593505050565b6000806000606084860312156112da57600080fd5b6112e38461127f565b92506112f16020850161127f565b9150604084013590509250925092565b60006020828403121561131357600080fd5b610da58261127f565b6000806040838503121561132f57600080fd5b6113388361127f565b91506020830135801515811461134d57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561138957611389611358565b604051601f8501601f19908116603f011681019082821181831017156113b1576113b1611358565b816040528093508581528686860111156113ca57600080fd5b858560208301376000602087830101525050509392505050565b600080600080608085870312156113fa57600080fd5b6114038561127f565b93506114116020860161127f565b925060408501359150606085013567ffffffffffffffff81111561143457600080fd5b8501601f8101871361144557600080fd5b6114548782356020840161136e565b91505092959194509250565b6000806040838503121561147357600080fd5b61147c8361127f565b915061148a6020840161127f565b90509250929050565b600080604083850312156114a657600080fd5b6114af8361127f565b9150602083013567ffffffffffffffff8111156114cb57600080fd5b8301601f810185136114dc57600080fd5b6114eb8582356020840161136e565b9150509250929050565b600181811c9082168061150957607f821691505b60208210810361152957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000835161158f818460208801611203565b8351908301906115a3818360208801611203565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016115d4576115d46115ac565b5060010190565b60018060a01b03841681528260208201526060604082015260006116026060830184611227565b95945050505050565b818103818111156102da576102da6115ac565b808201808211156102da576102da6115ac565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b601f8211156104ae57600081815260208120601f850160051c810160208610156116aa5750805b601f850160051c820191505b818110156116c9578281556001016116b6565b505050505050565b815167ffffffffffffffff8111156116eb576116eb611358565b6116ff816116f984546114f5565b84611683565b602080601f831160018114611734576000841561171c5750858301515b600019600386901b1c1916600185901b1785556116c9565b600085815260208120601f198616915b8281101561176357888601518255948401946001909101908401611744565b50858210156117815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906117c490830184611227565b9695505050505050565b6000602082840312156117e057600080fd5b8151610da5816111d0565b634e487b7160e01b600052601260045260246000fd5b600082611810576118106117eb565b500490565b600082611824576118246117eb565b500690565b634e487b7160e01b600052603260045260246000fdfea264697066735822122055b4e07304fe036fe3f04e44a7921cbb4fce75fcf1885d1110f1e529fecb60a764736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde1461022f578063c87b56dd14610242578063e985e9c514610255578063eacabe1414610268578063f2fde38b1461027b57600080fd5b8063715018a6146101fb5780638da5cb5b1461020357806395d89b4114610214578063a22cb4651461021c57600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab5780636352211e146101be57806370a08231146101d1578063714cff56146101f257600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e6101293660046111e6565b61028e565b60405190151581526020015b60405180910390f35b61014b6102e0565b60405161013a9190611253565b61016b610166366004611266565b610372565b6040516001600160a01b03909116815260200161013a565b61019661019136600461129b565b610399565b005b6101966101a63660046112c5565b6104b3565b6101966101b93660046112c5565b6104e4565b61016b6101cc366004611266565b6104ff565b6101e46101df366004611301565b61055f565b60405190815260200161013a565b6101e460085481565b6101966105e5565b6007546001600160a01b031661016b565b61014b6105f9565b61019661022a36600461131c565b610608565b61019661023d3660046113e4565b610617565b61014b610250366004611266565b61064f565b61012e610263366004611460565b61075f565b610196610276366004611493565b61078d565b610196610289366004611301565b61084b565b60006001600160e01b031982166380ac58cd60e01b14806102bf57506001600160e01b03198216635b5e139f60e01b145b806102da57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102ef906114f5565b80601f016020809104026020016040519081016040528092919081815260200182805461031b906114f5565b80156103685780601f1061033d57610100808354040283529160200191610368565b820191906000526020600020905b81548152906001019060200180831161034b57829003601f168201915b5050505050905090565b600061037d826108c4565b506000908152600460205260409020546001600160a01b031690565b60006103a4826104ff565b9050806001600160a01b0316836001600160a01b0316036104165760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806104325750610432813361075f565b6104a45760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161040d565b6104ae8383610923565b505050565b6104bd3382610991565b6104d95760405162461bcd60e51b815260040161040d9061152f565b6104ae8383836109ef565b6104ae83838360405180602001604052806000815250610617565b6000818152600260205260408120546001600160a01b0316806102da5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161040d565b60006001600160a01b0382166105c95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161040d565b506001600160a01b031660009081526003602052604090205490565b6105ed610b8b565b6105f76000610be5565b565b6060600180546102ef906114f5565b610613338383610c37565b5050565b6106213383610991565b61063d5760405162461bcd60e51b815260040161040d9061152f565b61064984848484610d05565b50505050565b606061065a826108c4565b60008281526006602052604081208054610673906114f5565b80601f016020809104026020016040519081016040528092919081815260200182805461069f906114f5565b80156106ec5780601f106106c1576101008083540402835291602001916106ec565b820191906000526020600020905b8154815290600101906020018083116106cf57829003601f168201915b50505050509050600061070a60408051602081019091526000815290565b9050805160000361071c575092915050565b81511561074e57808260405160200161073692919061157d565b60405160208183030381529060405292505050919050565b61075784610d38565b949350505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610795610b8b565b6001600160a01b0382166107dd5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161040d565b600880549060006107ed836115c2565b91905055506107fe82600854610dac565b61080a60085482610dc6565b7f9f0432214927ca5d54e705bee45cb45cd0b88d9c6bc15906cc3498feb1d81310826008548360405161083f939291906115db565b60405180910390a15050565b610853610b8b565b6001600160a01b0381166108b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040d565b6108c181610be5565b50565b6000818152600260205260409020546001600160a01b03166108c15760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161040d565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610958826104ff565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061099d836104ff565b9050806001600160a01b0316846001600160a01b031614806109c457506109c4818561075f565b806107575750836001600160a01b03166109dd84610372565b6001600160a01b031614949350505050565b826001600160a01b0316610a02826104ff565b6001600160a01b031614610a665760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161040d565b6001600160a01b038216610ac85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161040d565b610ad3600082610923565b6001600160a01b0383166000908152600360205260408120805460019290610afc90849061160b565b90915550506001600160a01b0382166000908152600360205260408120805460019290610b2a90849061161e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6007546001600160a01b031633146105f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603610c985760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161040d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d108484846109ef565b610d1c84848484610e59565b6106495760405162461bcd60e51b815260040161040d90611631565b6060610d43826108c4565b6000610d5a60408051602081019091526000815290565b90506000815111610d7a5760405180602001604052806000815250610da5565b80610d8484610f5a565b604051602001610d9592919061157d565b6040516020818303038152906040525b9392505050565b61061382826040518060200160405280600081525061105b565b6000828152600260205260409020546001600160a01b0316610e415760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161040d565b60008281526006602052604090206104ae82826116d1565b60006001600160a01b0384163b15610f4f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610e9d903390899088908890600401611791565b6020604051808303816000875af1925050508015610ed8575060408051601f3d908101601f19168201909252610ed5918101906117ce565b60015b610f35573d808015610f06576040519150601f19603f3d011682016040523d82523d6000602084013e610f0b565b606091505b508051600003610f2d5760405162461bcd60e51b815260040161040d90611631565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610757565b506001949350505050565b606081600003610f815750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610fab5780610f95816115c2565b9150610fa49050600a83611801565b9150610f85565b60008167ffffffffffffffff811115610fc657610fc6611358565b6040519080825280601f01601f191660200182016040528015610ff0576020820181803683370190505b5090505b84156107575761100560018361160b565b9150611012600a86611815565b61101d90603061161e565b60f81b81838151811061103257611032611829565b60200101906001600160f81b031916908160001a905350611054600a86611801565b9450610ff4565b611065838361108e565b6110726000848484610e59565b6104ae5760405162461bcd60e51b815260040161040d90611631565b6001600160a01b0382166110e45760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161040d565b6000818152600260205260409020546001600160a01b0316156111495760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161040d565b6001600160a01b038216600090815260036020526040812080546001929061117290849061161e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b0319811681146108c157600080fd5b6000602082840312156111f857600080fd5b8135610da5816111d0565b60005b8381101561121e578181015183820152602001611206565b50506000910152565b6000815180845261123f816020860160208601611203565b601f01601f19169290920160200192915050565b602081526000610da56020830184611227565b60006020828403121561127857600080fd5b5035919050565b80356001600160a01b038116811461129657600080fd5b919050565b600080604083850312156112ae57600080fd5b6112b78361127f565b946020939093013593505050565b6000806000606084860312156112da57600080fd5b6112e38461127f565b92506112f16020850161127f565b9150604084013590509250925092565b60006020828403121561131357600080fd5b610da58261127f565b6000806040838503121561132f57600080fd5b6113388361127f565b91506020830135801515811461134d57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561138957611389611358565b604051601f8501601f19908116603f011681019082821181831017156113b1576113b1611358565b816040528093508581528686860111156113ca57600080fd5b858560208301376000602087830101525050509392505050565b600080600080608085870312156113fa57600080fd5b6114038561127f565b93506114116020860161127f565b925060408501359150606085013567ffffffffffffffff81111561143457600080fd5b8501601f8101871361144557600080fd5b6114548782356020840161136e565b91505092959194509250565b6000806040838503121561147357600080fd5b61147c8361127f565b915061148a6020840161127f565b90509250929050565b600080604083850312156114a657600080fd5b6114af8361127f565b9150602083013567ffffffffffffffff8111156114cb57600080fd5b8301601f810185136114dc57600080fd5b6114eb8582356020840161136e565b9150509250929050565b600181811c9082168061150957607f821691505b60208210810361152957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000835161158f818460208801611203565b8351908301906115a3818360208801611203565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016115d4576115d46115ac565b5060010190565b60018060a01b03841681528260208201526060604082015260006116026060830184611227565b95945050505050565b818103818111156102da576102da6115ac565b808201808211156102da576102da6115ac565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b601f8211156104ae57600081815260208120601f850160051c810160208610156116aa5750805b601f850160051c820191505b818110156116c9578281556001016116b6565b505050505050565b815167ffffffffffffffff8111156116eb576116eb611358565b6116ff816116f984546114f5565b84611683565b602080601f831160018114611734576000841561171c5750858301515b600019600386901b1c1916600185901b1785556116c9565b600085815260208120601f198616915b8281101561176357888601518255948401946001909101908401611744565b50858210156117815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906117c490830184611227565b9695505050505050565b6000602082840312156117e057600080fd5b8151610da5816111d0565b634e487b7160e01b600052601260045260246000fd5b600082611810576118106117eb565b500490565b600082611824576118246117eb565b500690565b634e487b7160e01b600052603260045260246000fdfea264697066735822122055b4e07304fe036fe3f04e44a7921cbb4fce75fcf1885d1110f1e529fecb60a764736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/IOUToken.sol:IOUToken": {"srcmap": "191:412:33:-:0;;;224:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;326:5;333:7;2044:5:19;:13;326:5:33;2044::19;:13;:::i;:::-;-1:-1:-1;2067:7:19;:17;2077:7;2067;:17;:::i;:::-;;1978:113;;352:29:33::1;358:8;368:12;352:5;;;:29;;:::i;:::-;224:164:::0;;;;191:412;;8402:389:19;-1:-1:-1;;;;;8485:21:19;;8477:65;;;;-1:-1:-1;;;8477:65:19;;4578:2:48;8477:65:19;;;4560:21:48;4617:2;4597:18;;;4590:30;4656:33;4636:18;;;4629:61;4707:18;;8477:65:19;;;;;;;;8629:6;8613:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8645:18:19;;:9;:18;;;;;;;;;;:28;;8667:6;;8645:9;:28;;8667:6;;8645:28;:::i;:::-;;;;-1:-1:-1;;8688:37:19;;5109:25:48;;;-1:-1:-1;;;;;8688:37:19;;;8705:1;;8688:37;;5097:2:48;5082:18;8688:37:19;;;;;;;8402:389;;:::o;11786:121::-;;;;:::o;14:127:48:-;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:48;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:48;;;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:48:o;991:791::-;1108:6;1116;1124;1132;1185:3;1173:9;1164:7;1160:23;1156:33;1153:53;;;1202:1;1199;1192:12;1153:53;1228:16;;-1:-1:-1;;;;;1273:31:48;;1263:42;;1253:70;;1319:1;1316;1309:12;1253:70;1387:2;1372:18;;1366:25;1435:2;1420:18;;1414:25;1342:5;;-1:-1:-1;1366:25:48;-1:-1:-1;;;;;;1488:14:48;;;1485:34;;;1515:1;1512;1505:12;1485:34;1538:61;1591:7;1582:6;1571:9;1567:22;1538:61;:::i;:::-;1528:71;;1645:2;1634:9;1630:18;1624:25;1608:41;;1674:2;1664:8;1661:16;1658:36;;;1690:1;1687;1680:12;1658:36;;1713:63;1768:7;1757:8;1746:9;1742:24;1713:63;:::i;:::-;1703:73;;;991:791;;;;;;;:::o;1787:380::-;1866:1;1862:12;;;;1909;;;1930:61;;1984:4;1976:6;1972:17;1962:27;;1930:61;2037:2;2029:6;2026:14;2006:18;2003:38;2000:161;;2083:10;2078:3;2074:20;2071:1;2064:31;2118:4;2115:1;2108:15;2146:4;2143:1;2136:15;2000:161;;1787:380;;;:::o;2298:545::-;2400:2;2395:3;2392:11;2389:448;;;2436:1;2461:5;2457:2;2450:17;2506:4;2502:2;2492:19;2576:2;2564:10;2560:19;2557:1;2553:27;2547:4;2543:38;2612:4;2600:10;2597:20;2594:47;;;-1:-1:-1;2635:4:48;2594:47;2690:2;2685:3;2681:12;2678:1;2674:20;2668:4;2664:31;2654:41;;2745:82;2763:2;2756:5;2753:13;2745:82;;;2808:17;;;2789:1;2778:13;2745:82;;;2749:3;;;2298:545;;;:::o;3019:1352::-;3139:10;;-1:-1:-1;;;;;3161:30:48;;3158:56;;;3194:18;;:::i;:::-;3223:97;3313:6;3273:38;3305:4;3299:11;3273:38;:::i;:::-;3267:4;3223:97;:::i;:::-;3375:4;;3439:2;3428:14;;3456:1;3451:663;;;;4158:1;4175:6;4172:89;;;-1:-1:-1;4227:19:48;;;4221:26;4172:89;-1:-1:-1;;2976:1:48;2972:11;;;2968:24;2964:29;2954:40;3000:1;2996:11;;;2951:57;4274:81;;3421:944;;3451:663;2245:1;2238:14;;;2282:4;2269:18;;-1:-1:-1;;3487:20:48;;;3605:236;3619:7;3616:1;3613:14;3605:236;;;3708:19;;;3702:26;3687:42;;3800:27;;;;3768:1;3756:14;;;;3635:19;;3605:236;;;3609:3;3869:6;3860:7;3857:19;3854:201;;;3930:19;;;3924:26;-1:-1:-1;;4013:1:48;4009:14;;;4025:3;4005:24;4001:37;3997:42;3982:58;3967:74;;3854:201;-1:-1:-1;;;;;4101:1:48;4085:14;;;4081:22;4068:36;;-1:-1:-1;3019:1352:48:o;4736:222::-;4801:9;;;4822:10;;;4819:133;;;4874:10;4869:3;4865:20;4862:1;4855:31;4909:4;4906:1;4899:15;4937:4;4934:1;4927:15;4819:133;4736:222;;;;:::o;4963:177::-;191:412:33;;;;;;", "srcmap-runtime": "191:412:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:48;;1162:22;1144:41;;1132:2;1117:18;4433:197:19;1004:187:48;3244:106:19;3331:12;;3244:106;;;1342:25:48;;;1330:2;1315:18;3244:106:19;1196:177:48;5192:286:19;;;;;;:::i;:::-;;:::i;3093:91::-;;;3175:2;1853:36:48;;1841:2;1826:18;3093:91:19;1711:184:48;5873:234:19;;;;;;:::i;:::-;;:::i;516:85:33:-;;;;;;:::i;:::-;;:::i;:::-;;3408:125:19;;;;;;:::i;:::-;-1:-1:-1;;;;;3508:18:19;3482:7;3508:18;;;;;;;;;;;;3408:125;2367:102;;;:::i;6594:427::-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;;:::i;2156:98::-;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:28;4570:32:19;719:10:28;4586:7:19;4595:6;4570:8;:32::i;:::-;4619:4;4612:11;;;4433:197;;;;;:::o;5192:286::-;5319:4;719:10:28;5375:38:19;5391:4;719:10:28;5406:6:19;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:19;;5192:286;-1:-1:-1;;;;5192:286:19:o;5873:234::-;5961:4;719:10:28;6015:64:19;719:10:28;6031:7:19;6068:10;6040:25;719:10:28;6031:7:19;6040:9;:25::i;:::-;:38;;;;:::i;:::-;6015:8;:64::i;516:85:33:-;566:28;719:10:28;586:7:33;566:5;:28::i;:::-;516:85;:::o;2367:102:19:-;2423:13;2455:7;2448:14;;;;;:::i;6594:427::-;6687:4;719:10:28;6687:4:19;6768:25;719:10:28;6785:7:19;6768:9;:25::i;:::-;6741:52;;6831:15;6811:16;:35;;6803:85;;;;-1:-1:-1;;;6803:85:19;;3390:2:48;6803:85:19;;;3372:21:48;3429:2;3409:18;;;3402:30;3468:34;3448:18;;;3441:62;-1:-1:-1;;;3519:18:48;;;3512:35;3564:19;;6803:85:19;;;;;;;;;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;3729:189::-;3808:4;719:10:28;3862:28:19;719:10:28;3879:2:19;3883:6;3862:9;:28::i;3976:149::-;-1:-1:-1;;;;;4091:18:19;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149::o;10110:370::-;-1:-1:-1;;;;;10241:19:19;;10233:68;;;;-1:-1:-1;;;10233:68:19;;3796:2:48;10233:68:19;;;3778:21:48;3835:2;3815:18;;;3808:30;3874:34;3854:18;;;3847:62;-1:-1:-1;;;3925:18:48;;;3918:34;3969:19;;10233:68:19;3594:400:48;10233:68:19;-1:-1:-1;;;;;10319:21:19;;10311:68;;;;-1:-1:-1;;;10311:68:19;;4201:2:48;10311:68:19;;;4183:21:48;4240:2;4220:18;;;4213:30;4279:34;4259:18;;;4252:62;-1:-1:-1;;;4330:18:48;;;4323:32;4372:19;;10311:68:19;3999:398:48;10311:68:19;-1:-1:-1;;;;;10390:18:19;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10441:32;;1342:25:48;;;10441:32:19;;1315:18:48;10441:32:19;;;;;;;;10110:370;;;:::o;10761:441::-;10891:24;10918:25;10928:5;10935:7;10918:9;:25::i;:::-;10891:52;;-1:-1:-1;;10957:16:19;:37;10953:243;;11038:6;11018:16;:26;;11010:68;;;;-1:-1:-1;;;11010:68:19;;4604:2:48;11010:68:19;;;4586:21:48;4643:2;4623:18;;;4616:30;4682:31;4662:18;;;4655:59;4731:18;;11010:68:19;4402:353:48;11010:68:19;11120:51;11129:5;11136:7;11164:6;11145:16;:25;11120:8;:51::i;:::-;10881:321;10761:441;;;:::o;7475:651::-;-1:-1:-1;;;;;7601:18:19;;7593:68;;;;-1:-1:-1;;;7593:68:19;;4962:2:48;7593:68:19;;;4944:21:48;5001:2;4981:18;;;4974:30;5040:34;5020:18;;;5013:62;-1:-1:-1;;;5091:18:48;;;5084:35;5136:19;;7593:68:19;4760:401:48;7593:68:19;-1:-1:-1;;;;;7679:16:19;;7671:64;;;;-1:-1:-1;;;7671:64:19;;5368:2:48;7671:64:19;;;5350:21:48;5407:2;5387:18;;;5380:30;5446:34;5426:18;;;5419:62;-1:-1:-1;;;5497:18:48;;;5490:33;5540:19;;7671:64:19;5166:399:48;7671:64:19;-1:-1:-1;;;;;7817:15:19;;7795:19;7817:15;;;;;;;;;;;7850:21;;;;7842:72;;;;-1:-1:-1;;;7842:72:19;;5772:2:48;7842:72:19;;;5754:21:48;5811:2;5791:18;;;5784:30;5850:34;5830:18;;;5823:62;-1:-1:-1;;;5901:18:48;;;5894:36;5947:19;;7842:72:19;5570:402:48;7842:72:19;-1:-1:-1;;;;;7948:15:19;;;:9;:15;;;;;;;;;;;7966:20;;;7948:38;;8006:13;;;;;;;;:23;;7980:6;;7948:9;8006:23;;7980:6;;8006:23;:::i;:::-;;;;;;;;8060:2;-1:-1:-1;;;;;8045:26:19;8054:4;-1:-1:-1;;;;;8045:26:19;;8064:6;8045:26;;;;1342:25:48;;1330:2;1315:18;;1196:177;8045:26:19;;;;;;;;8082:37;9111:576;;-1:-1:-1;;;;;9194:21:19;;9186:67;;;;-1:-1:-1;;;9186:67:19;;6179:2:48;9186:67:19;;;6161:21:48;6218:2;6198:18;;;6191:30;6257:34;6237:18;;;6230:62;-1:-1:-1;;;6308:18:48;;;6301:31;6349:19;;9186:67:19;5977:397:48;9186:67:19;-1:-1:-1;;;;;9349:18:19;;9324:22;9349:18;;;;;;;;;;;9385:24;;;;9377:71;;;;-1:-1:-1;;;9377:71:19;;6581:2:48;9377:71:19;;;6563:21:48;6620:2;6600:18;;;6593:30;6659:34;6639:18;;;6632:62;-1:-1:-1;;;6710:18:48;;;6703:32;6752:19;;9377:71:19;6379:398:48;9377:71:19;-1:-1:-1;;;;;9482:18:19;;:9;:18;;;;;;;;;;9503:23;;;9482:44;;9546:12;:22;;9520:6;;9482:9;9546:22;;9520:6;;9546:22;:::i;:::-;;;;-1:-1:-1;;9584:37:19;;1342:25:48;;;9610:1:19;;-1:-1:-1;;;;;9584:37:19;;;;;1330:2:48;1315:18;9584:37:19;1196:177:48;14:548;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:48;;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:48: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:180::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;-1:-1:-1;2051:23:48;;1900:180;-1:-1:-1;1900:180:48:o;2085:186::-;2144:6;2197:2;2185:9;2176:7;2172:23;2168:32;2165:52;;;2213:1;2210;2203:12;2165:52;2236:29;2255:9;2236:29;:::i;:::-;2226:39;2085:186;-1:-1:-1;;;2085:186:48:o;2276:260::-;2344:6;2352;2405:2;2393:9;2384:7;2380:23;2376:32;2373:52;;;2421:1;2418;2411:12;2373:52;2444:29;2463:9;2444:29;:::i;:::-;2434:39;;2492:38;2526:2;2515:9;2511:18;2492:38;:::i;:::-;2482:48;;2276:260;;;;;:::o;2541:380::-;2620:1;2616:12;;;;2663;;;2684:61;;2738:4;2730:6;2726:17;2716:27;;2684:61;2791:2;2783:6;2780:14;2760:18;2757:38;2754:161;;2837:10;2832:3;2828:20;2825:1;2818:31;2872:4;2869:1;2862:15;2900:4;2897:1;2890:15;2754:161;;2541:380;;;:::o;2926:127::-;2987:10;2982:3;2978:20;2975:1;2968:31;3018:4;3015:1;3008:15;3042:4;3039:1;3032:15;3058:125;3123:9;;;3144:10;;;3141:36;;;3157:18;;:::i;6782:128::-;6849:9;;;6870:11;;;6867:37;;;6884:18;;:::i", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply_\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount_\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"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\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040523480156200001157600080fd5b5060405162000e6e38038062000e6e833981016040819052620000349162000224565b8181600362000044838262000346565b50600462000053828262000346565b5050506200006884846200007260201b60201c565b505050506200043a565b6001600160a01b038216620000cd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000e1919062000412565b90915550506001600160a01b038216600090815260208190526040812080548392906200011090849062000412565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200018757600080fd5b81516001600160401b0380821115620001a457620001a46200015f565b604051601f8301601f19908116603f01168101908282118183101715620001cf57620001cf6200015f565b81604052838152602092508683858801011115620001ec57600080fd5b600091505b83821015620002105785820183015181830184015290820190620001f1565b600093810190920192909252949350505050565b600080600080608085870312156200023b57600080fd5b84516001600160a01b03811681146200025357600080fd5b6020860151604087015191955093506001600160401b03808211156200027857600080fd5b620002868883890162000175565b935060608701519150808211156200029d57600080fd5b50620002ac8782880162000175565b91505092959194509250565b600181811c90821680620002cd57607f821691505b602082108103620002ee57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200015a57600081815260208120601f850160051c810160208610156200031d5750805b601f850160051c820191505b818110156200033e5782815560010162000329565b505050505050565b81516001600160401b038111156200036257620003626200015f565b6200037a81620003738454620002b8565b84620002f4565b602080601f831160018114620003b25760008415620003995750858301515b600019600386901b1c1916600185901b1785556200033e565b600085815260208120601f198616915b82811015620003e357888601518255948401946001909101908401620003c2565b5085821015620004025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200043457634e487b7160e01b600052601160045260246000fd5b92915050565b610a24806200044a6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806342966c681161007157806342966c681461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061083a565b60405180910390f35b6100ea6100e53660046108a4565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046108ce565b61026c565b604051601281526020016100ce565b6100ea61013c3660046108a4565b610290565b61015461014f36600461090a565b6102b2565b005b6100fe610164366004610923565b6001600160a01b031660009081526020819052604090205490565b6100c16102bf565b6100ea6101953660046108a4565b6102ce565b6100ea6101a83660046108a4565b61034e565b6100fe6101bb366004610945565b61035c565b6060600380546101cf90610978565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610978565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610387565b60019150505b92915050565b60003361027a8582856104ac565b610285858585610526565b506001949350505050565b6000336102608185856102a3838361035c565b6102ad91906109c8565b610387565b6102bc33826106f4565b50565b6060600480546101cf90610978565b600033816102dc828661035c565b9050838110156103415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102858286868403610387565b600033610260818585610526565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103e95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610338565b6001600160a01b03821661044a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610338565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104b8848461035c565b9050600019811461052057818110156105135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610338565b6105208484848403610387565b50505050565b6001600160a01b03831661058a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610338565b6001600160a01b0382166105ec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610338565b6001600160a01b038316600090815260208190526040902054818110156106645760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610338565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061069b9084906109c8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106e791815260200190565b60405180910390a3610520565b6001600160a01b0382166107545760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610338565b6001600160a01b038216600090815260208190526040902054818110156107c85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610338565b6001600160a01b03831660009081526020819052604081208383039055600280548492906107f79084906109db565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161049f565b600060208083528351808285015260005b818110156108675785810183015185820160400152820161084b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461089f57600080fd5b919050565b600080604083850312156108b757600080fd5b6108c083610888565b946020939093013593505050565b6000806000606084860312156108e357600080fd5b6108ec84610888565b92506108fa60208501610888565b9150604084013590509250925092565b60006020828403121561091c57600080fd5b5035919050565b60006020828403121561093557600080fd5b61093e82610888565b9392505050565b6000806040838503121561095857600080fd5b61096183610888565b915061096f60208401610888565b90509250929050565b600181811c9082168061098c57607f821691505b6020821081036109ac57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610266576102666109b2565b81810381811115610266576102666109b256fea26469706673582212206f580637e2726840ddefd5197269032aa3ba94a5d49ec58f0f176cc76bec3ecd64736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100b45760003560e01c806342966c681161007157806342966c681461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061083a565b60405180910390f35b6100ea6100e53660046108a4565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046108ce565b61026c565b604051601281526020016100ce565b6100ea61013c3660046108a4565b610290565b61015461014f36600461090a565b6102b2565b005b6100fe610164366004610923565b6001600160a01b031660009081526020819052604090205490565b6100c16102bf565b6100ea6101953660046108a4565b6102ce565b6100ea6101a83660046108a4565b61034e565b6100fe6101bb366004610945565b61035c565b6060600380546101cf90610978565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610978565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610387565b60019150505b92915050565b60003361027a8582856104ac565b610285858585610526565b506001949350505050565b6000336102608185856102a3838361035c565b6102ad91906109c8565b610387565b6102bc33826106f4565b50565b6060600480546101cf90610978565b600033816102dc828661035c565b9050838110156103415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102858286868403610387565b600033610260818585610526565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103e95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610338565b6001600160a01b03821661044a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610338565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104b8848461035c565b9050600019811461052057818110156105135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610338565b6105208484848403610387565b50505050565b6001600160a01b03831661058a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610338565b6001600160a01b0382166105ec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610338565b6001600160a01b038316600090815260208190526040902054818110156106645760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610338565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061069b9084906109c8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106e791815260200190565b60405180910390a3610520565b6001600160a01b0382166107545760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610338565b6001600160a01b038216600090815260208190526040902054818110156107c85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610338565b6001600160a01b03831660009081526020819052604081208383039055600280548492906107f79084906109db565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161049f565b600060208083528351808285015260005b818110156108675785810183015185820160400152820161084b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461089f57600080fd5b919050565b600080604083850312156108b757600080fd5b6108c083610888565b946020939093013593505050565b6000806000606084860312156108e357600080fd5b6108ec84610888565b92506108fa60208501610888565b9150604084013590509250925092565b60006020828403121561091c57600080fd5b5035919050565b60006020828403121561093557600080fd5b61093e82610888565b9392505050565b6000806040838503121561095857600080fd5b61096183610888565b915061096f60208401610888565b90509250929050565b600181811c9082168061098c57607f821691505b6020821081036109ac57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610266576102666109b2565b81810381811115610266576102666109b256fea26469706673582212206f580637e2726840ddefd5197269032aa3ba94a5d49ec58f0f176cc76bec3ecd64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/LearnToEarn.sol:LearnToEarn": {"srcmap": "798:11064:34:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "798:11064:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11022:156;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6349:1916;;;;;;:::i;:::-;;:::i;:::-;;8444:661;;;;;;:::i;:::-;;:::i;2071:101:0:-;;;:::i;2058:108:34:-;;;:::i;1441:85:0:-;1513:6;;1441:85;;-1:-1:-1;;;;;1513:6:0;;;3336:51:48;;3324:2;3309:18;1441:85:0;3190:203:48;9321:499:34;;;;;;:::i;:::-;;:::i;2825:2116::-;;;;;;:::i;:::-;;:::i;5131:704::-;;;;;;:::i;:::-;;:::i;10713:125::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2321:198:0:-;;;;;;:::i;:::-;;:::i;10024:563:34:-;;;;;;:::i;:::-;;:::i;:::-;;;6526:14:48;;6519:22;6501:41;;6489:2;6474:18;10024:563:34;6361:187:48;11022:156:34;11106:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11106:14:34;11139:22;;;;:11;:22;;;;;;;;-1:-1:-1;;;;;11139:32:34;;;;;;;;;;11132:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11139:32;;11132:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11022:156;;;;;:::o;6349:1916::-;1563:21;;;;:10;:21;;;;;:29;6549:9;;-1:-1:-1;;;;;1563:29:34;929:10:12;1563:45:34;1555:86;;;;-1:-1:-1;;;1555:86:34;;;;;;;:::i;:::-;;;;;;;;;1844:21:::1;::::0;;;:10:::1;:21;::::0;;;;:33:::1;;::::0;6573:9;;1844:38;1836:74:::1;;;;-1:-1:-1::0;;;1836:74:34::1;;;;;;;:::i;:::-;6594:21:::2;6618::::0;;;:10:::2;:21;::::0;;;;6657:18:::2;::::0;::::2;::::0;:34;-1:-1:-1;6657:34:34;::::2;::::0;:68:::2;;;6710:15;6695:12;:30;6657:68;6649:99;;;::::0;-1:-1:-1;;;6649:99:34;;7464:2:48;6649:99:34::2;::::0;::::2;7446:21:48::0;7503:2;7483:18;;;7476:30;-1:-1:-1;;;7522:18:48;;;7515:48;7580:18;;6649:99:34::2;7262:342:48::0;6649:99:34::2;6783:12;6766:14;:29;6758:63;;;::::0;-1:-1:-1;;;6758:63:34;;7811:2:48;6758:63:34::2;::::0;::::2;7793:21:48::0;7850:2;7830:18;;;7823:30;-1:-1:-1;;;7869:18:48;;;7862:51;7930:18;;6758:63:34::2;7609:345:48::0;6758:63:34::2;6832:23;6858:22:::0;;;:11:::2;:22;::::0;;;;;;;-1:-1:-1;;;;;6858:32:34;::::2;::::0;;;;;;;6908:21:::2;::::0;::::2;::::0;:26;6900:56:::2;;;::::0;-1:-1:-1;;;6900:56:34;;8161:2:48;6900:56:34::2;::::0;::::2;8143:21:48::0;8200:2;8180:18;;;8173:30;-1:-1:-1;;;8219:18:48;;;8212:47;8276:18;;6900:56:34::2;7959:341:48::0;6900:56:34::2;6967:34:::0;;;:19:::2;7037:48;7049:9:::0;7060:8;7070:14;7037:11:::2;:48::i;:::-;7096:21;::::0;::::2;:38:::0;;;7011:74;-1:-1:-1;7145:1062:34;::::2;;;7209:6;:12;;;7183:6;:22;;;:38;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;7235:32:34::2;::::0;::::2;:34:::0;;;:32:::2;:34;::::0;::::2;:::i;:::-;::::0;;;-1:-1:-1;;7307:15:34::2;7284:20;::::0;::::2;:38:::0;7341:19:::2;::::0;::::2;::::0;::::2;;7337:755;;;7443:12;::::0;::::2;::::0;7398:20:::2;::::0;::::2;::::0;7380:76:::2;::::0;-1:-1:-1;;;;;7398:20:34;;::::2;::::0;7433:8;;7380:52:::2;:76::i;:::-;7337:755;;;7499:17;::::0;::::2;::::0;::::2;::::0;::::2;;;7495:583;;;7545:9;7540:160;7564:6;:12;;;7560:1;:16;7540:160;;;7640:20;::::0;::::2;::::0;7629:47:::2;::::0;-1:-1:-1;;;7629:47:34;;-1:-1:-1;;;;;3354:32:48;;;7629:47:34::2;::::0;::::2;3336:51:48::0;7609:14:34::2;::::0;::::2;::::0;7640:20:::2;::::0;7629:37:::2;::::0;3309:18:48;;7629:47:34::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7609:68:::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;7609:68:34;;;::::2;::::0;;;;;::::2;::::0;7578:3;::::2;::::0;::::2;:::i;:::-;;;;7540:160;;;;7495:583;;;7772:6;:12;;;7754:7;:14;:30;7746:58;;;::::0;-1:-1:-1;;;7746:58:34;;9101:2:48;7746:58:34::2;::::0;::::2;9083:21:48::0;9140:2;9120:18;;;9113:30;-1:-1:-1;;;9159:18:48;;;9152:45;9214:18;;7746:58:34::2;8899:339:48::0;7746:58:34::2;7827:24:::0;;::::2;::::0;:14:::2;::::0;::::2;::::0;:24:::2;::::0;::::2;::::0;::::2;:::i;:::-;;7878:9;7873:187;7897:7;:14;7893:1;:18;7873:187;;;7963:20;::::0;::::2;::::0;-1:-1:-1;;;;;7963:20:34::2;7944:57;929:10:12::0;8016:8:34::2;8026:7;8034:1;8026:10;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;7944:93:::2;::::0;-1:-1:-1;;;;;;7944:93:34::2;::::0;;;;;;-1:-1:-1;;;;;9633:15:48;;;7944:93:34::2;::::0;::::2;9615:34:48::0;9685:15;;;;9665:18;;;9658:43;9717:18;;;9710:34;9550:18;;7944:93:34::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;7913:3;;;;;:::i;:::-;;;;7873:187;;;;7495:583;8145:20;::::0;::::2;::::0;8167:12:::2;::::0;::::2;::::0;8110:86:::2;::::0;-1:-1:-1;;;;;8145:20:34;;::::2;::::0;8110:86;::::2;::::0;8124:9;;8110:86:::2;::::0;::::2;::::0;8181:14:::2;::::0;::::2;::::0;8110:86:::2;:::i;:::-;;;;;;;;7145:1062;8222:36;::::0;-1:-1:-1;;;;;3354:32:48;;3336:51;;8238:9:34;;8222:36:::2;::::0;3324:2:48;3309:18;8222:36:34::2;;;;;;;6584:1681;;;1651:1:::1;6349:1916:::0;;;;;;:::o;8444:661::-;1563:21;;;;:10;:21;;;;;:29;8508:9;;-1:-1:-1;;;;;1563:29:34;929:10:12;1563:45:34;1555:86;;;;-1:-1:-1;;;1555:86:34;;;;;;;:::i;:::-;1844:21:::1;::::0;;;:10:::1;:21;::::0;;;;:33:::1;;::::0;8532:9;;1844:38;1836:74:::1;;;;-1:-1:-1::0;;;1836:74:34::1;;;;;;;:::i;:::-;8553:21:::2;8577::::0;;;:10:::2;:21;::::0;;;;8616:19:::2;::::0;::::2;::::0;::::2;;8608:46;;;::::0;-1:-1:-1;;;8608:46:34;;10688:2:48;8608:46:34::2;::::0;::::2;10670:21:48::0;10727:2;10707:18;;;10700:30;-1:-1:-1;;;10746:18:48;;;10739:44;10800:18;;8608:46:34::2;10486:338:48::0;8608:46:34::2;8697:1;8672:6;:22;;;:26;8664:52;;;::::0;-1:-1:-1;;;8664:52:34;;11031:2:48;8664:52:34::2;::::0;::::2;11013:21:48::0;11070:2;11050:18;;;11043:30;-1:-1:-1;;;11089:18:48;;;11082:43;11142:18;;8664:52:34::2;10829:337:48::0;8664:52:34::2;8734:22;::::0;::::2;::::0;;;::::2;;;::::0;:93:::2;;-1:-1:-1::0;8761:19:34::2;::::0;::::2;::::0;:24;;::::2;::::0;:65:::2;;;8807:6;:19;;;8789:15;:37;8761:65;8726:130;;;::::0;-1:-1:-1;;;8726:130:34;;11373:2:48;8726:130:34::2;::::0;::::2;11355:21:48::0;11412:2;11392:18;;;11385:30;11451:26;11431:18;;;11424:54;11495:18;;8726:130:34::2;11171:348:48::0;8726:130:34::2;8885:22;::::0;::::2;::::0;;8867:15:::2;8918:26:::0;;;9007:14;;-1:-1:-1;8972:20:34;::::2;::::0;8954:77:::2;::::0;-1:-1:-1;;;;;8972:20:34;;::::2;::::0;9007:14:::2;8885:22:::0;8954:52:::2;:77::i;:::-;9074:14:::0;;9047:51:::2;::::0;11670:25:48;;;-1:-1:-1;;;;;9074:14:34;;::::2;::::0;9063:9;;9047:51:::2;::::0;11658:2:48;11643:18;9047:51:34::2;;;;;;;8543:562;;1651:1:::1;8444:661:::0;;:::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;2058:108:34:-;3111:19:1;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:1;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:1;1476:19:11;:23;;;3219:66:1;;-1:-1:-1;3268:12:1;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:1;;11908:2:48;3157:201:1;;;11890:21:48;11947:2;11927:18;;;11920:30;11986:34;11966:18;;;11959:62;-1:-1:-1;;;12037:18:48;;;12030:44;12091:19;;3157:201:1;11706:410:48;3157:201:1;3368:12;:16;;-1:-1:-1;;3368:16:1;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:1;;;;;3394:65;2109:16:34::1;:14;:16::i;:::-;2135:24;:22;:24::i;:::-;3483:14:1::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:1;;;3553:14;;-1:-1:-1;12273:36:48;;3553:14:1;;12261:2:48;12246:18;3553:14:1;;;;;;;3479:99;3101:483;2058:108:34:o;9321:499::-;1563:21;;;;:10;:21;;;;;:29;9383:9;;-1:-1:-1;;;;;1563:29:34;929:10:12;1563:45:34;1555:86;;;;-1:-1:-1;;;1555:86:34;;;;;;;:::i;:::-;1844:21:::1;::::0;;;:10:::1;:21;::::0;;;;:33:::1;;::::0;9407:9;;1844:38;1836:74:::1;;;;-1:-1:-1::0;;;1836:74:34::1;;;;;;;:::i;:::-;9428:21:::2;9452::::0;;;:10:::2;:21;::::0;;;;9504:15:::2;9483:18;::::0;::::2;:36:::0;9548:22:::2;::::0;::::2;::::0;;9580:26;;;9621:19:::2;::::0;::::2;::::0;9452:21;;9548:22;9621:19:::2;;:34:::0;::::2;;;;9654:1;9644:7;:11;9621:34;9617:142;;;9724:14:::0;;;9689:20;::::2;::::0;9671:77:::2;::::0;-1:-1:-1;;;;;9689:20:34;;::::2;::::0;9724:14:::2;9740:7:::0;9671:52:::2;:77::i;:::-;9798:14:::0;;9773:40:::2;::::0;-1:-1:-1;;;;;9798:14:34;;::::2;::::0;9787:9;;9773:40:::2;::::0;9798:14:::2;::::0;9773:40:::2;9418:402;;1651:1:::1;9321:499:::0;;:::o;2825:2116::-;3069:7;1316:1;1306:7;:11;1298:35;;;;-1:-1:-1;;;1298:35:34;;;;;;;:::i;:::-;3086:6:::1;1316:1;1306:7;:11;1298:35;;;;-1:-1:-1::0;;;1298:35:34::1;;;;;;;:::i;:::-;1815:1:2::2;2569:7;;:19:::0;2561:63:::2;;;::::0;-1:-1:-1;;;2561:63:2;;12862:2:48;2561:63:2::2;::::0;::::2;12844:21:48::0;12901:2;12881:18;;;12874:30;12940:33;12920:18;;;12913:61;12991:18;;2561:63:2::2;12660:355:48::0;2561:63:2::2;1815:1;2699:7;:18:::0;-1:-1:-1;;;;;3125:28:34;::::3;3117:63;;;::::0;-1:-1:-1;;;3117:63:34;;13222:2:48;3117:63:34::3;::::0;::::3;13204:21:48::0;13261:2;13241:18;;;13234:30;-1:-1:-1;;;13280:18:48;;;13273:52;13342:18;;3117:63:34::3;13020:346:48::0;3117:63:34::3;3209:6;3198:7;:17;;3190:44;;;::::0;-1:-1:-1;;;3190:44:34;;13573:2:48;3190:44:34::3;::::0;::::3;13555:21:48::0;13612:2;13592:18;;;13585:30;-1:-1:-1;;;13631:18:48;;;13624:44;13685:18;;3190:44:34::3;13371:338:48::0;3190:44:34::3;3247:15:::0;;3244:123:::3;;3286:15;3272:10;:29;;3264:60;;;::::0;-1:-1:-1;;;3264:60:34;;7464:2:48;3264:60:34::3;::::0;::::3;7446:21:48::0;7503:2;7483:18;;;7476:30;-1:-1:-1;;;7522:18:48;;;7515:48;7580:18;;3264:60:34::3;7262:342:48::0;3264:60:34::3;3244:123;;;3352:15;3339:28;;3244:123;3378:24;3405:16;:91;;3447:18:::0;;;:48:::3;;;3485:10;3469:13;:26;3447:48;3405:91;;;3441:1;3425:13;:17;3405:91;3378:118;;3514:19;3506:54;;;::::0;-1:-1:-1;;;3506:54:34;;13916:2:48;3506:54:34::3;::::0;::::3;13898:21:48::0;13955:2;13935:18;;;13928:30;-1:-1:-1;;;13974:18:48;;;13967:52;14036:18;;3506:54:34::3;13714:346:48::0;3506:54:34::3;3571:17;3591:19;:17;:19::i;:::-;3571:39;;3620:16;3659:13;3654:551;;3825:62;-1:-1:-1::0;;;;;3825:32:34;::::3;-1:-1:-1::0;;;3825:32:34::3;:62::i;:::-;3811:76;;3907:11;3902:293;;3946:70;-1:-1:-1::0;;;;;3946:32:34;::::3;-1:-1:-1::0;;;3946:32:34::3;:70::i;:::-;3938:112;;;::::0;-1:-1:-1;;;3938:112:34;;14267:2:48;3938:112:34::3;::::0;::::3;14249:21:48::0;14306:2;14286:18;;;14279:30;14345:31;14325:18;;;14318:59;14394:18;;3938:112:34::3;14065:353:48::0;3938:112:34::3;4138:7:::0;-1:-1:-1;;;;;4076:44:34;::::3;;929:10:12::0;4076:58:34::3;::::0;-1:-1:-1;;;;;;4076:58:34::3;::::0;;;;;;-1:-1:-1;;;;;3354:32:48;;;4076:58:34::3;::::0;::::3;3336:51:48::0;3309:18;;4076:58:34::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:69;;4068:112;;;::::0;-1:-1:-1;;;4068:112:34;;14625:2:48;4068:112:34::3;::::0;::::3;14607:21:48::0;14664:2;14644:18;;;14637:30;14703:32;14683:18;;;14676:60;14753:18;;4068:112:34::3;14423:354:48::0;4068:112:34::3;4239:463;;;;;;;;4269:12;929:10:12::0;;850:96;4269:12:34::3;-1:-1:-1::0;;;;;4239:463:34::3;;;;;4310:14;-1:-1:-1::0;;;;;4239:463:34::3;;;;;4346:7;4239:463;;;;4384:7;4239:463;;;;4412:6;4239:463;;;;4459:1;4239:463;;;;4487:10;4239:463;;;;4525:13;4239:463;;;;4565:1;4239:463;;;;4641:13;4239:463;;;;;;4680:11;4239:463;;;;;;4597:16;4239:463;;;;::::0;4215:10:::3;:21;4226:9;4215:21;;;;;;;;;;;:487;;;;;;;;;;;;;-1:-1:-1::0;;;;;4215:487:34::3;;;;;-1:-1:-1::0;;;;;4215:487:34::3;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;4215:487:34::3;;;;;-1:-1:-1::0;;;;;4215:487:34::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4717:13;4713:132;;;4746:88;-1:-1:-1::0;;;;;4746:50:34;::::3;929:10:12::0;4819:4:34::3;4826:7:::0;4746:50:::3;:88::i;:::-;4860:74;::::0;;929:10:12;15051:34:48;;-1:-1:-1;;;;;15121:15:48;;15116:2;15101:18;;15094:43;15153:18;;;15146:34;;;15211:2;15196:18;;15189:34;;;4874:9:34;;4860:74:::3;::::0;15000:3:48;14985:19;4860:74:34::3;;;;;;;-1:-1:-1::0;;1772:1:2::2;2872:22:::0;;-1:-1:-1;;;;;;;;;;2825:2116:34:o;5131:704::-;1563:21;;;;:10;:21;;;;;:29;5207:9;;-1:-1:-1;;;;;1563:29:34;929:10:12;1563:45:34;1555:86;;;;-1:-1:-1;;;1555:86:34;;;;;;;:::i;:::-;5226:7:::1;1316:1;1306:7;:11;1298:35;;;;-1:-1:-1::0;;;1298:35:34::1;;;;;;;:::i;:::-;1844:21:::2;::::0;;;:10:::2;:21;::::0;;;;:33:::2;;::::0;5248:9;;1844:38;1836:74:::2;;;;-1:-1:-1::0;;;1836:74:34::2;;;;;;;:::i;:::-;1815:1:2::3;2569:7;;:19:::0;2561:63:::3;;;::::0;-1:-1:-1;;;2561:63:2;;12862:2:48;2561:63:2::3;::::0;::::3;12844:21:48::0;12901:2;12881:18;;;12874:30;12940:33;12920:18;;;12913:61;12991:18;;2561:63:2::3;12660:355:48::0;2561:63:2::3;1815:1;2699:7;:18:::0;;;5282:21:34::4;5306::::0;;;:10:::4;:21;::::0;;;;5338:13;;::::4;:24:::0;;5355:7;;5282:21;5338:24:::4;::::0;5355:7;;5338:24:::4;:::i;:::-;;;;;;;;5398:7;5372:6;:22;;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;5420:19:34::4;::::0;::::4;::::0;::::4;;5416:366;;;5455:94;929:10:12::0;5473:20:34::4;::::0;::::4;::::0;-1:-1:-1;;;;;5473:20:34::4;::::0;5534:4:::4;5541:7:::0;5455:56:::4;:94::i;:::-;5416:366;;;5585:17;::::0;::::4;::::0;::::4;::::0;::::4;;;5580:192;;5698:22;::::0;::::4;::::0;5649:20:::4;::::0;::::4;::::0;-1:-1:-1;;;;;5649:20:34::4;5630:50;929:10:12::0;5630:64:34::4;::::0;-1:-1:-1;;;;;;5630:64:34::4;::::0;;;;;;-1:-1:-1;;;;;3354:32:48;;;5630:64:34::4;::::0;::::4;3336:51:48::0;3309:18;;5630:64:34::4;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:90;;5622:135;;;::::0;-1:-1:-1;;;5622:135:34;;15566:2:48;5622:135:34::4;::::0;::::4;15548:21:48::0;;;15585:18;;;15578:30;15644:34;15624:18;;;15617:62;15696:18;;5622:135:34::4;15364:356:48::0;5622:135:34::4;5809:9;5797:31;5820:7;5797:31;;;;11670:25:48::0;;11658:2;11643:18;;11524:177;5797:31:34::4;;;;;;;;-1:-1:-1::0;;1772:1:2::3;2872:22:::0;;-1:-1:-1;;;;5131:704:34:o;10713:125::-;10778:13;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10778:13:34;-1:-1:-1;10810:21:34;;;;:10;:21;;;;;;;;;10803:28;;;;;;;;;-1:-1:-1;;;;;10803:28:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10713:125::o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;15927:2:48;2401:73:0::1;::::0;::::1;15909:21:48::0;15966:2;15946:18;;;15939:30;16005:34;15985:18;;;15978:62;-1:-1:-1;;;16056:18:48;;;16049:36;16102:19;;2401:73:0::1;15725:402:48::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;10024:563:34:-:0;10127:4;10187:21;;;:10;:21;;;;;:27;;;;10147:37;;;;;:67;;:123;;-1:-1:-1;10268:1:34;10219:22;;;:11;:22;;;;;;;;-1:-1:-1;;;;;10219:32:34;;;;;;;;;:46;;;:50;;10147:123;10143:141;;;-1:-1:-1;10279:5:34;10272:12;;10143:141;10299:21;;;;:10;:21;;;;;:37;;;;;;;;10295:174;;;10424:21;;;;:10;:21;;;;;;;;:34;;;10377:11;:22;;;;;-1:-1:-1;;;;;10377:32:34;;;;;;;;;;:44;:81;;10424:34;10377:81;:::i;:::-;10359:14;:99;;10352:106;;;;10295:174;10485:21;;;;:10;:21;;;;;:34;;;:39;;:95;;-1:-1:-1;10546:21:34;;;;:10;:21;;;;;:34;;;10528:52;;;10485:95;10478:102;;10024:563;;;;;;:::o;818:216:5:-;968:58;;-1:-1:-1;;;;;16324:32:48;;968:58:5;;;16306:51:48;16373:18;;;16366:34;;;941:86:5;;961:5;;-1:-1:-1;;;991:23:5;16279:18:48;;968:58:5;;;;-1:-1:-1;;968:58:5;;;;;;;;;;;;;;-1:-1:-1;;;;;968:58:5;-1:-1:-1;;;;;;968:58:5;;;;;;;;;;941:19;:86::i;:::-;818:216;;;:::o;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;16613:2:48;1654:68:0;;;16595:21:48;;;16632:18;;;16625:30;16691:34;16671:18;;;16664:62;16743:18;;1654:68:0;16411:356:48;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;1003:95::-;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1065:26:0::1;:24;:26::i;1853:111:2:-:0;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1923:34:2::1;:32;:34::i;11667:193:34:-:0;11718:17;11759:14;11771:1;11759:11;:14::i;:::-;11791:21;;;;:10;:21;;;;;:33;;;11747:26;;-1:-1:-1;11791:38:34;11783:70;;;;-1:-1:-1;;;11783:70:34;;17386:2:48;11783:70:34;;;17368:21:48;17425:2;17405:18;;;17398:30;-1:-1:-1;;;17444:18:48;;;17437:49;17503:18;;11783:70:34;17184:343:48;11783:70:34;11667:193;:::o;1366:274:14:-;1453:4;1560:23;1575:7;1560:14;:23::i;:::-;:73;;;;;1587:46;1612:7;1621:11;1587:24;:46::i;1040:252:5:-;1216:68;;-1:-1:-1;;;;;9633:15:48;;;1216:68:5;;;9615:34:48;9685:15;;9665:18;;;9658:43;9717:18;;;9710:34;;;1189:96:5;;1209:5;;-1:-1:-1;;;1239:27:5;9550:18:48;;1216:68:5;9375:375:48;1189:96:5;1040:252;;;;:::o;3868:717::-;4298:23;4324:69;4352:4;4324:69;;;;;;;;;;;;;;;;;4332:5;-1:-1:-1;;;;;4324:27:5;;;:69;;;;;:::i;:::-;4407:17;;4298:95;;-1:-1:-1;4407:21:5;4403:176;;4502:10;4491:30;;;;;;;;;;;;:::i;:::-;4483:85;;;;-1:-1:-1;;;4483:85:5;;17984:2:48;4483:85:5;;;17966:21:48;18023:2;18003:18;;;17996:30;18062:34;18042:18;;;18035:62;-1:-1:-1;;;18113:18:48;;;18106:40;18163:19;;4483:85:5;17782:406:48;1104:111:0;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1176:32:0::1;929:10:12::0;1176:18:0::1;:32::i;1970:109:2:-:0;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1772:1:2::1;2050:22:::0;;1970:109::o;11385:170:34:-;11444:7;929:10:12;11521:16:34;11536:1;11521:12;:16;:::i;:::-;11480:67;;18398:2:48;18394:15;;;;-1:-1:-1;;18390:53:48;11480:67:34;;;18378:66:48;11511:27:34;18460:12:48;;;18453:28;18497:12;;;18490:28;;;18534:12;;11480:67:34;;;;;;;;;;;;11470:78;;;;;;11463:85;;11385:170;;;:::o;726:422:14:-;790:4;997:71;1022:7;-1:-1:-1;;;997:24:14;:71::i;:::-;:144;;;;-1:-1:-1;1085:56:14;1110:7;-1:-1:-1;;;;;;1085:24:14;:56::i;:::-;1084:57;978:163;726:422;-1:-1:-1;;726:422:14:o;4256:649::-;4418:82;;;-1:-1:-1;;;;;;18719:33:48;;4418:82:14;;;;18701:52:48;;;;4418:82:14;;;;;;;;;;18674:18:48;;;;4418:82:14;;;;;;;;;-1:-1:-1;;;;;4418:82:14;-1:-1:-1;;;4418:82:14;;;4708:20;;4349:4;;4418:82;4349:4;;;;;;4418:82;4349:4;;4708:20;4673:7;4666:5;4655:86;4644:97;;4768:16;4754:30;;4818:4;4812:11;4797:26;;4850:7;:29;;;;;4875:4;4861:10;:18;;4850:29;:48;;;;;4897:1;4883:11;:15;4850:48;4843:55;4256:649;-1:-1:-1;;;;;;;4256:649:14:o;3872:223:11:-;4005:12;4036:52;4058:6;4066:4;4072:1;4075:12;4005;-1:-1:-1;;;;;1476:19:11;;;5239:60;;;;-1:-1:-1;;;5239:60:11;;19373:2:48;5239:60:11;;;19355:21:48;19412:2;19392:18;;;19385:30;19451:31;19431:18;;;19424:59;19500:18;;5239:60:11;19171:353:48;5239:60:11;5311:12;5325:23;5352:6;-1:-1:-1;;;;;5352:11:11;5371:5;5378:4;5352:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5310:73;;;;5400:51;5417:7;5426:10;5438:12;6768;6796:7;6792:566;;;-1:-1:-1;6826:10:11;6819:17;;6792:566;6937:17;;:21;6933:415;;7181:10;7175:17;7241:15;7228:10;7224:2;7220:19;7213:44;6933:415;7320:12;7313:20;;-1:-1:-1;;;7313:20:11;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:48;82:20;;-1:-1:-1;;;;;131:31:48;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:254::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;373:9;360:23;350:33;;402:38;436:2;425:9;421:18;402:38;:::i;:::-;392:48;;192:254;;;;;:::o;451:908::-;593:4;622:2;651;640:9;633:21;692:3;681:9;677:19;738:6;732:13;727:2;716:9;712:18;705:41;800:2;792:6;788:15;782:22;777:2;766:9;762:18;755:50;859:2;851:6;847:15;841:22;836:2;825:9;821:18;814:50;911:2;903:6;899:15;893:22;953:4;946;935:9;931:20;924:34;978:6;1013:12;1007:19;1050:6;1042;1035:22;1088:3;1077:9;1073:19;1066:26;;1133:2;1119:12;1115:21;1101:35;;1154:1;1145:10;;1164:169;1178:6;1175:1;1172:13;1164:169;;;1239:13;;1227:26;;1308:15;;;;1200:1;1193:9;;;;;1273:12;;;;1164:169;;;-1:-1:-1;1350:3:48;451:908;-1:-1:-1;;;;;;451:908:48:o;1364:127::-;1425:10;1420:3;1416:20;1413:1;1406:31;1456:4;1453:1;1446:15;1480:4;1477:1;1470:15;1496:1395;1616:6;1624;1632;1640;1648;1701:3;1689:9;1680:7;1676:23;1672:33;1669:53;;;1718:1;1715;1708:12;1669:53;1754:9;1741:23;1731:33;;1783:2;1804:38;1838:2;1827:9;1823:18;1804:38;:::i;:::-;1794:48;;1889:2;1878:9;1874:18;1861:32;1851:42;;1940:2;1929:9;1925:18;1912:32;1902:42;;1995:3;1984:9;1980:19;1967:33;2019:18;2060:2;2052:6;2049:14;2046:34;;;2076:1;2073;2066:12;2046:34;2114:6;2103:9;2099:22;2089:32;;2159:7;2152:4;2148:2;2144:13;2140:27;2130:55;;2181:1;2178;2171:12;2130:55;2217:2;2204:16;2239:2;2235;2232:10;2229:36;;;2245:18;;:::i;:::-;2291:2;2288:1;2284:10;2323:2;2317:9;2386:2;2382:7;2377:2;2373;2369:11;2365:25;2357:6;2353:38;2441:6;2429:10;2426:22;2421:2;2409:10;2406:18;2403:46;2400:72;;;2452:18;;:::i;:::-;2488:2;2481:22;2538:18;;;2572:15;;;;-1:-1:-1;2614:11:48;;;2610:20;;;2642:19;;;2639:39;;;2674:1;2671;2664:12;2639:39;2698:11;;;;2718:142;2734:6;2729:3;2726:15;2718:142;;;2800:17;;2788:30;;2751:12;;;;2838;;;;2718:142;;;2879:6;2869:16;;;;;;;;1496:1395;;;;;;;;:::o;2896:180::-;2955:6;3008:2;2996:9;2987:7;2983:23;2979:32;2976:52;;;3024:1;3021;3014:12;2976:52;-1:-1:-1;3047:23:48;;2896:180;-1:-1:-1;2896:180:48:o;3398:118::-;3484:5;3477:13;3470:21;3463:5;3460:32;3450:60;;3506:1;3503;3496:12;3521:726;3628:6;3636;3644;3652;3660;3668;3676;3729:3;3717:9;3708:7;3704:23;3700:33;3697:53;;;3746:1;3743;3736:12;3697:53;3769:29;3788:9;3769:29;:::i;:::-;3759:39;;3845:2;3834:9;3830:18;3817:32;3807:42;;3896:2;3885:9;3881:18;3868:32;3858:42;;3947:2;3936:9;3932:18;3919:32;3909:42;;3998:3;3987:9;3983:19;3970:33;3960:43;;4053:3;4042:9;4038:19;4025:33;4067:28;4089:5;4067:28;:::i;:::-;4114:5;-1:-1:-1;4171:3:48;4156:19;;4143:33;4185:30;4143:33;4185:30;:::i;:::-;4234:7;4224:17;;;3521:726;;;;;;;;;;:::o;4252:248::-;4320:6;4328;4381:2;4369:9;4360:7;4356:23;4352:32;4349:52;;;4397:1;4394;4387:12;4349:52;-1:-1:-1;;4420:23:48;;;4490:2;4475:18;;;4462:32;;-1:-1:-1;4252:248:48:o;4601:1237::-;4815:13;;-1:-1:-1;;;;;3147:31:48;3135:44;;4783:3;4768:19;;4887:4;4879:6;4875:17;4869:24;4902:54;4950:4;4939:9;4935:20;4921:12;-1:-1:-1;;;;;3147:31:48;3135:44;;3081:104;4902:54;;5012:4;5004:6;5000:17;4994:24;4987:4;4976:9;4972:20;4965:54;5075:4;5067:6;5063:17;5057:24;5050:4;5039:9;5035:20;5028:54;5138:4;5130:6;5126:17;5120:24;5113:4;5102:9;5098:20;5091:54;5201:4;5193:6;5189:17;5183:24;5176:4;5165:9;5161:20;5154:54;5264:4;5256:6;5252:17;5246:24;5239:4;5228:9;5224:20;5217:54;5327:4;5319:6;5315:17;5309:24;5302:4;5291:9;5287:20;5280:54;5353:6;5413:2;5405:6;5401:15;5395:22;5390:2;5379:9;5375:18;5368:50;;5437:6;5492:2;5484:6;5480:15;5474:22;5505:51;5552:2;5541:9;5537:18;5521:14;4575:13;4568:21;4556:34;;4505:91;5505:51;-1:-1:-1;;5575:6:48;5618:15;;;5612:22;4575:13;4568:21;5675:18;;;4556:34;5713:6;5756:15;;;5750:22;4575:13;4568:21;5813:18;;;;4556:34;;;;4601:1237;:::o;5843:186::-;5902:6;5955:2;5943:9;5934:7;5930:23;5926:32;5923:52;;;5971:1;5968;5961:12;5923:52;5994:29;6013:9;5994:29;:::i;6034:322::-;6111:6;6119;6127;6180:2;6168:9;6159:7;6155:23;6151:32;6148:52;;;6196:1;6193;6186:12;6148:52;6232:9;6219:23;6209:33;;6261:38;6295:2;6284:9;6280:18;6261:38;:::i;:::-;6251:48;;6346:2;6335:9;6331:18;6318:32;6308:42;;6034:322;;;;;:::o;6553:352::-;6755:2;6737:21;;;6794:2;6774:18;;;6767:30;6833;6828:2;6813:18;;6806:58;6896:2;6881:18;;6553:352::o;6910:347::-;7112:2;7094:21;;;7151:2;7131:18;;;7124:30;7190:25;7185:2;7170:18;;7163:53;7248:2;7233:18;;6910:347::o;8305:127::-;8366:10;8361:3;8357:20;8354:1;8347:31;8397:4;8394:1;8387:15;8421:4;8418:1;8411:15;8437:128;8504:9;;;8525:11;;;8522:37;;;8539:18;;:::i;8570:135::-;8609:3;8630:17;;;8627:43;;8650:18;;:::i;:::-;-1:-1:-1;8697:1:48;8686:13;;8570:135::o;8710:184::-;8780:6;8833:2;8821:9;8812:7;8808:23;8804:32;8801:52;;;8849:1;8846;8839:12;8801:52;-1:-1:-1;8872:16:48;;8710:184;-1:-1:-1;8710:184:48:o;9243:127::-;9304:10;9299:3;9295:20;9292:1;9285:31;9335:4;9332:1;9325:15;9359:4;9356:1;9349:15;9755:726;9922:4;9970:2;9959:9;9955:18;10000:6;9989:9;9982:25;10026:2;10064;10059;10048:9;10044:18;10037:30;10087:6;10122;10116:13;10153:6;10145;10138:22;10191:2;10180:9;10176:18;10169:25;;10213:6;10210:1;10203:17;10256:2;10253:1;10243:16;10229:30;;10277:1;10287:168;10301:6;10298:1;10295:13;10287:168;;;10362:13;;10350:26;;10443:1;10431:14;;;;10396:12;;;;10316:9;10287:168;;;-1:-1:-1;10472:3:48;;9755:726;-1:-1:-1;;;;;;;9755:726:48:o;12320:335::-;12522:2;12504:21;;;12561:2;12541:18;;;12534:30;-1:-1:-1;;;12595:2:48;12580:18;;12573:41;12646:2;12631:18;;12320:335::o;15234:125::-;15299:9;;;15320:10;;;15317:36;;;15333:18;;:::i;16772:407::-;16974:2;16956:21;;;17013:2;16993:18;;;16986:30;17052:34;17047:2;17032:18;;17025:62;-1:-1:-1;;;17118:2:48;17103:18;;17096:41;17169:3;17154:19;;16772:407::o;17532:245::-;17599:6;17652:2;17640:9;17631:7;17627:23;17623:32;17620:52;;;17668:1;17665;17658:12;17620:52;17700:9;17694:16;17719:28;17741:5;17719:28;:::i;19529:250::-;19614:1;19624:113;19638:6;19635:1;19632:13;19624:113;;;19714:11;;;19708:18;19695:11;;;19688:39;19660:2;19653:10;19624:113;;;-1:-1:-1;;19771:1:48;19753:16;;19746:27;19529:250::o;19784:287::-;19913:3;19951:6;19945:13;19967:66;20026:6;20021:3;20014:4;20006:6;20002:17;19967:66;:::i;:::-;20049:16;;;;;19784:287;-1:-1:-1;;19784:287:48:o;20076:396::-;20225:2;20214:9;20207:21;20188:4;20257:6;20251:13;20300:6;20295:2;20284:9;20280:18;20273:34;20316:79;20388:6;20383:2;20372:9;20368:18;20363:2;20355:6;20351:15;20316:79;:::i;:::-;20456:2;20435:15;-1:-1:-1;;20431:29:48;20416:45;;;;20463:2;20412:54;;20076:396;-1:-1:-1;;20076:396:48:o", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"}],\"name\":\"AddedBudget\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"learner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rewardAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"nftIds\",\"type\":\"uint256[]\"}],\"name\":\"ClaimedReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"learner\",\"type\":\"address\"}],\"name\":\"CompletedCourse\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timeStarted\",\"type\":\"uint256\"}],\"name\":\"CreatedCourse\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"RemovedCourse\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawnBudget\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_budget\",\"type\":\"uint256\"}],\"name\":\"addBudget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_learner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_timeCompleted\",\"type\":\"uint256\"}],\"name\":\"canGetBonus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_learner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_timeStarted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeCompleted\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_nftIds\",\"type\":\"uint256[]\"}],\"name\":\"completeCourse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rewardAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeEndBonus\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isUsingDuration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_isBonusToken\",\"type\":\"bool\"}],\"name\":\"createCourse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"}],\"name\":\"getCourseData\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rewardAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetAvailable\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalLearnersClaimedBonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeCreated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeEndBonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeRemoved\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isBonusToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"canMintNFT\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isUsingDuration\",\"type\":\"bool\"}],\"internalType\":\"structCourse\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_learner\",\"type\":\"address\"}],\"name\":\"getLearnerData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"timeStarted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeCompleted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeRewarded\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"nftIds\",\"type\":\"uint256[]\"}],\"internalType\":\"structLearner\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"}],\"name\":\"removeCourse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"}],\"name\":\"withdrawBudget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50612158806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80639d84bf91116100715780639d84bf9114610135578063b149fd1814610148578063caca4ad31461015b578063db631a891461016e578063f2fde38b1461018e578063fda626ce146101a157600080fd5b80632cca6f2d146100b95780633c41b482146100e2578063669e88a1146100f7578063715018a61461010a5780638129fc1c146101125780638da5cb5b1461011a575b600080fd5b6100cc6100c7366004611b88565b6101c4565b6040516100d99190611bb4565b60405180910390f35b6100f56100f0366004611c3a565b610291565b005b6100f5610105366004611d28565b61071b565b6100f5610904565b6100f5610918565b6065546040516001600160a01b0390911681526020016100d9565b6100f5610143366004611d28565b610a31565b6100f5610156366004611d4f565b610b31565b6100f5610169366004611dbf565b61107f565b61018161017c366004611d28565b6112f5565b6040516100d99190611de1565b6100f561019c366004611e8d565b61142a565b6101b46101af366004611ea8565b6114a0565b60405190151581526020016100d9565b6101ef6040518060800160405280600081526020016000815260200160008152602001606081525090565b60008381526098602090815260408083206001600160a01b0386168452825291829020825160808101845281548152600182015481840152600282015481850152600382018054855181860281018601909652808652919492936060860193929083018282801561027f57602002820191906000526020600020905b81548152602001906001019080831161026b575b50505050508152505090505b92915050565b60008581526097602052604090205485906001600160a01b031633146102d25760405162461bcd60e51b81526004016102c990611edd565b60405180910390fd5b6000868152609760205260409020600801548690156103035760405162461bcd60e51b81526004016102c990611f14565b60008781526097602052604090206006810154861080159061032457504286105b6103655760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a5b59481cdd185c9d60721b60448201526064016102c9565b8585116103ac5760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642074696d6520636f6d706c65746560581b60448201526064016102c9565b60008881526098602090815260408083206001600160a01b038b16845290915290206001810154156104145760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb5c1b195d1959607a1b60448201526064016102c9565b86815560006104248a8a896114a0565b60018301889055905080156106d157826004015483600301600082825461044b9190611f61565b909155505060058301805490600061046283611f74565b9091555050426002830155600983015460ff16156104a0576004830154600184015461049b916001600160a01b03909116908b90611592565b61067a565b6009830154610100900460ff16156105645760005b836004015481101561055e5760018401546040516335313c2160e11b81526001600160a01b038c8116600483015260038601921690636a627842906024016020604051808303816000875af1158015610512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105369190611f8d565b815460018101835560009283526020909220909101558061055681611f74565b9150506104b5565b5061067a565b82600401548651146105aa5760405162461bcd60e51b815260206004820152600f60248201526e4e6f7420656e6f756768204e46547360881b60448201526064016102c9565b85516105bf9060038401906020890190611b0c565b5060005b86518110156106785760018401546001600160a01b03166342842e0e338c8a85815181106105f3576105f3611fa6565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561064d57600080fd5b505af1158015610661573d6000803e3d6000fd5b50505050808061067090611f74565b9150506105c3565b505b600183015460048401546040516001600160a01b03928316928c16918d917fd7168ab8576ce4d8336598fe8c588ccb843823a522fe33c98365c3e082daa2ca916106c8916003890190611fbc565b60405180910390a45b6040516001600160a01b038a1681528a907fb14f5aab91d7f1973be0a7f66b9f50b5da882aaf454b27c50d6a9d7b2172616c9060200160405180910390a250505050505050505050565b60008181526097602052604090205481906001600160a01b031633146107535760405162461bcd60e51b81526004016102c990611edd565b6000828152609760205260409020600801548290156107845760405162461bcd60e51b81526004016102c990611f14565b6000838152609760205260409020600981015460ff166107d75760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21030b1ba34b7b760911b60448201526064016102c9565b600081600301541161081b5760405162461bcd60e51b815260206004820152600d60248201526c13dd5d081bd988189d5919d95d609a1b60448201526064016102c9565b600981015462010000900460ff168061084557506007810154158015906108455750806007015442115b6108915760405162461bcd60e51b815260206004820152601860248201527f54696d6520626f6e757320686173206e6f7420656e646564000000000000000060448201526064016102c9565b6003810180546000909155815460018301546108ba916001600160a01b03918216911683611592565b81546040518281526001600160a01b039091169086907faa558890c86253324a06b9e861f61281fd0810f170827987572e7123581a779f9060200160405180910390a35050505050565b61090c6115fa565b6109166000611654565b565b600054610100900460ff16158080156109385750600054600160ff909116105b806109525750303b158015610952575060005460ff166001145b6109b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c9565b6000805460ff1916600117905580156109d8576000805461ff0019166101001790555b6109e06116a6565b6109e86116d5565b8015610a2e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008181526097602052604090205481906001600160a01b03163314610a695760405162461bcd60e51b81526004016102c990611edd565b600082815260976020526040902060080154829015610a9a5760405162461bcd60e51b81526004016102c990611f14565b6000838152609760205260408120426008820155600381018054929055600981015490919060ff168015610ace5750600081115b15610af15781546001830154610af1916001600160a01b03918216911683611592565b81546040516001600160a01b039091169086907f10156d1d3e0caa069c8a10325a1dae1512b2ff6bb941c18e16194970746f30a490600090a35050505050565b8560008111610b525760405162461bcd60e51b81526004016102c99061200f565b8560008111610b735760405162461bcd60e51b81526004016102c99061200f565b600260015403610bc55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c9565b60026001556001600160a01b038916610c195760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420726577617264206164647265737360501b60448201526064016102c9565b86881015610c5a5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908189d5919d95d60921b60448201526064016102c9565b8515610caa5742861015610ca55760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a5b59481cdd185c9d60721b60448201526064016102c9565b610cae565b4295505b600084610cc657851580610cc157508686115b610ccb565b600086115b905080610d135760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642074696d6520656e6420626f6e757360501b60448201526064016102c9565b6000610d1d611704565b9050600085610e7457610d406001600160a01b038d1663357c172f60e01b61176b565b905080610e7457610d616001600160a01b038d166380ac58cd60e01b61176b565b610dad5760405162461bcd60e51b815260206004820152601d60248201527f52657761726420636f6e7472616374206973206e6f742045524337323100000060448201526064016102c9565b8a6001600160a01b038d166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e269190611f8d565b1015610e745760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742063726561746f7227732062616c616e6365000060448201526064016102c9565b604051806101800160405280610e873390565b6001600160a01b031681526020018d6001600160a01b031681526020018c81526020018c81526020018b8152602001600081526020018a815260200189815260200160008152602001871515815260200182151581526020018815158152506097600084815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015561010082015181600801556101208201518160090160006101000a81548160ff0219169083151502179055506101408201518160090160016101000a81548160ff0219169083151502179055506101608201518160090160026101000a81548160ff021916908315150217905550905050851561101b5761101b6001600160a01b038d1633308e611787565b604080513381526001600160a01b038e1660208201529081018b9052606081018a905282907fef048bc89a4d92f598f18e11c600d5cc675b387c770c6c49012d166043db64a29060800160405180910390a250506001805550505050505050505050565b60008281526097602052604090205482906001600160a01b031633146110b75760405162461bcd60e51b81526004016102c990611edd565b81600081116110d85760405162461bcd60e51b81526004016102c99061200f565b6000848152609760205260409020600801548490156111095760405162461bcd60e51b81526004016102c990611f14565b60026001540361115b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c9565b6002600181905560008681526097602052604081209182018054879290611183908490612034565b925050819055508481600301600082825461119e9190612034565b9091555050600981015460ff16156111cf576111ca3360018301546001600160a01b0316903088611787565b6112af565b6009810154610100900460ff166112af57600381015460018201546001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190611f8d565b10156112af5760405162461bcd60e51b815260206004820181905260248201527f42616c616e6365206f662063726561746f72206973206e6f7420656e6f75676860448201526064016102c9565b857f5cd42cadabfcfe861e1f12322ae257de37d1240ae38863b4c8b0b50fd0e32a26866040516112e191815260200190565b60405180910390a250506001805550505050565b61137160405180610180016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581526020016000151581525090565b5060009081526097602090815260409182902082516101808101845281546001600160a01b039081168252600183015416928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008083019190915260099092015460ff808216151561012084015292810483161515610140830152620100009004909116151561016082015290565b6114326115fa565b6001600160a01b0381166114975760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102c9565b610a2e81611654565b6000838152609760205260408120600481015460039091015410806114e9575060008481526098602090815260408083206001600160a01b038716845290915290206001015415155b156114f65750600061158b565b60008481526097602052604090206009015462010000900460ff161561155957600084815260976020908152604080832060070154609883528184206001600160a01b03881685529092529091205461154f9190612034565b821115905061158b565b600084815260976020526040902060070154158061158857506000848152609760205260409020600701548211155b90505b9392505050565b6040516001600160a01b0383166024820152604481018290526115f590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526117c5565b505050565b6065546001600160a01b031633146109165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c9565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166116cd5760405162461bcd60e51b81526004016102c990612047565b610916611897565b600054610100900460ff166116fc5760405162461bcd60e51b81526004016102c990612047565b6109166118c7565b600061171060006118f4565b600081815260976020526040902060060154909150156117685760405162461bcd60e51b8152602060048201526013602482015272191d5c1b1a58d85d194818dbdd5c9cd9481a59606a1b60448201526064016102c9565b90565b60006117768361194c565b801561158b575061158b838361197f565b6040516001600160a01b03808516602483015283166044820152606481018290526117bf9085906323b872dd60e01b906084016115be565b50505050565b600061181a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a089092919063ffffffff16565b8051909150156115f557808060200190518101906118389190612092565b6115f55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102c9565b600054610100900460ff166118be5760405162461bcd60e51b81526004016102c990612047565b61091633611654565b600054610100900460ff166118ee5760405162461bcd60e51b81526004016102c990612047565b60018055565b600033611902600143611f61565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b600061195f826301ffc9a760e01b61197f565b801561028b5750611978826001600160e01b031961197f565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156119f1575060208210155b80156119fd5750600081115b979650505050505050565b60606115888484600085856001600160a01b0385163b611a6a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102c9565b600080866001600160a01b03168587604051611a8691906120d3565b60006040518083038185875af1925050503d8060008114611ac3576040519150601f19603f3d011682016040523d82523d6000602084013e611ac8565b606091505b50915091506119fd82828660608315611ae257508161158b565b825115611af25782518084602001fd5b8160405162461bcd60e51b81526004016102c991906120ef565b828054828255906000526020600020908101928215611b47579160200282015b82811115611b47578251825591602001919060010190611b2c565b50611b53929150611b57565b5090565b5b80821115611b535760008155600101611b58565b80356001600160a01b0381168114611b8357600080fd5b919050565b60008060408385031215611b9b57600080fd5b82359150611bab60208401611b6c565b90509250929050565b6000602080835260a0830184518285015281850151604085015260408501516060850152606085015160808086015281815180845260c0870191508483019350600092505b80831015611c195783518252928401926001929092019190840190611bf9565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a08688031215611c5257600080fd5b853594506020611c63818801611b6c565b94506040870135935060608701359250608087013567ffffffffffffffff80821115611c8e57600080fd5b818901915089601f830112611ca257600080fd5b813581811115611cb457611cb4611c24565b8060051b604051601f19603f83011681018181108582111715611cd957611cd9611c24565b60405291825284820192508381018501918c831115611cf757600080fd5b938501935b82851015611d1557843584529385019392850192611cfc565b8096505050505050509295509295909350565b600060208284031215611d3a57600080fd5b5035919050565b8015158114610a2e57600080fd5b600080600080600080600060e0888a031215611d6a57600080fd5b611d7388611b6c565b96506020880135955060408801359450606088013593506080880135925060a0880135611d9f81611d41565b915060c0880135611daf81611d41565b8091505092959891949750929550565b60008060408385031215611dd257600080fd5b50508035926020909101359150565b81516001600160a01b0316815261018081016020830151611e0d60208401826001600160a01b03169052565b5060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611e6a8285018215159052565b505061014083810151151590830152610160928301511515929091019190915290565b600060208284031215611e9f57600080fd5b61158b82611b6c565b600080600060608486031215611ebd57600080fd5b83359250611ecd60208501611b6c565b9150604084013590509250925092565b6020808252601c908201527f63616c6c6572206973206e6f7420636f757273652063726561746f7200000000604082015260600190565b60208082526017908201527f436f7572736520686173206265656e2072656d6f766564000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561028b5761028b611f4b565b600060018201611f8657611f86611f4b565b5060010190565b600060208284031215611f9f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006040820184835260206040818501528185548084526060860191508660005282600020935060005b8181101561200257845483526001948501949284019201611fe6565b5090979650505050505050565b6020808252600b908201526a16995c9bc8185b5bdd5b9d60aa1b604082015260600190565b8082018082111561028b5761028b611f4b565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156120a457600080fd5b815161158b81611d41565b60005b838110156120ca5781810151838201526020016120b2565b50506000910152565b600082516120e58184602087016120af565b9190910192915050565b602081526000825180602084015261210e8160408501602087016120af565b601f01601f1916919091016040019291505056fea2646970667358221220ffde32c539f0c2ca37deb0a615513f93666574250ea78d2595bdfe329536b1c264736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100b45760003560e01c80639d84bf91116100715780639d84bf9114610135578063b149fd1814610148578063caca4ad31461015b578063db631a891461016e578063f2fde38b1461018e578063fda626ce146101a157600080fd5b80632cca6f2d146100b95780633c41b482146100e2578063669e88a1146100f7578063715018a61461010a5780638129fc1c146101125780638da5cb5b1461011a575b600080fd5b6100cc6100c7366004611b88565b6101c4565b6040516100d99190611bb4565b60405180910390f35b6100f56100f0366004611c3a565b610291565b005b6100f5610105366004611d28565b61071b565b6100f5610904565b6100f5610918565b6065546040516001600160a01b0390911681526020016100d9565b6100f5610143366004611d28565b610a31565b6100f5610156366004611d4f565b610b31565b6100f5610169366004611dbf565b61107f565b61018161017c366004611d28565b6112f5565b6040516100d99190611de1565b6100f561019c366004611e8d565b61142a565b6101b46101af366004611ea8565b6114a0565b60405190151581526020016100d9565b6101ef6040518060800160405280600081526020016000815260200160008152602001606081525090565b60008381526098602090815260408083206001600160a01b0386168452825291829020825160808101845281548152600182015481840152600282015481850152600382018054855181860281018601909652808652919492936060860193929083018282801561027f57602002820191906000526020600020905b81548152602001906001019080831161026b575b50505050508152505090505b92915050565b60008581526097602052604090205485906001600160a01b031633146102d25760405162461bcd60e51b81526004016102c990611edd565b60405180910390fd5b6000868152609760205260409020600801548690156103035760405162461bcd60e51b81526004016102c990611f14565b60008781526097602052604090206006810154861080159061032457504286105b6103655760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a5b59481cdd185c9d60721b60448201526064016102c9565b8585116103ac5760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642074696d6520636f6d706c65746560581b60448201526064016102c9565b60008881526098602090815260408083206001600160a01b038b16845290915290206001810154156104145760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb5c1b195d1959607a1b60448201526064016102c9565b86815560006104248a8a896114a0565b60018301889055905080156106d157826004015483600301600082825461044b9190611f61565b909155505060058301805490600061046283611f74565b9091555050426002830155600983015460ff16156104a0576004830154600184015461049b916001600160a01b03909116908b90611592565b61067a565b6009830154610100900460ff16156105645760005b836004015481101561055e5760018401546040516335313c2160e11b81526001600160a01b038c8116600483015260038601921690636a627842906024016020604051808303816000875af1158015610512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105369190611f8d565b815460018101835560009283526020909220909101558061055681611f74565b9150506104b5565b5061067a565b82600401548651146105aa5760405162461bcd60e51b815260206004820152600f60248201526e4e6f7420656e6f756768204e46547360881b60448201526064016102c9565b85516105bf9060038401906020890190611b0c565b5060005b86518110156106785760018401546001600160a01b03166342842e0e338c8a85815181106105f3576105f3611fa6565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561064d57600080fd5b505af1158015610661573d6000803e3d6000fd5b50505050808061067090611f74565b9150506105c3565b505b600183015460048401546040516001600160a01b03928316928c16918d917fd7168ab8576ce4d8336598fe8c588ccb843823a522fe33c98365c3e082daa2ca916106c8916003890190611fbc565b60405180910390a45b6040516001600160a01b038a1681528a907fb14f5aab91d7f1973be0a7f66b9f50b5da882aaf454b27c50d6a9d7b2172616c9060200160405180910390a250505050505050505050565b60008181526097602052604090205481906001600160a01b031633146107535760405162461bcd60e51b81526004016102c990611edd565b6000828152609760205260409020600801548290156107845760405162461bcd60e51b81526004016102c990611f14565b6000838152609760205260409020600981015460ff166107d75760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21030b1ba34b7b760911b60448201526064016102c9565b600081600301541161081b5760405162461bcd60e51b815260206004820152600d60248201526c13dd5d081bd988189d5919d95d609a1b60448201526064016102c9565b600981015462010000900460ff168061084557506007810154158015906108455750806007015442115b6108915760405162461bcd60e51b815260206004820152601860248201527f54696d6520626f6e757320686173206e6f7420656e646564000000000000000060448201526064016102c9565b6003810180546000909155815460018301546108ba916001600160a01b03918216911683611592565b81546040518281526001600160a01b039091169086907faa558890c86253324a06b9e861f61281fd0810f170827987572e7123581a779f9060200160405180910390a35050505050565b61090c6115fa565b6109166000611654565b565b600054610100900460ff16158080156109385750600054600160ff909116105b806109525750303b158015610952575060005460ff166001145b6109b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c9565b6000805460ff1916600117905580156109d8576000805461ff0019166101001790555b6109e06116a6565b6109e86116d5565b8015610a2e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008181526097602052604090205481906001600160a01b03163314610a695760405162461bcd60e51b81526004016102c990611edd565b600082815260976020526040902060080154829015610a9a5760405162461bcd60e51b81526004016102c990611f14565b6000838152609760205260408120426008820155600381018054929055600981015490919060ff168015610ace5750600081115b15610af15781546001830154610af1916001600160a01b03918216911683611592565b81546040516001600160a01b039091169086907f10156d1d3e0caa069c8a10325a1dae1512b2ff6bb941c18e16194970746f30a490600090a35050505050565b8560008111610b525760405162461bcd60e51b81526004016102c99061200f565b8560008111610b735760405162461bcd60e51b81526004016102c99061200f565b600260015403610bc55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c9565b60026001556001600160a01b038916610c195760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420726577617264206164647265737360501b60448201526064016102c9565b86881015610c5a5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908189d5919d95d60921b60448201526064016102c9565b8515610caa5742861015610ca55760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a5b59481cdd185c9d60721b60448201526064016102c9565b610cae565b4295505b600084610cc657851580610cc157508686115b610ccb565b600086115b905080610d135760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642074696d6520656e6420626f6e757360501b60448201526064016102c9565b6000610d1d611704565b9050600085610e7457610d406001600160a01b038d1663357c172f60e01b61176b565b905080610e7457610d616001600160a01b038d166380ac58cd60e01b61176b565b610dad5760405162461bcd60e51b815260206004820152601d60248201527f52657761726420636f6e7472616374206973206e6f742045524337323100000060448201526064016102c9565b8a6001600160a01b038d166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e269190611f8d565b1015610e745760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742063726561746f7227732062616c616e6365000060448201526064016102c9565b604051806101800160405280610e873390565b6001600160a01b031681526020018d6001600160a01b031681526020018c81526020018c81526020018b8152602001600081526020018a815260200189815260200160008152602001871515815260200182151581526020018815158152506097600084815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015561010082015181600801556101208201518160090160006101000a81548160ff0219169083151502179055506101408201518160090160016101000a81548160ff0219169083151502179055506101608201518160090160026101000a81548160ff021916908315150217905550905050851561101b5761101b6001600160a01b038d1633308e611787565b604080513381526001600160a01b038e1660208201529081018b9052606081018a905282907fef048bc89a4d92f598f18e11c600d5cc675b387c770c6c49012d166043db64a29060800160405180910390a250506001805550505050505050505050565b60008281526097602052604090205482906001600160a01b031633146110b75760405162461bcd60e51b81526004016102c990611edd565b81600081116110d85760405162461bcd60e51b81526004016102c99061200f565b6000848152609760205260409020600801548490156111095760405162461bcd60e51b81526004016102c990611f14565b60026001540361115b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c9565b6002600181905560008681526097602052604081209182018054879290611183908490612034565b925050819055508481600301600082825461119e9190612034565b9091555050600981015460ff16156111cf576111ca3360018301546001600160a01b0316903088611787565b6112af565b6009810154610100900460ff166112af57600381015460018201546001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190611f8d565b10156112af5760405162461bcd60e51b815260206004820181905260248201527f42616c616e6365206f662063726561746f72206973206e6f7420656e6f75676860448201526064016102c9565b857f5cd42cadabfcfe861e1f12322ae257de37d1240ae38863b4c8b0b50fd0e32a26866040516112e191815260200190565b60405180910390a250506001805550505050565b61137160405180610180016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581526020016000151581525090565b5060009081526097602090815260409182902082516101808101845281546001600160a01b039081168252600183015416928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008083019190915260099092015460ff808216151561012084015292810483161515610140830152620100009004909116151561016082015290565b6114326115fa565b6001600160a01b0381166114975760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102c9565b610a2e81611654565b6000838152609760205260408120600481015460039091015410806114e9575060008481526098602090815260408083206001600160a01b038716845290915290206001015415155b156114f65750600061158b565b60008481526097602052604090206009015462010000900460ff161561155957600084815260976020908152604080832060070154609883528184206001600160a01b03881685529092529091205461154f9190612034565b821115905061158b565b600084815260976020526040902060070154158061158857506000848152609760205260409020600701548211155b90505b9392505050565b6040516001600160a01b0383166024820152604481018290526115f590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526117c5565b505050565b6065546001600160a01b031633146109165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c9565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166116cd5760405162461bcd60e51b81526004016102c990612047565b610916611897565b600054610100900460ff166116fc5760405162461bcd60e51b81526004016102c990612047565b6109166118c7565b600061171060006118f4565b600081815260976020526040902060060154909150156117685760405162461bcd60e51b8152602060048201526013602482015272191d5c1b1a58d85d194818dbdd5c9cd9481a59606a1b60448201526064016102c9565b90565b60006117768361194c565b801561158b575061158b838361197f565b6040516001600160a01b03808516602483015283166044820152606481018290526117bf9085906323b872dd60e01b906084016115be565b50505050565b600061181a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a089092919063ffffffff16565b8051909150156115f557808060200190518101906118389190612092565b6115f55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102c9565b600054610100900460ff166118be5760405162461bcd60e51b81526004016102c990612047565b61091633611654565b600054610100900460ff166118ee5760405162461bcd60e51b81526004016102c990612047565b60018055565b600033611902600143611f61565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b600061195f826301ffc9a760e01b61197f565b801561028b5750611978826001600160e01b031961197f565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156119f1575060208210155b80156119fd5750600081115b979650505050505050565b60606115888484600085856001600160a01b0385163b611a6a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102c9565b600080866001600160a01b03168587604051611a8691906120d3565b60006040518083038185875af1925050503d8060008114611ac3576040519150601f19603f3d011682016040523d82523d6000602084013e611ac8565b606091505b50915091506119fd82828660608315611ae257508161158b565b825115611af25782518084602001fd5b8160405162461bcd60e51b81526004016102c991906120ef565b828054828255906000526020600020908101928215611b47579160200282015b82811115611b47578251825591602001919060010190611b2c565b50611b53929150611b57565b5090565b5b80821115611b535760008155600101611b58565b80356001600160a01b0381168114611b8357600080fd5b919050565b60008060408385031215611b9b57600080fd5b82359150611bab60208401611b6c565b90509250929050565b6000602080835260a0830184518285015281850151604085015260408501516060850152606085015160808086015281815180845260c0870191508483019350600092505b80831015611c195783518252928401926001929092019190840190611bf9565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a08688031215611c5257600080fd5b853594506020611c63818801611b6c565b94506040870135935060608701359250608087013567ffffffffffffffff80821115611c8e57600080fd5b818901915089601f830112611ca257600080fd5b813581811115611cb457611cb4611c24565b8060051b604051601f19603f83011681018181108582111715611cd957611cd9611c24565b60405291825284820192508381018501918c831115611cf757600080fd5b938501935b82851015611d1557843584529385019392850192611cfc565b8096505050505050509295509295909350565b600060208284031215611d3a57600080fd5b5035919050565b8015158114610a2e57600080fd5b600080600080600080600060e0888a031215611d6a57600080fd5b611d7388611b6c565b96506020880135955060408801359450606088013593506080880135925060a0880135611d9f81611d41565b915060c0880135611daf81611d41565b8091505092959891949750929550565b60008060408385031215611dd257600080fd5b50508035926020909101359150565b81516001600160a01b0316815261018081016020830151611e0d60208401826001600160a01b03169052565b5060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611e6a8285018215159052565b505061014083810151151590830152610160928301511515929091019190915290565b600060208284031215611e9f57600080fd5b61158b82611b6c565b600080600060608486031215611ebd57600080fd5b83359250611ecd60208501611b6c565b9150604084013590509250925092565b6020808252601c908201527f63616c6c6572206973206e6f7420636f757273652063726561746f7200000000604082015260600190565b60208082526017908201527f436f7572736520686173206265656e2072656d6f766564000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561028b5761028b611f4b565b600060018201611f8657611f86611f4b565b5060010190565b600060208284031215611f9f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006040820184835260206040818501528185548084526060860191508660005282600020935060005b8181101561200257845483526001948501949284019201611fe6565b5090979650505050505050565b6020808252600b908201526a16995c9bc8185b5bdd5b9d60aa1b604082015260600190565b8082018082111561028b5761028b611f4b565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156120a457600080fd5b815161158b81611d41565b60005b838110156120ca5781810151838201526020016120b2565b50506000910152565b600082516120e58184602087016120af565b9190910192915050565b602081526000825180602084015261210e8160408501602087016120af565b601f01601f1916919091016040019291505056fea2646970667358221220ffde32c539f0c2ca37deb0a615513f93666574250ea78d2595bdfe329536b1c264736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/LearnToEarnTest.sol:LearnToEarnTest": {"srcmap": "161:1668:35:-:0;;;249:159;;;;;;;;;;287:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;273:11:35;:31;;-1:-1:-1;;;;;;273:31:35;-1:-1:-1;;;;;273:31:35;;;;;;;;;314:24;;;-1:-1:-1;;;314:24:35;;;;:22;;:24;;;;;273:11;;314:24;;;;;;273:11;:31;314:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;362:39;;;;;:::i;:::-;317:2:48;299:21;;;356:2;336:18;;;329:30;-1:-1:-1;;;390:2:48;375:18;;368:41;447:3;440:4;425:20;;418:33;;;488:1;467:19;;;460:30;-1:-1:-1;;;521:3:48;506:19;;499:37;568:3;553:19;362:39:35;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;349:10:35;:52;;-1:-1:-1;;;;;;349:52:35;-1:-1:-1;;;;;349:52:35;;;;;;;;;;161:1668;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:564:48:-;161:1668:35;;;;;;", "srcmap-runtime": "161:1668:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;588:1239;;;:::i;:::-;;;666:3;697;726:2;758:15;634:21;806:18;758:15;818:6;806:18;:::i;:::-;834:20;906:11;:204;;-1:-1:-1;;;906:204:35;;-1:-1:-1;;;;;597:32:48;;;906:204:35;;;579:51:48;646:18;;;639:34;;;689:18;;;682:34;;;732:18;;;725:34;;;775:19;;;768:35;;;857:4:35;819:19:48;;;812:51;;;879:19;;;872:51;;;783:41:35;;-1:-1:-1;857:4:35;;906:11;;:24;;551:19:48;;906:204:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1121:16;1140:14;1152:1;1140:11;:14::i;:::-;1225:20;1248:11;;:35;;-1:-1:-1;;;1248:35:35;;;;;1080:25:48;;;1121:33:35;;-1:-1:-1;1225:20:35;;-1:-1:-1;;;;;1248:11:35;;;;:25;;1053:18:48;;1248:35:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1300:14;;1225:58;;-1:-1:-1;;;;;;1300:31:35;1326:4;1300:31;1293:39;;;;:::i;:::-;1373:13;-1:-1:-1;;;;;1349:37:35;:6;:20;;;-1:-1:-1;;;;;1349:37:35;;1342:45;;;;:::i;:::-;1421:10;:6;1430:1;1421:10;:::i;:::-;1404:6;:13;;;:27;1397:35;;;;:::i;:::-;1475:6;1449;:22;;;:32;1442:40;;;;:::i;:::-;1515:5;1499:6;:12;;;:21;1492:29;;;;:::i;:::-;1560:9;1538:6;:18;;;:31;1531:39;;;;:::i;:::-;1610:12;1587:6;:19;;;:35;1580:43;;;;:::i;:::-;1640:18;;;;:23;1633:31;;;;:::i;:::-;1707:15;1681:41;;:6;:22;;;:41;;;1674:49;;;;:::i;:::-;1763:12;1740:35;;:6;:19;;;:35;;;1733:43;;;;:::i;:::-;1793:17;;;;:26;1786:34;;;;:::i;:::-;624:1203;;;;;;;;;588:1239::o;414:168::-;473:7;526:10;548:16;563:1;548:12;:16;:::i;:::-;509:65;;3413:2:48;3409:15;;;;-1:-1:-1;;3405:53:48;509:65:35;;;3393:66:48;538:27:35;3475:12:48;;;3468:28;3512:12;;;3505:28;;;3549:12;;509:65:35;;;;;;;;;;;;499:76;;;;;;492:83;;414:168;;;:::o;14:127:48:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:125;211:9;;;232:10;;;229:36;;;245:18;;:::i;:::-;146:125;;;;:::o;1116:344::-;1183:2;1177:9;1225:3;1213:16;;1259:18;1244:34;;1280:22;;;1241:62;1238:185;;;1345:10;1340:3;1336:20;1333:1;1326:31;1380:4;1377:1;1370:15;1408:4;1405:1;1398:15;1238:185;1439:2;1432:22;1116:344;:::o;1465:177::-;1544:13;;-1:-1:-1;;;;;1586:31:48;;1576:42;;1566:70;;1632:1;1629;1622:12;1566:70;1465:177;;;:::o;1647:164::-;1723:13;;1772;;1765:21;1755:32;;1745:60;;1801:1;1798;1791:12;1816:1122;1910:6;1963:3;1951:9;1942:7;1938:23;1934:33;1931:53;;;1980:1;1977;1970:12;1931:53;2006:17;;:::i;:::-;2046:40;2076:9;2046:40;:::i;:::-;2039:5;2032:55;2119:49;2164:2;2153:9;2149:18;2119:49;:::i;:::-;2114:2;2107:5;2103:14;2096:73;2222:2;2211:9;2207:18;2201:25;2196:2;2189:5;2185:14;2178:49;2280:2;2269:9;2265:18;2259:25;2254:2;2247:5;2243:14;2236:49;2339:3;2328:9;2324:19;2318:26;2312:3;2305:5;2301:15;2294:51;2399:3;2388:9;2384:19;2378:26;2372:3;2365:5;2361:15;2354:51;2459:3;2448:9;2444:19;2438:26;2432:3;2425:5;2421:15;2414:51;2519:3;2508:9;2504:19;2498:26;2492:3;2485:5;2481:15;2474:51;2544:3;2600:2;2589:9;2585:18;2579:25;2574:2;2567:5;2563:14;2556:49;;2624:3;2659:46;2701:2;2690:9;2686:18;2659:46;:::i;:::-;2643:14;;;2636:70;2725:3;2760:46;2787:18;;;2760:46;:::i;:::-;2744:14;;;2737:70;2826:3;2861:46;2888:18;;;2861:46;:::i;:::-;2845:14;;;2838:70;2849:5;1816:1122;-1:-1:-1;;;1816:1122:48:o;2943:127::-;3004:10;2999:3;2995:20;2992:1;2985:31;3035:4;3032:1;3025:15;3059:4;3056:1;3049:15;3075:128;3142:9;;;3163:11;;;3160:37;;;3177:18;;:::i", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"test_createCourse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b5060405161001d90610133565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691821781556040805163204a7f0760e21b81529051638129fc1c9260048084019391929182900301818387803b15801561008d57600080fd5b505af11580156100a1573d6000803e3d6000fd5b505050506040516100b190610140565b6040808252600b908201526a436572746966696361746560a81b60608201526080602082018190526006908201526550494f4e434560d01b60a082015260c001604051809103906000f08015801561010d573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b039290921691909117905561014d565b612178806105cb83390190565b611bdd8061274383390190565b61046f8061015c6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e22387d314610030575b600080fd5b61003861003a565b005b60016064600a42600061005082620151806102d7565b6000546040516316293fa360e31b81526001600160a01b03888116600483015260248201889052604482018790526064820186905260848201849052600160a4830181905260c483018190529394508392169063b149fd189060e401600060405180830381600087803b1580156100c657600080fd5b505af11580156100da573d6000803e3d6000fd5b5050505060006100ea6000610269565b6000805460405163db631a8960e01b81526004810184905292935090916001600160a01b039091169063db631a899060240161018060405180830381865afa15801561013a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015e9190610354565b80519091506001600160a01b0316301461017a5761017a610410565b886001600160a01b031681602001516001600160a01b03161461019f5761019f610410565b6101aa8860016102d7565b8160400151146101bc576101bc610410565b878160600151146101cf576101cf610410565b868160800151146101e2576101e2610410565b858160c00151146101f5576101f5610410565b848160e001511461020857610208610410565b6101008101511561021b5761021b610410565b83151581610160015115151461023357610233610410565b82151581610120015115151461024b5761024b610410565b6101408101511561025e5761025e610410565b505050505050505050565b600033610277600143610426565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ea576102ea6102c1565b92915050565b604051610180810167ffffffffffffffff8111828210171561032257634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b038116811461033f57600080fd5b919050565b8051801515811461033f57600080fd5b6000610180828403121561036757600080fd5b61036f6102f0565b61037883610328565b815261038660208401610328565b602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152506101206103e1818501610344565b908201526101406103f3848201610344565b90820152610160610405848201610344565b908201529392505050565b634e487b7160e01b600052600160045260246000fd5b818103818111156102ea576102ea6102c156fea2646970667358221220547f7a22cea14f65b02de170ef2e36d043a70ab72b91433334ce7ce4635c51c664736f6c63430008100033608060405234801561001057600080fd5b50612158806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80639d84bf91116100715780639d84bf9114610135578063b149fd1814610148578063caca4ad31461015b578063db631a891461016e578063f2fde38b1461018e578063fda626ce146101a157600080fd5b80632cca6f2d146100b95780633c41b482146100e2578063669e88a1146100f7578063715018a61461010a5780638129fc1c146101125780638da5cb5b1461011a575b600080fd5b6100cc6100c7366004611b88565b6101c4565b6040516100d99190611bb4565b60405180910390f35b6100f56100f0366004611c3a565b610291565b005b6100f5610105366004611d28565b61071b565b6100f5610904565b6100f5610918565b6065546040516001600160a01b0390911681526020016100d9565b6100f5610143366004611d28565b610a31565b6100f5610156366004611d4f565b610b31565b6100f5610169366004611dbf565b61107f565b61018161017c366004611d28565b6112f5565b6040516100d99190611de1565b6100f561019c366004611e8d565b61142a565b6101b46101af366004611ea8565b6114a0565b60405190151581526020016100d9565b6101ef6040518060800160405280600081526020016000815260200160008152602001606081525090565b60008381526098602090815260408083206001600160a01b0386168452825291829020825160808101845281548152600182015481840152600282015481850152600382018054855181860281018601909652808652919492936060860193929083018282801561027f57602002820191906000526020600020905b81548152602001906001019080831161026b575b50505050508152505090505b92915050565b60008581526097602052604090205485906001600160a01b031633146102d25760405162461bcd60e51b81526004016102c990611edd565b60405180910390fd5b6000868152609760205260409020600801548690156103035760405162461bcd60e51b81526004016102c990611f14565b60008781526097602052604090206006810154861080159061032457504286105b6103655760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a5b59481cdd185c9d60721b60448201526064016102c9565b8585116103ac5760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642074696d6520636f6d706c65746560581b60448201526064016102c9565b60008881526098602090815260408083206001600160a01b038b16845290915290206001810154156104145760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb5c1b195d1959607a1b60448201526064016102c9565b86815560006104248a8a896114a0565b60018301889055905080156106d157826004015483600301600082825461044b9190611f61565b909155505060058301805490600061046283611f74565b9091555050426002830155600983015460ff16156104a0576004830154600184015461049b916001600160a01b03909116908b90611592565b61067a565b6009830154610100900460ff16156105645760005b836004015481101561055e5760018401546040516335313c2160e11b81526001600160a01b038c8116600483015260038601921690636a627842906024016020604051808303816000875af1158015610512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105369190611f8d565b815460018101835560009283526020909220909101558061055681611f74565b9150506104b5565b5061067a565b82600401548651146105aa5760405162461bcd60e51b815260206004820152600f60248201526e4e6f7420656e6f756768204e46547360881b60448201526064016102c9565b85516105bf9060038401906020890190611b0c565b5060005b86518110156106785760018401546001600160a01b03166342842e0e338c8a85815181106105f3576105f3611fa6565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561064d57600080fd5b505af1158015610661573d6000803e3d6000fd5b50505050808061067090611f74565b9150506105c3565b505b600183015460048401546040516001600160a01b03928316928c16918d917fd7168ab8576ce4d8336598fe8c588ccb843823a522fe33c98365c3e082daa2ca916106c8916003890190611fbc565b60405180910390a45b6040516001600160a01b038a1681528a907fb14f5aab91d7f1973be0a7f66b9f50b5da882aaf454b27c50d6a9d7b2172616c9060200160405180910390a250505050505050505050565b60008181526097602052604090205481906001600160a01b031633146107535760405162461bcd60e51b81526004016102c990611edd565b6000828152609760205260409020600801548290156107845760405162461bcd60e51b81526004016102c990611f14565b6000838152609760205260409020600981015460ff166107d75760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21030b1ba34b7b760911b60448201526064016102c9565b600081600301541161081b5760405162461bcd60e51b815260206004820152600d60248201526c13dd5d081bd988189d5919d95d609a1b60448201526064016102c9565b600981015462010000900460ff168061084557506007810154158015906108455750806007015442115b6108915760405162461bcd60e51b815260206004820152601860248201527f54696d6520626f6e757320686173206e6f7420656e646564000000000000000060448201526064016102c9565b6003810180546000909155815460018301546108ba916001600160a01b03918216911683611592565b81546040518281526001600160a01b039091169086907faa558890c86253324a06b9e861f61281fd0810f170827987572e7123581a779f9060200160405180910390a35050505050565b61090c6115fa565b6109166000611654565b565b600054610100900460ff16158080156109385750600054600160ff909116105b806109525750303b158015610952575060005460ff166001145b6109b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c9565b6000805460ff1916600117905580156109d8576000805461ff0019166101001790555b6109e06116a6565b6109e86116d5565b8015610a2e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008181526097602052604090205481906001600160a01b03163314610a695760405162461bcd60e51b81526004016102c990611edd565b600082815260976020526040902060080154829015610a9a5760405162461bcd60e51b81526004016102c990611f14565b6000838152609760205260408120426008820155600381018054929055600981015490919060ff168015610ace5750600081115b15610af15781546001830154610af1916001600160a01b03918216911683611592565b81546040516001600160a01b039091169086907f10156d1d3e0caa069c8a10325a1dae1512b2ff6bb941c18e16194970746f30a490600090a35050505050565b8560008111610b525760405162461bcd60e51b81526004016102c99061200f565b8560008111610b735760405162461bcd60e51b81526004016102c99061200f565b600260015403610bc55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c9565b60026001556001600160a01b038916610c195760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420726577617264206164647265737360501b60448201526064016102c9565b86881015610c5a5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908189d5919d95d60921b60448201526064016102c9565b8515610caa5742861015610ca55760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081d1a5b59481cdd185c9d60721b60448201526064016102c9565b610cae565b4295505b600084610cc657851580610cc157508686115b610ccb565b600086115b905080610d135760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642074696d6520656e6420626f6e757360501b60448201526064016102c9565b6000610d1d611704565b9050600085610e7457610d406001600160a01b038d1663357c172f60e01b61176b565b905080610e7457610d616001600160a01b038d166380ac58cd60e01b61176b565b610dad5760405162461bcd60e51b815260206004820152601d60248201527f52657761726420636f6e7472616374206973206e6f742045524337323100000060448201526064016102c9565b8a6001600160a01b038d166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e269190611f8d565b1015610e745760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742063726561746f7227732062616c616e6365000060448201526064016102c9565b604051806101800160405280610e873390565b6001600160a01b031681526020018d6001600160a01b031681526020018c81526020018c81526020018b8152602001600081526020018a815260200189815260200160008152602001871515815260200182151581526020018815158152506097600084815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015561010082015181600801556101208201518160090160006101000a81548160ff0219169083151502179055506101408201518160090160016101000a81548160ff0219169083151502179055506101608201518160090160026101000a81548160ff021916908315150217905550905050851561101b5761101b6001600160a01b038d1633308e611787565b604080513381526001600160a01b038e1660208201529081018b9052606081018a905282907fef048bc89a4d92f598f18e11c600d5cc675b387c770c6c49012d166043db64a29060800160405180910390a250506001805550505050505050505050565b60008281526097602052604090205482906001600160a01b031633146110b75760405162461bcd60e51b81526004016102c990611edd565b81600081116110d85760405162461bcd60e51b81526004016102c99061200f565b6000848152609760205260409020600801548490156111095760405162461bcd60e51b81526004016102c990611f14565b60026001540361115b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c9565b6002600181905560008681526097602052604081209182018054879290611183908490612034565b925050819055508481600301600082825461119e9190612034565b9091555050600981015460ff16156111cf576111ca3360018301546001600160a01b0316903088611787565b6112af565b6009810154610100900460ff166112af57600381015460018201546001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190611f8d565b10156112af5760405162461bcd60e51b815260206004820181905260248201527f42616c616e6365206f662063726561746f72206973206e6f7420656e6f75676860448201526064016102c9565b857f5cd42cadabfcfe861e1f12322ae257de37d1240ae38863b4c8b0b50fd0e32a26866040516112e191815260200190565b60405180910390a250506001805550505050565b61137160405180610180016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581526020016000151581525090565b5060009081526097602090815260409182902082516101808101845281546001600160a01b039081168252600183015416928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008083019190915260099092015460ff808216151561012084015292810483161515610140830152620100009004909116151561016082015290565b6114326115fa565b6001600160a01b0381166114975760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102c9565b610a2e81611654565b6000838152609760205260408120600481015460039091015410806114e9575060008481526098602090815260408083206001600160a01b038716845290915290206001015415155b156114f65750600061158b565b60008481526097602052604090206009015462010000900460ff161561155957600084815260976020908152604080832060070154609883528184206001600160a01b03881685529092529091205461154f9190612034565b821115905061158b565b600084815260976020526040902060070154158061158857506000848152609760205260409020600701548211155b90505b9392505050565b6040516001600160a01b0383166024820152604481018290526115f590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526117c5565b505050565b6065546001600160a01b031633146109165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102c9565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166116cd5760405162461bcd60e51b81526004016102c990612047565b610916611897565b600054610100900460ff166116fc5760405162461bcd60e51b81526004016102c990612047565b6109166118c7565b600061171060006118f4565b600081815260976020526040902060060154909150156117685760405162461bcd60e51b8152602060048201526013602482015272191d5c1b1a58d85d194818dbdd5c9cd9481a59606a1b60448201526064016102c9565b90565b60006117768361194c565b801561158b575061158b838361197f565b6040516001600160a01b03808516602483015283166044820152606481018290526117bf9085906323b872dd60e01b906084016115be565b50505050565b600061181a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a089092919063ffffffff16565b8051909150156115f557808060200190518101906118389190612092565b6115f55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102c9565b600054610100900460ff166118be5760405162461bcd60e51b81526004016102c990612047565b61091633611654565b600054610100900460ff166118ee5760405162461bcd60e51b81526004016102c990612047565b60018055565b600033611902600143611f61565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b600061195f826301ffc9a760e01b61197f565b801561028b5750611978826001600160e01b031961197f565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156119f1575060208210155b80156119fd5750600081115b979650505050505050565b60606115888484600085856001600160a01b0385163b611a6a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102c9565b600080866001600160a01b03168587604051611a8691906120d3565b60006040518083038185875af1925050503d8060008114611ac3576040519150601f19603f3d011682016040523d82523d6000602084013e611ac8565b606091505b50915091506119fd82828660608315611ae257508161158b565b825115611af25782518084602001fd5b8160405162461bcd60e51b81526004016102c991906120ef565b828054828255906000526020600020908101928215611b47579160200282015b82811115611b47578251825591602001919060010190611b2c565b50611b53929150611b57565b5090565b5b80821115611b535760008155600101611b58565b80356001600160a01b0381168114611b8357600080fd5b919050565b60008060408385031215611b9b57600080fd5b82359150611bab60208401611b6c565b90509250929050565b6000602080835260a0830184518285015281850151604085015260408501516060850152606085015160808086015281815180845260c0870191508483019350600092505b80831015611c195783518252928401926001929092019190840190611bf9565b509695505050505050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a08688031215611c5257600080fd5b853594506020611c63818801611b6c565b94506040870135935060608701359250608087013567ffffffffffffffff80821115611c8e57600080fd5b818901915089601f830112611ca257600080fd5b813581811115611cb457611cb4611c24565b8060051b604051601f19603f83011681018181108582111715611cd957611cd9611c24565b60405291825284820192508381018501918c831115611cf757600080fd5b938501935b82851015611d1557843584529385019392850192611cfc565b8096505050505050509295509295909350565b600060208284031215611d3a57600080fd5b5035919050565b8015158114610a2e57600080fd5b600080600080600080600060e0888a031215611d6a57600080fd5b611d7388611b6c565b96506020880135955060408801359450606088013593506080880135925060a0880135611d9f81611d41565b915060c0880135611daf81611d41565b8091505092959891949750929550565b60008060408385031215611dd257600080fd5b50508035926020909101359150565b81516001600160a01b0316815261018081016020830151611e0d60208401826001600160a01b03169052565b5060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611e6a8285018215159052565b505061014083810151151590830152610160928301511515929091019190915290565b600060208284031215611e9f57600080fd5b61158b82611b6c565b600080600060608486031215611ebd57600080fd5b83359250611ecd60208501611b6c565b9150604084013590509250925092565b6020808252601c908201527f63616c6c6572206973206e6f7420636f757273652063726561746f7200000000604082015260600190565b60208082526017908201527f436f7572736520686173206265656e2072656d6f766564000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561028b5761028b611f4b565b600060018201611f8657611f86611f4b565b5060010190565b600060208284031215611f9f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006040820184835260206040818501528185548084526060860191508660005282600020935060005b8181101561200257845483526001948501949284019201611fe6565b5090979650505050505050565b6020808252600b908201526a16995c9bc8185b5bdd5b9d60aa1b604082015260600190565b8082018082111561028b5761028b611f4b565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156120a457600080fd5b815161158b81611d41565b60005b838110156120ca5781810151838201526020016120b2565b50506000910152565b600082516120e58184602087016120af565b9190910192915050565b602081526000825180602084015261210e8160408501602087016120af565b601f01601f1916919091016040019291505056fea2646970667358221220ffde32c539f0c2ca37deb0a615513f93666574250ea78d2595bdfe329536b1c264736f6c6343000810003360806040523480156200001157600080fd5b5060405162001bdd38038062001bdd833981016040819052620000349162000193565b818160006200004483826200028c565b5060016200005382826200028c565b505050620000706200006a6200007860201b60201c565b6200007c565b505062000358565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000f657600080fd5b81516001600160401b0380821115620001135762000113620000ce565b604051601f8301601f19908116603f011681019082821181831017156200013e576200013e620000ce565b816040528381526020925086838588010111156200015b57600080fd5b600091505b838210156200017f578582018301518183018401529082019062000160565b600093810190920192909252949350505050565b60008060408385031215620001a757600080fd5b82516001600160401b0380821115620001bf57600080fd5b620001cd86838701620000e4565b93506020850151915080821115620001e457600080fd5b50620001f385828601620000e4565b9150509250929050565b600181811c908216806200021257607f821691505b6020821081036200023357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028757600081815260208120601f850160051c81016020861015620002625750805b601f850160051c820191505b8181101562000283578281556001016200026e565b5050505b505050565b81516001600160401b03811115620002a857620002a8620000ce565b620002c081620002b98454620001fd565b8462000239565b602080601f831160018114620002f85760008415620002df5750858301515b600019600386901b1c1916600185901b17855562000283565b600085815260208120601f198616915b82811015620003295788860151825594840194600190910190840162000308565b5085821015620003485787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61187580620003686000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde1461022f578063c87b56dd14610242578063e985e9c514610255578063eacabe1414610268578063f2fde38b1461027b57600080fd5b8063715018a6146101fb5780638da5cb5b1461020357806395d89b4114610214578063a22cb4651461021c57600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab5780636352211e146101be57806370a08231146101d1578063714cff56146101f257600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e6101293660046111e6565b61028e565b60405190151581526020015b60405180910390f35b61014b6102e0565b60405161013a9190611253565b61016b610166366004611266565b610372565b6040516001600160a01b03909116815260200161013a565b61019661019136600461129b565b610399565b005b6101966101a63660046112c5565b6104b3565b6101966101b93660046112c5565b6104e4565b61016b6101cc366004611266565b6104ff565b6101e46101df366004611301565b61055f565b60405190815260200161013a565b6101e460085481565b6101966105e5565b6007546001600160a01b031661016b565b61014b6105f9565b61019661022a36600461131c565b610608565b61019661023d3660046113e4565b610617565b61014b610250366004611266565b61064f565b61012e610263366004611460565b61075f565b610196610276366004611493565b61078d565b610196610289366004611301565b61084b565b60006001600160e01b031982166380ac58cd60e01b14806102bf57506001600160e01b03198216635b5e139f60e01b145b806102da57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102ef906114f5565b80601f016020809104026020016040519081016040528092919081815260200182805461031b906114f5565b80156103685780601f1061033d57610100808354040283529160200191610368565b820191906000526020600020905b81548152906001019060200180831161034b57829003601f168201915b5050505050905090565b600061037d826108c4565b506000908152600460205260409020546001600160a01b031690565b60006103a4826104ff565b9050806001600160a01b0316836001600160a01b0316036104165760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806104325750610432813361075f565b6104a45760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161040d565b6104ae8383610923565b505050565b6104bd3382610991565b6104d95760405162461bcd60e51b815260040161040d9061152f565b6104ae8383836109ef565b6104ae83838360405180602001604052806000815250610617565b6000818152600260205260408120546001600160a01b0316806102da5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161040d565b60006001600160a01b0382166105c95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161040d565b506001600160a01b031660009081526003602052604090205490565b6105ed610b8b565b6105f76000610be5565b565b6060600180546102ef906114f5565b610613338383610c37565b5050565b6106213383610991565b61063d5760405162461bcd60e51b815260040161040d9061152f565b61064984848484610d05565b50505050565b606061065a826108c4565b60008281526006602052604081208054610673906114f5565b80601f016020809104026020016040519081016040528092919081815260200182805461069f906114f5565b80156106ec5780601f106106c1576101008083540402835291602001916106ec565b820191906000526020600020905b8154815290600101906020018083116106cf57829003601f168201915b50505050509050600061070a60408051602081019091526000815290565b9050805160000361071c575092915050565b81511561074e57808260405160200161073692919061157d565b60405160208183030381529060405292505050919050565b61075784610d38565b949350505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610795610b8b565b6001600160a01b0382166107dd5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161040d565b600880549060006107ed836115c2565b91905055506107fe82600854610dac565b61080a60085482610dc6565b7f9f0432214927ca5d54e705bee45cb45cd0b88d9c6bc15906cc3498feb1d81310826008548360405161083f939291906115db565b60405180910390a15050565b610853610b8b565b6001600160a01b0381166108b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040d565b6108c181610be5565b50565b6000818152600260205260409020546001600160a01b03166108c15760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161040d565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610958826104ff565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061099d836104ff565b9050806001600160a01b0316846001600160a01b031614806109c457506109c4818561075f565b806107575750836001600160a01b03166109dd84610372565b6001600160a01b031614949350505050565b826001600160a01b0316610a02826104ff565b6001600160a01b031614610a665760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161040d565b6001600160a01b038216610ac85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161040d565b610ad3600082610923565b6001600160a01b0383166000908152600360205260408120805460019290610afc90849061160b565b90915550506001600160a01b0382166000908152600360205260408120805460019290610b2a90849061161e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6007546001600160a01b031633146105f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603610c985760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161040d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d108484846109ef565b610d1c84848484610e59565b6106495760405162461bcd60e51b815260040161040d90611631565b6060610d43826108c4565b6000610d5a60408051602081019091526000815290565b90506000815111610d7a5760405180602001604052806000815250610da5565b80610d8484610f5a565b604051602001610d9592919061157d565b6040516020818303038152906040525b9392505050565b61061382826040518060200160405280600081525061105b565b6000828152600260205260409020546001600160a01b0316610e415760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161040d565b60008281526006602052604090206104ae82826116d1565b60006001600160a01b0384163b15610f4f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610e9d903390899088908890600401611791565b6020604051808303816000875af1925050508015610ed8575060408051601f3d908101601f19168201909252610ed5918101906117ce565b60015b610f35573d808015610f06576040519150601f19603f3d011682016040523d82523d6000602084013e610f0b565b606091505b508051600003610f2d5760405162461bcd60e51b815260040161040d90611631565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610757565b506001949350505050565b606081600003610f815750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610fab5780610f95816115c2565b9150610fa49050600a83611801565b9150610f85565b60008167ffffffffffffffff811115610fc657610fc6611358565b6040519080825280601f01601f191660200182016040528015610ff0576020820181803683370190505b5090505b84156107575761100560018361160b565b9150611012600a86611815565b61101d90603061161e565b60f81b81838151811061103257611032611829565b60200101906001600160f81b031916908160001a905350611054600a86611801565b9450610ff4565b611065838361108e565b6110726000848484610e59565b6104ae5760405162461bcd60e51b815260040161040d90611631565b6001600160a01b0382166110e45760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161040d565b6000818152600260205260409020546001600160a01b0316156111495760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161040d565b6001600160a01b038216600090815260036020526040812080546001929061117290849061161e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b0319811681146108c157600080fd5b6000602082840312156111f857600080fd5b8135610da5816111d0565b60005b8381101561121e578181015183820152602001611206565b50506000910152565b6000815180845261123f816020860160208601611203565b601f01601f19169290920160200192915050565b602081526000610da56020830184611227565b60006020828403121561127857600080fd5b5035919050565b80356001600160a01b038116811461129657600080fd5b919050565b600080604083850312156112ae57600080fd5b6112b78361127f565b946020939093013593505050565b6000806000606084860312156112da57600080fd5b6112e38461127f565b92506112f16020850161127f565b9150604084013590509250925092565b60006020828403121561131357600080fd5b610da58261127f565b6000806040838503121561132f57600080fd5b6113388361127f565b91506020830135801515811461134d57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561138957611389611358565b604051601f8501601f19908116603f011681019082821181831017156113b1576113b1611358565b816040528093508581528686860111156113ca57600080fd5b858560208301376000602087830101525050509392505050565b600080600080608085870312156113fa57600080fd5b6114038561127f565b93506114116020860161127f565b925060408501359150606085013567ffffffffffffffff81111561143457600080fd5b8501601f8101871361144557600080fd5b6114548782356020840161136e565b91505092959194509250565b6000806040838503121561147357600080fd5b61147c8361127f565b915061148a6020840161127f565b90509250929050565b600080604083850312156114a657600080fd5b6114af8361127f565b9150602083013567ffffffffffffffff8111156114cb57600080fd5b8301601f810185136114dc57600080fd5b6114eb8582356020840161136e565b9150509250929050565b600181811c9082168061150957607f821691505b60208210810361152957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6000835161158f818460208801611203565b8351908301906115a3818360208801611203565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016115d4576115d46115ac565b5060010190565b60018060a01b03841681528260208201526060604082015260006116026060830184611227565b95945050505050565b818103818111156102da576102da6115ac565b808201808211156102da576102da6115ac565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b601f8211156104ae57600081815260208120601f850160051c810160208610156116aa5750805b601f850160051c820191505b818110156116c9578281556001016116b6565b505050505050565b815167ffffffffffffffff8111156116eb576116eb611358565b6116ff816116f984546114f5565b84611683565b602080601f831160018114611734576000841561171c5750858301515b600019600386901b1c1916600185901b1785556116c9565b600085815260208120601f198616915b8281101561176357888601518255948401946001909101908401611744565b50858210156117815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906117c490830184611227565b9695505050505050565b6000602082840312156117e057600080fd5b8151610da5816111d0565b634e487b7160e01b600052601260045260246000fd5b600082611810576118106117eb565b500490565b600082611824576118246117eb565b500690565b634e487b7160e01b600052603260045260246000fdfea264697066735822122055b4e07304fe036fe3f04e44a7921cbb4fce75fcf1885d1110f1e529fecb60a764736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e22387d314610030575b600080fd5b61003861003a565b005b60016064600a42600061005082620151806102d7565b6000546040516316293fa360e31b81526001600160a01b03888116600483015260248201889052604482018790526064820186905260848201849052600160a4830181905260c483018190529394508392169063b149fd189060e401600060405180830381600087803b1580156100c657600080fd5b505af11580156100da573d6000803e3d6000fd5b5050505060006100ea6000610269565b6000805460405163db631a8960e01b81526004810184905292935090916001600160a01b039091169063db631a899060240161018060405180830381865afa15801561013a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015e9190610354565b80519091506001600160a01b0316301461017a5761017a610410565b886001600160a01b031681602001516001600160a01b03161461019f5761019f610410565b6101aa8860016102d7565b8160400151146101bc576101bc610410565b878160600151146101cf576101cf610410565b868160800151146101e2576101e2610410565b858160c00151146101f5576101f5610410565b848160e001511461020857610208610410565b6101008101511561021b5761021b610410565b83151581610160015115151461023357610233610410565b82151581610120015115151461024b5761024b610410565b6101408101511561025e5761025e610410565b505050505050505050565b600033610277600143610426565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ea576102ea6102c1565b92915050565b604051610180810167ffffffffffffffff8111828210171561032257634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b038116811461033f57600080fd5b919050565b8051801515811461033f57600080fd5b6000610180828403121561036757600080fd5b61036f6102f0565b61037883610328565b815261038660208401610328565b602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152506101206103e1818501610344565b908201526101406103f3848201610344565b90820152610160610405848201610344565b908201529392505050565b634e487b7160e01b600052600160045260246000fd5b818103818111156102ea576102ea6102c156fea2646970667358221220547f7a22cea14f65b02de170ef2e36d043a70ab72b91433334ce7ce4635c51c664736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/NFTReward.sol:NFTReward": {"srcmap": "378:1883:36:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "378:1883:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2022:237;;;;;;:::i;:::-;;:::i;:::-;;;565:14:48;;558:22;540:41;;528:2;513:18;2022:237:36;;;;;;;;2931:98:6;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:48;;;1679:51;;1667:2;1652:18;4407:167:6;1533:203:48;3928:418:6;;;;;;:::i;:::-;;:::i;:::-;;5084:327;;;;;;:::i;:::-;;:::i;5477:179::-;;;;;;:::i;:::-;;:::i;999:309:36:-;;;;;;:::i;:::-;;:::i;2651:218:6:-;;;;;;:::i;:::-;;:::i;1495:293:36:-;;;;;;:::i;:::-;;:::i;:::-;;;4667:25:48;;;4655:2;4640:18;1495:293:36;4521:177:48;2390:204:6;;;;;;:::i;:::-;;:::i;605:23:36:-;;;;;;3093:102:6;;;:::i;4641:153::-;;;;;;:::i;:::-;;:::i;509:26:36:-;;;;;-1:-1:-1;;;;;509:26:36;;;5722:315:6;;;;;;:::i;:::-;;:::i;747:608:9:-;;;;;;:::i;:::-;;:::i;4860:162:6:-;;;;;;:::i;:::-;;:::i;716:17:36:-;;;:::i;2022:237::-;2146:4;-1:-1:-1;;;;;;2169:43:36;;-1:-1:-1;;;2169:43:36;;:83;;;2216:36;2240:11;2216:23;:36::i;:::-;2162:90;2022:237;-1:-1:-1;;2022:237:36:o;2931:98:6:-;2985:13;3017:5;3010:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:6;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:6;;4407:167::o;3928:418::-;4008:13;4024:34;4050:7;4024:25;:34::i;:::-;4008:50;;4082:5;-1:-1:-1;;;;;4076:11:6;:2;-1:-1:-1;;;;;4076:11:6;;4068:57;;;;-1:-1:-1;;;4068:57:6;;6579:2:48;4068:57:6;;;6561:21:48;6618:2;6598:18;;;6591:30;6657:34;6637:18;;;6630:62;-1:-1:-1;;;6708:18:48;;;6701:31;6749:19;;4068:57:6;;;;;;;;;929:10:12;-1:-1:-1;;;;;4157:21:6;;;;:62;;-1:-1:-1;4182:37:6;4199:5;929:10:12;4860:162:6;:::i;4182:37::-;4136:171;;;;-1:-1:-1;;;4136:171:6;;6981:2:48;4136:171:6;;;6963:21:48;7020:2;7000:18;;;6993:30;7059:34;7039:18;;;7032:62;7130:32;7110:18;;;7103:60;7180:19;;4136:171:6;6779:426:48;4136:171:6;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3998:348;3928:418;;:::o;5084:327::-;5273:41;929:10:12;5306:7:6;5273:18;:41::i;:::-;5265:100;;;;-1:-1:-1;;;5265:100:6;;;;;;;:::i;:::-;5376:28;5386:4;5392:2;5396:7;5376:9;:28::i;5477:179::-;5610:39;5627:4;5633:2;5637:7;5610:39;;;;;;;;;;;;:16;:39::i;999:309:36:-;3111:19:1;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:1;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:1;1476:19:11;:23;;;3219:66:1;;-1:-1:-1;3268:12:1;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:1;;7827:2:48;3157:201:1;;;7809:21:48;7866:2;7846:18;;;7839:30;7905:34;7885:18;;;7878:62;-1:-1:-1;;;7956:18:48;;;7949:44;8010:19;;3157:201:1;7625:410:48;3157:201:1;3368:12;:16;;-1:-1:-1;;3368:16:1;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:1;;;;;3394:65;-1:-1:-1;;;;;1142:26:36;::::1;1134:71;;;::::0;-1:-1:-1;;;1134:71:36;;8242:2:48;1134:71:36::1;::::0;::::1;8224:21:48::0;;;8261:18;;;8254:30;8320:34;8300:18;;;8293:62;8372:18;;1134:71:36::1;8040:356:48::0;1134:71:36::1;1215:29;1229:5;1236:7;1215:13;:29::i;:::-;1255:11;:26:::0;;-1:-1:-1;;;;;;1255:26:36::1;-1:-1:-1::0;;;;;1255:26:36;::::1;;::::0;;1291:3:::1;:10;1297:4:::0;1291:3;:10:::1;:::i;:::-;;3483:14:1::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:1;;;3553:14;;-1:-1:-1;10757:36:48;;3553:14:1;;10745:2:48;10730:18;3553:14:1;;;;;;;3479:99;3101:483;999:309:36;;;;:::o;2651:218:6:-;2723:7;2758:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2758:16:6;;2784:56;;;;-1:-1:-1;;;2784:56:6;;11006:2:48;2784:56:6;;;10988:21:48;11045:2;11025:18;;;11018:30;-1:-1:-1;;;11064:18:48;;;11057:54;11128:18;;2784:56:6;10804:348:48;1495:293:36;1582:11;;1539:7;;-1:-1:-1;;;;;1582:11:36;929:10:12;-1:-1:-1;;;;;1566:27:36;;1558:65;;;;-1:-1:-1;;;1558:65:36;;11359:2:48;1558:65:36;;;11341:21:48;11398:2;11378:18;;;11371:30;11437:27;11417:18;;;11410:55;11482:18;;1558:65:36;11157:349:48;1558:65:36;1635:8;;1633:10;;;;;:::i;:::-;;;;-1:-1:-1;1668:8:36;;1653:24;;1663:3;;1653:9;:24::i;:::-;1687:27;1700:8;;1710:3;1687:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;1730:26;1737:3;1742:8;;1752:3;1730:26;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;1773:8:36;;;1495:293::o;2390:204:6:-;2462:7;-1:-1:-1;;;;;2489:19:6;;2481:73;;;;-1:-1:-1;;;2481:73:6;;13122:2:48;2481:73:6;;;13104:21:48;13161:2;13141:18;;;13134:30;13200:34;13180:18;;;13173:62;-1:-1:-1;;;13251:18:48;;;13244:39;13300:19;;2481:73:6;12920:405:48;2481:73:6;-1:-1:-1;;;;;;2571:16:6;;;;;:9;:16;;;;;;;2390:204::o;3093:102::-;3149:13;3181:7;3174:14;;;;;:::i;4641:153::-;4735:52;929:10:12;4768:8:6;4778;4735:18;:52::i;:::-;4641:153;;:::o;5722:315::-;5890:41;929:10:12;5923:7:6;5890:18;:41::i;:::-;5882:100;;;;-1:-1:-1;;;5882:100:6;;;;;;;:::i;:::-;5992:38;6006:4;6012:2;6016:7;6025:4;5992:13;:38::i;:::-;5722:315;;;;:::o;747:608:9:-;820:13;845:23;860:7;845:14;:23::i;:::-;879;905:19;;;:10;:19;;;;;879:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;934:18;955:10;3855:9:6;;;;;;;;;-1:-1:-1;3855:9:6;;;3779:92;955:10:9;934:31;;1044:4;1038:18;1060:1;1038:23;1034:70;;-1:-1:-1;1084:9:9;747:608;-1:-1:-1;;747:608:9:o;1034:70::-;1206:23;;:27;1202:106;;1280:4;1286:9;1263:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1249:48;;;;747:608;;;:::o;1202:106::-;1325:23;1340:7;1325:14;:23::i;:::-;1318:30;747:608;-1:-1:-1;;;;747:608:9:o;4860:162:6:-;-1:-1:-1;;;;;4980:25:6;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162::o;716:17:36:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1987:344:6:-;2111:4;-1:-1:-1;;;;;;2146:51:6;;-1:-1:-1;;;2146:51:6;;:126;;-1:-1:-1;;;;;;;2213:59:6;;-1:-1:-1;;;2213:59:6;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:15;;;2288:36:6;1060:166:15;12173:133:6;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:6;12246:53;;;;-1:-1:-1;;;12246:53:6;;11006:2:48;12246:53:6;;;10988:21:48;11045:2;11025:18;;;11018:30;-1:-1:-1;;;11064:18:48;;;11057:54;11128:18;;12246:53:6;10804:348:48;12246:53:6;12173:133;:::o;11464:182::-;11538:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11538:29:6;-1:-1:-1;;;;;11538:29:6;;;;;;;;:24;;11591:34;11538:24;11591:25;:34::i;:::-;-1:-1:-1;;;;;11582:57:6;;;;;;;;;;;11464:182;;:::o;7789:272::-;7882:4;7898:13;7914:34;7940:7;7914:25;:34::i;:::-;7898:50;;7977:5;-1:-1:-1;;;;;7966:16:6;:7;-1:-1:-1;;;;;7966:16:6;;:52;;;;7986:32;8003:5;8010:7;7986:16;:32::i;:::-;7966:87;;;;8046:7;-1:-1:-1;;;;;8022:31:6;:20;8034:7;8022:11;:20::i;:::-;-1:-1:-1;;;;;8022:31:6;;7958:96;7789:272;-1:-1:-1;;;;7789:272:6:o;10736:616::-;10901:4;-1:-1:-1;;;;;10863:42:6;:34;10889:7;10863:25;:34::i;:::-;-1:-1:-1;;;;;10863:42:6;;10855:92;;;;-1:-1:-1;;;10855:92:6;;14033:2:48;10855:92:6;;;14015:21:48;14072:2;14052:18;;;14045:30;14111:34;14091:18;;;14084:62;-1:-1:-1;;;14162:18:48;;;14155:35;14207:19;;10855:92:6;13831:401:48;10855:92:6;-1:-1:-1;;;;;10965:16:6;;10957:65;;;;-1:-1:-1;;;10957:65:6;;14439:2:48;10957:65:6;;;14421:21:48;14478:2;14458:18;;;14451:30;14517:34;14497:18;;;14490:62;-1:-1:-1;;;14568:18:48;;;14561:34;14612:19;;10957:65:6;14237:400:48;10957:65:6;11134:29;11151:1;11155:7;11134:8;:29::i;:::-;-1:-1:-1;;;;;11174:15:6;;;;;;:9;:15;;;;;:20;;11193:1;;11174:15;:20;;11193:1;;11174:20;:::i;:::-;;;;-1:-1:-1;;;;;;;11204:13:6;;;;;;:9;:13;;;;;:18;;11221:1;;11204:13;:18;;11221:1;;11204:18;:::i;:::-;;;;-1:-1:-1;;11232:16:6;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;11232:21:6;-1:-1:-1;;;;;11232:21:6;;;;;;;;;11269:27;;11232:16;;11269:27;;;;;;;3998:348;3928:418;;:::o;1605:149::-;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1708:39:6::1;1732:5;1739:7;1708:23;:39::i;8391:108::-:0;8466:26;8476:2;8480:7;8466:26;;;;;;;;;;;;:9;:26::i;1502:214:9:-;7571:4:6;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:6;1593:75:9;;;;-1:-1:-1;;;1593:75:9;;15519:2:48;1593:75:9;;;15501:21:48;15558:2;15538:18;;;15531:30;15597:34;15577:18;;;15570:62;-1:-1:-1;;;15648:18:48;;;15641:44;15702:19;;1593:75:9;15317:410:48;1593:75:9;1678:19;;;;:10;:19;;;;;:31;1700:9;1678:19;:31;:::i;11782:307:6:-;11932:8;-1:-1:-1;;;;;11923:17:6;:5;-1:-1:-1;;;;;11923:17:6;;11915:55;;;;-1:-1:-1;;;11915:55:6;;15934:2:48;11915:55:6;;;15916:21:48;15973:2;15953:18;;;15946:30;16012:27;15992:18;;;15985:55;16057:18;;11915:55:6;15732:349:48;11915:55:6;-1:-1:-1;;;;;11980:25:6;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11980:46:6;;;;;;;;;;12041:41;;540::48;;;12041::6;;513:18:48;12041:41:6;;;;;;;11782:307;;;:::o;6898:305::-;7048:28;7058:4;7064:2;7068:7;7048:9;:28::i;:::-;7094:47;7117:4;7123:2;7127:7;7136:4;7094:22;:47::i;:::-;7086:110;;;;-1:-1:-1;;;7086:110:6;;;;;;;:::i;3261:276::-;3334:13;3359:23;3374:7;3359:14;:23::i;:::-;3393:21;3417:10;3855:9;;;;;;;;;-1:-1:-1;3855:9:6;;;3779:92;3417:10;3393:34;;3468:1;3450:7;3444:21;:25;:86;;;;;;;;;;;;;;;;;3496:7;3505:18;:7;:16;:18::i;:::-;3479:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3444:86;3437:93;3261:276;-1:-1:-1;;;3261:276:6:o;1760:160::-;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1873:5:6::1;:13;1881:5:::0;1873;:13:::1;:::i;:::-;-1:-1:-1::0;1896:7:6::1;:17;1906:7:::0;1896;:17:::1;:::i;8720:309::-:0;8844:18;8850:2;8854:7;8844:5;:18::i;:::-;8893:53;8924:1;8928:2;8932:7;8941:4;8893:22;:53::i;:::-;8872:150;;;;-1:-1:-1;;;8872:150:6;;;;;;;:::i;12858:853::-;13007:4;-1:-1:-1;;;;;13027:13:6;;1476:19:11;:23;13023:682:6;;13062:82;;-1:-1:-1;;;13062:82:6;;-1:-1:-1;;;;;13062:47:6;;;;;:82;;929:10:12;;13124:4:6;;13130:7;;13139:4;;13062:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13062:82:6;;;;;;;;-1:-1:-1;;13062:82:6;;;;;;;;;;;;:::i;:::-;;;13058:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:6;:13;13339:1;13322:18;13318:321;;13364:60;;-1:-1:-1;;;13364:60:6;;;;;;;:::i;13318:321::-;13591:6;13585:13;13576:6;13572:2;13568:15;13561:38;13058:595;-1:-1:-1;;;;;;13194:62:6;-1:-1:-1;;;13194:62:6;;-1:-1:-1;13187:69:6;;13023:682;-1:-1:-1;13690:4:6;12858:853;;;;;;:::o;403:703:13:-;459:13;676:5;685:1;676:10;672:51;;-1:-1:-1;;702:10:13;;;;;;;;;;;;-1:-1:-1;;;702:10:13;;;;;403:703::o;672:51::-;747:5;732:12;786:75;793:9;;786:75;;818:8;;;;:::i;:::-;;-1:-1:-1;840:10:13;;-1:-1:-1;848:2:13;840:10;;:::i;:::-;;;786:75;;;870:19;902:6;892:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;892:17:13;;870:39;;919:150;926:10;;919:150;;952:11;962:1;952:11;;:::i;:::-;;-1:-1:-1;1020:10:13;1028:2;1020:5;:10;:::i;:::-;1007:24;;:2;:24;:::i;:::-;994:39;;977:6;984;977:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;977:56:13;;;;;;;;-1:-1:-1;1047:11:13;1056:2;1047:11;;:::i;:::-;;;919:150;;9351:427:6;-1:-1:-1;;;;;9430:16:6;;9422:61;;;;-1:-1:-1;;;9422:61:6;;17961:2:48;9422:61:6;;;17943:21:48;;;17980:18;;;17973:30;18039:34;18019:18;;;18012:62;18091:18;;9422:61:6;17759:356:48;9422:61:6;7571:4;7594:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7594:16:6;:30;9493:58;;;;-1:-1:-1;;;9493:58:6;;18322:2:48;9493:58:6;;;18304:21:48;18361:2;18341:18;;;18334:30;18400;18380:18;;;18373:58;18448:18;;9493:58:6;18120:352:48;9493:58:6;-1:-1:-1;;;;;9618:13:6;;;;;;:9;:13;;;;;:18;;9635:1;;9618:13;:18;;9635:1;;9618:18;:::i;:::-;;;;-1:-1:-1;;9646:16:6;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9646:21:6;-1:-1:-1;;;;;9646:21:6;;;;;;;;9683:33;;9646:16;;;9683:33;;9646:16;;9683:33;4641:153;;:::o;14:131:48:-;-1:-1:-1;;;;;;88:32:48;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:48;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:48;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:48:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:48;;1348:180;-1:-1:-1;1348:180:48:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:48;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:48:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:127::-;2572:10;2567:3;2563:20;2560:1;2553:31;2603:4;2600:1;2593:15;2627:4;2624:1;2617:15;2643:632;2708:5;2738:18;2779:2;2771:6;2768:14;2765:40;;;2785:18;;:::i;:::-;2860:2;2854:9;2828:2;2914:15;;-1:-1:-1;;2910:24:48;;;2936:2;2906:33;2902:42;2890:55;;;2960:18;;;2980:22;;;2957:46;2954:72;;;3006:18;;:::i;:::-;3046:10;3042:2;3035:22;3075:6;3066:15;;3105:6;3097;3090:22;3145:3;3136:6;3131:3;3127:16;3124:25;3121:45;;;3162:1;3159;3152:12;3121:45;3212:6;3207:3;3200:4;3192:6;3188:17;3175:44;3267:1;3260:4;3251:6;3243;3239:19;3235:30;3228:41;;;;2643:632;;;;;:::o;3280:222::-;3323:5;3376:3;3369:4;3361:6;3357:17;3353:27;3343:55;;3394:1;3391;3384:12;3343:55;3416:80;3492:3;3483:6;3470:20;3463:4;3455:6;3451:17;3416:80;:::i;3507:818::-;3623:6;3631;3639;3647;3700:3;3688:9;3679:7;3675:23;3671:33;3668:53;;;3717:1;3714;3707:12;3668:53;3740:29;3759:9;3740:29;:::i;:::-;3730:39;;3820:2;3809:9;3805:18;3792:32;3843:18;3884:2;3876:6;3873:14;3870:34;;;3900:1;3897;3890:12;3870:34;3923:50;3965:7;3956:6;3945:9;3941:22;3923:50;:::i;:::-;3913:60;;4026:2;4015:9;4011:18;3998:32;3982:48;;4055:2;4045:8;4042:16;4039:36;;;4071:1;4068;4061:12;4039:36;4094:52;4138:7;4127:8;4116:9;4112:24;4094:52;:::i;:::-;4084:62;;4199:2;4188:9;4184:18;4171:32;4155:48;;4228:2;4218:8;4215:16;4212:36;;;4244:1;4241;4234:12;4212:36;;4267:52;4311:7;4300:8;4289:9;4285:24;4267:52;:::i;:::-;4257:62;;;3507:818;;;;;;;:::o;4330:186::-;4389:6;4442:2;4430:9;4421:7;4417:23;4413:32;4410:52;;;4458:1;4455;4448:12;4410:52;4481:29;4500:9;4481:29;:::i;4703:347::-;4768:6;4776;4829:2;4817:9;4808:7;4804:23;4800:32;4797:52;;;4845:1;4842;4835:12;4797:52;4868:29;4887:9;4868:29;:::i;:::-;4858:39;;4947:2;4936:9;4932:18;4919:32;4994:5;4987:13;4980:21;4973:5;4970:32;4960:60;;5016:1;5013;5006:12;4960:60;5039:5;5029:15;;;4703:347;;;;;:::o;5055:667::-;5150:6;5158;5166;5174;5227:3;5215:9;5206:7;5202:23;5198:33;5195:53;;;5244:1;5241;5234:12;5195:53;5267:29;5286:9;5267:29;:::i;:::-;5257:39;;5315:38;5349:2;5338:9;5334:18;5315:38;:::i;:::-;5305:48;;5400:2;5389:9;5385:18;5372:32;5362:42;;5455:2;5444:9;5440:18;5427:32;5482:18;5474:6;5471:30;5468:50;;;5514:1;5511;5504:12;5468:50;5537:22;;5590:4;5582:13;;5578:27;-1:-1:-1;5568:55:48;;5619:1;5616;5609:12;5568:55;5642:74;5708:7;5703:2;5690:16;5685:2;5681;5677:11;5642:74;:::i;5727:260::-;5795:6;5803;5856:2;5844:9;5835:7;5831:23;5827:32;5824:52;;;5872:1;5869;5862:12;5824:52;5895:29;5914:9;5895:29;:::i;:::-;5885:39;;5943:38;5977:2;5966:9;5962:18;5943:38;:::i;:::-;5933:48;;5727:260;;;;;:::o;5992:380::-;6071:1;6067:12;;;;6114;;;6135:61;;6189:4;6181:6;6177:17;6167:27;;6135:61;6242:2;6234:6;6231:14;6211:18;6208:38;6205:161;;6288:10;6283:3;6279:20;6276:1;6269:31;6323:4;6320:1;6313:15;6351:4;6348:1;6341:15;6205:161;;5992:380;;;:::o;7210:410::-;7412:2;7394:21;;;7451:2;7431:18;;;7424:30;7490:34;7485:2;7470:18;;7463:62;-1:-1:-1;;;7556:2:48;7541:18;;7534:44;7610:3;7595:19;;7210:410::o;8527:545::-;8629:2;8624:3;8621:11;8618:448;;;8665:1;8690:5;8686:2;8679:17;8735:4;8731:2;8721:19;8805:2;8793:10;8789:19;8786:1;8782:27;8776:4;8772:38;8841:4;8829:10;8826:20;8823:47;;;-1:-1:-1;8864:4:48;8823:47;8919:2;8914:3;8910:12;8907:1;8903:20;8897:4;8893:31;8883:41;;8974:82;8992:2;8985:5;8982:13;8974:82;;;9037:17;;;9018:1;9007:13;8974:82;;;8978:3;;;8527:545;;;:::o;9248:1352::-;9374:3;9368:10;9401:18;9393:6;9390:30;9387:56;;;9423:18;;:::i;:::-;9452:97;9542:6;9502:38;9534:4;9528:11;9502:38;:::i;:::-;9496:4;9452:97;:::i;:::-;9604:4;;9668:2;9657:14;;9685:1;9680:663;;;;10387:1;10404:6;10401:89;;;-1:-1:-1;10456:19:48;;;10450:26;10401:89;-1:-1:-1;;9205:1:48;9201:11;;;9197:24;9193:29;9183:40;9229:1;9225:11;;;9180:57;10503:81;;9650:944;;9680:663;8474:1;8467:14;;;8511:4;8498:18;;-1:-1:-1;;9716:20:48;;;9834:236;9848:7;9845:1;9842:14;9834:236;;;9937:19;;;9931:26;9916:42;;10029:27;;;;9997:1;9985:14;;;;9864:19;;9834:236;;;9838:3;10098:6;10089:7;10086:19;10083:201;;;10159:19;;;10153:26;-1:-1:-1;;10242:1:48;10238:14;;;10254:3;10234:24;10230:37;10226:42;10211:58;10196:74;;10083:201;-1:-1:-1;;;;;10330:1:48;10314:14;;;10310:22;10297:36;;-1:-1:-1;9248:1352:48:o;11511:127::-;11572:10;11567:3;11563:20;11560:1;11553:31;11603:4;11600:1;11593:15;11627:4;11624:1;11617:15;11643:135;11682:3;11703:17;;;11700:43;;11723:18;;:::i;:::-;-1:-1:-1;11770:1:48;11759:13;;11643:135::o;11783:1132::-;12014:1;12010;12005:3;12001:11;11997:19;11989:6;11985:32;11974:9;11967:51;11948:4;12037:2;12075:6;12070:2;12059:9;12055:18;12048:34;12118:2;12113;12102:9;12098:18;12091:30;12141:1;12174:6;12168:13;12204:36;12230:9;12204:36;:::i;:::-;12276:6;12271:2;12260:9;12256:18;12249:34;12302:3;12324:1;12356:2;12345:9;12341:18;12373:1;12368:158;;;;12540:1;12535:354;;;;12334:555;;12368:158;-1:-1:-1;;12416:24:48;;12396:18;;;12389:52;12494:14;;12487:22;12484:1;12480:30;12465:46;;12461:55;;;-1:-1:-1;12368:158:48;;12535:354;12566:6;12563:1;12556:17;12614:2;12611:1;12601:16;12639:1;12653:180;12667:6;12664:1;12661:13;12653:180;;;12760:14;;12736:17;;;12732:26;;12725:50;12803:16;;;;12682:10;;12653:180;;;12857:17;;12853:26;;;-1:-1:-1;;12334:555:48;-1:-1:-1;12906:3:48;;11783:1132;-1:-1:-1;;;;;;;;;;11783:1132:48:o;13330:496::-;13509:3;13547:6;13541:13;13563:66;13622:6;13617:3;13610:4;13602:6;13598:17;13563:66;:::i;:::-;13692:13;;13651:16;;;;13714:70;13692:13;13651:16;13761:4;13749:17;;13714:70;:::i;:::-;13800:20;;13330:496;-1:-1:-1;;;;13330:496:48:o;14642:128::-;14709:9;;;14730:11;;;14727:37;;;14744:18;;:::i;14775:125::-;14840:9;;;14861:10;;;14858:36;;;14874:18;;:::i;14905:407::-;15107:2;15089:21;;;15146:2;15126:18;;;15119:30;15185:34;15180:2;15165:18;;15158:62;-1:-1:-1;;;15251:2:48;15236:18;;15229:41;15302:3;15287:19;;14905:407::o;16086:414::-;16288:2;16270:21;;;16327:2;16307:18;;;16300:30;16366:34;16361:2;16346:18;;16339:62;-1:-1:-1;;;16432:2:48;16417:18;;16410:48;16490:3;16475:19;;16086:414::o;16505:489::-;-1:-1:-1;;;;;16774:15:48;;;16756:34;;16826:15;;16821:2;16806:18;;16799:43;16873:2;16858:18;;16851:34;;;16921:3;16916:2;16901:18;;16894:31;;;16699:4;;16942:46;;16968:19;;16960:6;16942:46;:::i;:::-;16934:54;16505:489;-1:-1:-1;;;;;;16505:489:48:o;16999:249::-;17068:6;17121:2;17109:9;17100:7;17096:23;17092:32;17089:52;;;17137:1;17134;17127:12;17089:52;17169:9;17163:16;17188:30;17212:5;17188:30;:::i;17253:127::-;17314:10;17309:3;17305:20;17302:1;17295:31;17345:4;17342:1;17335:15;17369:4;17366:1;17359:15;17385:120;17425:1;17451;17441:35;;17456:18;;:::i;:::-;-1:-1:-1;17490:9:48;;17385:120::o;17510:112::-;17542:1;17568;17558:35;;17573:18;;:::i;:::-;-1:-1:-1;17607:9:48;;17510:112::o;17627:127::-;17688:10;17683:3;17679:20;17676:1;17669:31;17719:4;17716:1;17709:15;17743:4;17740:1;17733:15", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_learnToEarn\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"learnToEarn\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50611bab806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a4e8aaae11610071578063a4e8aaae1461023c578063b88d4fde1461024f578063c87b56dd14610262578063e985e9c514610275578063eac989f81461028857600080fd5b806370a0823114610205578063714cff561461021857806395d89b4114610221578063a22cb4651461022957600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab5780635f1e6f6d146101be5780636352211e146101d15780636a627842146101e457600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e610129366004611414565b610290565b60405190151581526020015b60405180910390f35b61014b6102bb565b60405161013a9190611481565b61016b610166366004611494565b61034d565b6040516001600160a01b03909116815260200161013a565b6101966101913660046114c9565b610374565b005b6101966101a63660046114f3565b61048e565b6101966101b93660046114f3565b6104bf565b6101966101cc3660046115db565b6104da565b61016b6101df366004611494565b61066f565b6101f76101f2366004611674565b6106cf565b60405190815260200161013a565b6101f7610213366004611674565b610832565b6101f760ca5481565b61014b6108b8565b61019661023736600461168f565b6108c7565b60c95461016b906001600160a01b031681565b61019661025d3660046116cb565b6108d6565b61014b610270366004611494565b61090e565b61012e61028336600461173b565b610a1e565b61014b610a4c565b60006001600160e01b0319821663357c172f60e01b14806102b557506102b582610ada565b92915050565b6060606580546102ca9061176e565b80601f01602080910402602001604051908101604052809291908181526020018280546102f69061176e565b80156103435780601f1061031857610100808354040283529160200191610343565b820191906000526020600020905b81548152906001019060200180831161032657829003601f168201915b5050505050905090565b600061035882610b2a565b506000908152606960205260409020546001600160a01b031690565b600061037f8261066f565b9050806001600160a01b0316836001600160a01b0316036103f15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061040d575061040d8133610a1e565b61047f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103e8565b6104898383610b8c565b505050565b6104983382610bfa565b6104b45760405162461bcd60e51b81526004016103e8906117a8565b610489838383610c58565b610489838383604051806020016040528060008152506108d6565b600054610100900460ff16158080156104fa5750600054600160ff909116105b806105145750303b158015610514575060005460ff166001145b6105775760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103e8565b6000805460ff19166001179055801561059a576000805461ff0019166101001790555b6001600160a01b0385166105f05760405162461bcd60e51b815260206004820181905260248201527f4c6561726e546f4561726e2061646472657373206973206e6f742076616c696460448201526064016103e8565b6105fa8484610df4565b60c980546001600160a01b0319166001600160a01b03871617905560cb6106218382611844565b508015610668576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000818152606760205260408120546001600160a01b0316806102b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103e8565b60c9546000906001600160a01b0316336001600160a01b0316146107355760405162461bcd60e51b815260206004820152601960248201527f43616c6c6572206973206e6f74206c6561726e546f4561726e0000000000000060448201526064016103e8565b60ca600081546107449061191a565b9091555060ca54610756908390610e25565b6107ec60ca5460cb80546107699061176e565b80601f01602080910402602001604051908101604052809291908181526020018280546107959061176e565b80156107e25780601f106107b7576101008083540402835291602001916107e2565b820191906000526020600020905b8154815290600101906020018083116107c557829003601f168201915b5050505050610e3f565b7fe7cd4ce7f2a465edc730269a1305e8a48bad821e8fb7e152ec413829c01a53c48260ca5460cb60405161082293929190611933565b60405180910390a1505060ca5490565b60006001600160a01b03821661089c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103e8565b506001600160a01b031660009081526068602052604090205490565b6060606680546102ca9061176e565b6108d2338383610ed2565b5050565b6108e03383610bfa565b6108fc5760405162461bcd60e51b81526004016103e8906117a8565b61090884848484610fa0565b50505050565b606061091982610b2a565b600082815260976020526040812080546109329061176e565b80601f016020809104026020016040519081016040528092919081815260200182805461095e9061176e565b80156109ab5780601f10610980576101008083540402835291602001916109ab565b820191906000526020600020905b81548152906001019060200180831161098e57829003601f168201915b5050505050905060006109c960408051602081019091526000815290565b905080516000036109db575092915050565b815115610a0d5780826040516020016109f59291906119d5565b60405160208183030381529060405292505050919050565b610a1684610fd3565b949350505050565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60cb8054610a599061176e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a859061176e565b8015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b505050505081565b60006001600160e01b031982166380ac58cd60e01b1480610b0b57506001600160e01b03198216635b5e139f60e01b145b806102b557506301ffc9a760e01b6001600160e01b03198316146102b5565b6000818152606760205260409020546001600160a01b0316610b895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103e8565b50565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610bc18261066f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610c068361066f565b9050806001600160a01b0316846001600160a01b03161480610c2d5750610c2d8185610a1e565b80610a165750836001600160a01b0316610c468461034d565b6001600160a01b031614949350505050565b826001600160a01b0316610c6b8261066f565b6001600160a01b031614610ccf5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103e8565b6001600160a01b038216610d315760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103e8565b610d3c600082610b8c565b6001600160a01b0383166000908152606860205260408120805460019290610d65908490611a04565b90915550506001600160a01b0382166000908152606860205260408120805460019290610d93908490611a17565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600054610100900460ff16610e1b5760405162461bcd60e51b81526004016103e890611a2a565b6108d28282611047565b6108d2828260405180602001604052806000815250611087565b6000828152606760205260409020546001600160a01b0316610eba5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016103e8565b60008281526097602052604090206104898282611844565b816001600160a01b0316836001600160a01b031603610f335760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103e8565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610fab848484610c58565b610fb7848484846110ba565b6109085760405162461bcd60e51b81526004016103e890611a75565b6060610fde82610b2a565b6000610ff560408051602081019091526000815290565b905060008151116110155760405180602001604052806000815250611040565b8061101f846111bb565b6040516020016110309291906119d5565b6040516020818303038152906040525b9392505050565b600054610100900460ff1661106e5760405162461bcd60e51b81526004016103e890611a2a565b606561107a8382611844565b5060666104898282611844565b61109183836112bc565b61109e60008484846110ba565b6104895760405162461bcd60e51b81526004016103e890611a75565b60006001600160a01b0384163b156111b057604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906110fe903390899088908890600401611ac7565b6020604051808303816000875af1925050508015611139575060408051601f3d908101601f1916820190925261113691810190611b04565b60015b611196573d808015611167576040519150601f19603f3d011682016040523d82523d6000602084013e61116c565b606091505b50805160000361118e5760405162461bcd60e51b81526004016103e890611a75565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610a16565b506001949350505050565b6060816000036111e25750506040805180820190915260018152600360fc1b602082015290565b8160005b811561120c57806111f68161191a565b91506112059050600a83611b37565b91506111e6565b60008167ffffffffffffffff8111156112275761122761152f565b6040519080825280601f01601f191660200182016040528015611251576020820181803683370190505b5090505b8415610a1657611266600183611a04565b9150611273600a86611b4b565b61127e906030611a17565b60f81b81838151811061129357611293611b5f565b60200101906001600160f81b031916908160001a9053506112b5600a86611b37565b9450611255565b6001600160a01b0382166113125760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103e8565b6000818152606760205260409020546001600160a01b0316156113775760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103e8565b6001600160a01b03821660009081526068602052604081208054600192906113a0908490611a17565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114610b8957600080fd5b60006020828403121561142657600080fd5b8135611040816113fe565b60005b8381101561144c578181015183820152602001611434565b50506000910152565b6000815180845261146d816020860160208601611431565b601f01601f19169290920160200192915050565b6020815260006110406020830184611455565b6000602082840312156114a657600080fd5b5035919050565b80356001600160a01b03811681146114c457600080fd5b919050565b600080604083850312156114dc57600080fd5b6114e5836114ad565b946020939093013593505050565b60008060006060848603121561150857600080fd5b611511846114ad565b925061151f602085016114ad565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156115605761156061152f565b604051601f8501601f19908116603f011681019082821181831017156115885761158861152f565b816040528093508581528686860111156115a157600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126115cc57600080fd5b61104083833560208501611545565b600080600080608085870312156115f157600080fd5b6115fa856114ad565b9350602085013567ffffffffffffffff8082111561161757600080fd5b611623888389016115bb565b9450604087013591508082111561163957600080fd5b611645888389016115bb565b9350606087013591508082111561165b57600080fd5b50611668878288016115bb565b91505092959194509250565b60006020828403121561168657600080fd5b611040826114ad565b600080604083850312156116a257600080fd5b6116ab836114ad565b9150602083013580151581146116c057600080fd5b809150509250929050565b600080600080608085870312156116e157600080fd5b6116ea856114ad565b93506116f8602086016114ad565b925060408501359150606085013567ffffffffffffffff81111561171b57600080fd5b8501601f8101871361172c57600080fd5b61166887823560208401611545565b6000806040838503121561174e57600080fd5b611757836114ad565b9150611765602084016114ad565b90509250929050565b600181811c9082168061178257607f821691505b6020821081036117a257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f82111561048957600081815260208120601f850160051c8101602086101561181d5750805b601f850160051c820191505b8181101561183c57828155600101611829565b505050505050565b815167ffffffffffffffff81111561185e5761185e61152f565b6118728161186c845461176e565b846117f6565b602080601f8311600181146118a7576000841561188f5750858301515b600019600386901b1c1916600185901b17855561183c565b600085815260208120601f198616915b828110156118d6578886015182559484019460019091019084016118b7565b50858210156118f45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b60006001820161192c5761192c611904565b5060010190565b60018060a01b0384168152600060208481840152606060408401526000845461195b8161176e565b806060870152608060018084166000811461197d5760018114611997576119c5565b60ff1985168984015283151560051b8901830195506119c5565b896000528660002060005b858110156119bd5781548b82018601529083019088016119a2565b8a0184019650505b50939a9950505050505050505050565b600083516119e7818460208801611431565b8351908301906119fb818360208801611431565b01949350505050565b818103818111156102b5576102b5611904565b808201808211156102b5576102b5611904565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611afa90830184611455565b9695505050505050565b600060208284031215611b1657600080fd5b8151611040816113fe565b634e487b7160e01b600052601260045260246000fd5b600082611b4657611b46611b21565b500490565b600082611b5a57611b5a611b21565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220d16bb6aff2f2b793d1af32b65465db5bd9e4a26159d00e1f31a074311ca5fcd064736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a4e8aaae11610071578063a4e8aaae1461023c578063b88d4fde1461024f578063c87b56dd14610262578063e985e9c514610275578063eac989f81461028857600080fd5b806370a0823114610205578063714cff561461021857806395d89b4114610221578063a22cb4651461022957600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab5780635f1e6f6d146101be5780636352211e146101d15780636a627842146101e457600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e610129366004611414565b610290565b60405190151581526020015b60405180910390f35b61014b6102bb565b60405161013a9190611481565b61016b610166366004611494565b61034d565b6040516001600160a01b03909116815260200161013a565b6101966101913660046114c9565b610374565b005b6101966101a63660046114f3565b61048e565b6101966101b93660046114f3565b6104bf565b6101966101cc3660046115db565b6104da565b61016b6101df366004611494565b61066f565b6101f76101f2366004611674565b6106cf565b60405190815260200161013a565b6101f7610213366004611674565b610832565b6101f760ca5481565b61014b6108b8565b61019661023736600461168f565b6108c7565b60c95461016b906001600160a01b031681565b61019661025d3660046116cb565b6108d6565b61014b610270366004611494565b61090e565b61012e61028336600461173b565b610a1e565b61014b610a4c565b60006001600160e01b0319821663357c172f60e01b14806102b557506102b582610ada565b92915050565b6060606580546102ca9061176e565b80601f01602080910402602001604051908101604052809291908181526020018280546102f69061176e565b80156103435780601f1061031857610100808354040283529160200191610343565b820191906000526020600020905b81548152906001019060200180831161032657829003601f168201915b5050505050905090565b600061035882610b2a565b506000908152606960205260409020546001600160a01b031690565b600061037f8261066f565b9050806001600160a01b0316836001600160a01b0316036103f15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061040d575061040d8133610a1e565b61047f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103e8565b6104898383610b8c565b505050565b6104983382610bfa565b6104b45760405162461bcd60e51b81526004016103e8906117a8565b610489838383610c58565b610489838383604051806020016040528060008152506108d6565b600054610100900460ff16158080156104fa5750600054600160ff909116105b806105145750303b158015610514575060005460ff166001145b6105775760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103e8565b6000805460ff19166001179055801561059a576000805461ff0019166101001790555b6001600160a01b0385166105f05760405162461bcd60e51b815260206004820181905260248201527f4c6561726e546f4561726e2061646472657373206973206e6f742076616c696460448201526064016103e8565b6105fa8484610df4565b60c980546001600160a01b0319166001600160a01b03871617905560cb6106218382611844565b508015610668576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000818152606760205260408120546001600160a01b0316806102b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103e8565b60c9546000906001600160a01b0316336001600160a01b0316146107355760405162461bcd60e51b815260206004820152601960248201527f43616c6c6572206973206e6f74206c6561726e546f4561726e0000000000000060448201526064016103e8565b60ca600081546107449061191a565b9091555060ca54610756908390610e25565b6107ec60ca5460cb80546107699061176e565b80601f01602080910402602001604051908101604052809291908181526020018280546107959061176e565b80156107e25780601f106107b7576101008083540402835291602001916107e2565b820191906000526020600020905b8154815290600101906020018083116107c557829003601f168201915b5050505050610e3f565b7fe7cd4ce7f2a465edc730269a1305e8a48bad821e8fb7e152ec413829c01a53c48260ca5460cb60405161082293929190611933565b60405180910390a1505060ca5490565b60006001600160a01b03821661089c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103e8565b506001600160a01b031660009081526068602052604090205490565b6060606680546102ca9061176e565b6108d2338383610ed2565b5050565b6108e03383610bfa565b6108fc5760405162461bcd60e51b81526004016103e8906117a8565b61090884848484610fa0565b50505050565b606061091982610b2a565b600082815260976020526040812080546109329061176e565b80601f016020809104026020016040519081016040528092919081815260200182805461095e9061176e565b80156109ab5780601f10610980576101008083540402835291602001916109ab565b820191906000526020600020905b81548152906001019060200180831161098e57829003601f168201915b5050505050905060006109c960408051602081019091526000815290565b905080516000036109db575092915050565b815115610a0d5780826040516020016109f59291906119d5565b60405160208183030381529060405292505050919050565b610a1684610fd3565b949350505050565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60cb8054610a599061176e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a859061176e565b8015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b505050505081565b60006001600160e01b031982166380ac58cd60e01b1480610b0b57506001600160e01b03198216635b5e139f60e01b145b806102b557506301ffc9a760e01b6001600160e01b03198316146102b5565b6000818152606760205260409020546001600160a01b0316610b895760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103e8565b50565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610bc18261066f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610c068361066f565b9050806001600160a01b0316846001600160a01b03161480610c2d5750610c2d8185610a1e565b80610a165750836001600160a01b0316610c468461034d565b6001600160a01b031614949350505050565b826001600160a01b0316610c6b8261066f565b6001600160a01b031614610ccf5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103e8565b6001600160a01b038216610d315760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103e8565b610d3c600082610b8c565b6001600160a01b0383166000908152606860205260408120805460019290610d65908490611a04565b90915550506001600160a01b0382166000908152606860205260408120805460019290610d93908490611a17565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600054610100900460ff16610e1b5760405162461bcd60e51b81526004016103e890611a2a565b6108d28282611047565b6108d2828260405180602001604052806000815250611087565b6000828152606760205260409020546001600160a01b0316610eba5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016103e8565b60008281526097602052604090206104898282611844565b816001600160a01b0316836001600160a01b031603610f335760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103e8565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610fab848484610c58565b610fb7848484846110ba565b6109085760405162461bcd60e51b81526004016103e890611a75565b6060610fde82610b2a565b6000610ff560408051602081019091526000815290565b905060008151116110155760405180602001604052806000815250611040565b8061101f846111bb565b6040516020016110309291906119d5565b6040516020818303038152906040525b9392505050565b600054610100900460ff1661106e5760405162461bcd60e51b81526004016103e890611a2a565b606561107a8382611844565b5060666104898282611844565b61109183836112bc565b61109e60008484846110ba565b6104895760405162461bcd60e51b81526004016103e890611a75565b60006001600160a01b0384163b156111b057604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906110fe903390899088908890600401611ac7565b6020604051808303816000875af1925050508015611139575060408051601f3d908101601f1916820190925261113691810190611b04565b60015b611196573d808015611167576040519150601f19603f3d011682016040523d82523d6000602084013e61116c565b606091505b50805160000361118e5760405162461bcd60e51b81526004016103e890611a75565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610a16565b506001949350505050565b6060816000036111e25750506040805180820190915260018152600360fc1b602082015290565b8160005b811561120c57806111f68161191a565b91506112059050600a83611b37565b91506111e6565b60008167ffffffffffffffff8111156112275761122761152f565b6040519080825280601f01601f191660200182016040528015611251576020820181803683370190505b5090505b8415610a1657611266600183611a04565b9150611273600a86611b4b565b61127e906030611a17565b60f81b81838151811061129357611293611b5f565b60200101906001600160f81b031916908160001a9053506112b5600a86611b37565b9450611255565b6001600160a01b0382166113125760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103e8565b6000818152606760205260409020546001600160a01b0316156113775760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103e8565b6001600160a01b03821660009081526068602052604081208054600192906113a0908490611a17565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114610b8957600080fd5b60006020828403121561142657600080fd5b8135611040816113fe565b60005b8381101561144c578181015183820152602001611434565b50506000910152565b6000815180845261146d816020860160208601611431565b601f01601f19169290920160200192915050565b6020815260006110406020830184611455565b6000602082840312156114a657600080fd5b5035919050565b80356001600160a01b03811681146114c457600080fd5b919050565b600080604083850312156114dc57600080fd5b6114e5836114ad565b946020939093013593505050565b60008060006060848603121561150857600080fd5b611511846114ad565b925061151f602085016114ad565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156115605761156061152f565b604051601f8501601f19908116603f011681019082821181831017156115885761158861152f565b816040528093508581528686860111156115a157600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126115cc57600080fd5b61104083833560208501611545565b600080600080608085870312156115f157600080fd5b6115fa856114ad565b9350602085013567ffffffffffffffff8082111561161757600080fd5b611623888389016115bb565b9450604087013591508082111561163957600080fd5b611645888389016115bb565b9350606087013591508082111561165b57600080fd5b50611668878288016115bb565b91505092959194509250565b60006020828403121561168657600080fd5b611040826114ad565b600080604083850312156116a257600080fd5b6116ab836114ad565b9150602083013580151581146116c057600080fd5b809150509250929050565b600080600080608085870312156116e157600080fd5b6116ea856114ad565b93506116f8602086016114ad565b925060408501359150606085013567ffffffffffffffff81111561171b57600080fd5b8501601f8101871361172c57600080fd5b61166887823560208401611545565b6000806040838503121561174e57600080fd5b611757836114ad565b9150611765602084016114ad565b90509250929050565b600181811c9082168061178257607f821691505b6020821081036117a257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b601f82111561048957600081815260208120601f850160051c8101602086101561181d5750805b601f850160051c820191505b8181101561183c57828155600101611829565b505050505050565b815167ffffffffffffffff81111561185e5761185e61152f565b6118728161186c845461176e565b846117f6565b602080601f8311600181146118a7576000841561188f5750858301515b600019600386901b1c1916600185901b17855561183c565b600085815260208120601f198616915b828110156118d6578886015182559484019460019091019084016118b7565b50858210156118f45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b60006001820161192c5761192c611904565b5060010190565b60018060a01b0384168152600060208481840152606060408401526000845461195b8161176e565b806060870152608060018084166000811461197d5760018114611997576119c5565b60ff1985168984015283151560051b8901830195506119c5565b896000528660002060005b858110156119bd5781548b82018601529083019088016119a2565b8a0184019650505b50939a9950505050505050505050565b600083516119e7818460208801611431565b8351908301906119fb818360208801611431565b01949350505050565b818103818111156102b5576102b5611904565b808201808211156102b5576102b5611904565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611afa90830184611455565b9695505050505050565b600060208284031215611b1657600080fd5b8151611040816113fe565b634e487b7160e01b600052601260045260246000fd5b600082611b4657611b46611b21565b500490565b600082611b5a57611b5a611b21565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220d16bb6aff2f2b793d1af32b65465db5bd9e4a26159d00e1f31a074311ca5fcd064736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ReBakedDAO.sol:ReBakedDAO": {"srcmap": "860:19735:37:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "860:19735:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11612:488;;;;;;:::i;:::-;;:::i;:::-;;7662:1153;;;;;;:::i;:::-;;:::i;10697:733::-;;;;;;:::i;:::-;;:::i;15363:164::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;3476:13:48;;3458:32;;3546:4;3534:17;;;3528:24;3506:20;;;3499:54;3609:4;3597:17;;;3591:24;3569:20;;;3562:54;3672:4;3660:17;;;3654:24;3632:20;;;3625:54;3735:4;3723:17;;;3717:24;3695:20;;;3688:54;3798:4;3786:17;;;3780:24;3758:20;;;3751:54;3861:4;3849:17;;;3843:24;3821:20;;;3814:54;3924:4;3912:17;;;3906:24;3884:20;;;3877:54;3950:6;3998:15;;;3992:22;3972:18;;;3965:50;4034:6;4082:15;;;4076:22;4056:18;;;4049:50;4118:6;4166:15;;;4160:22;4140:18;;;4133:50;4202:6;4250:15;;;4244:22;4224:18;;;4217:50;4286:6;4334:15;;;4328:22;4308:18;;;4301:50;4370:6;4418:15;;;4412:22;4392:18;;;4385:50;4454:6;4502:15;;;4496:22;4476:18;;;4469:50;4538:6;4579:15;;;4573:22;3235:13;3228:21;4634:18;;;3216:34;;;;3445:3;3430:19;;3261:1398;15363:164:37;;;;;;;;15724:245;;;;;;:::i;:::-;;:::i;:::-;;;;;;5143:4:48;5185:3;5174:9;5170:19;5162:27;;5222:6;5216:13;5205:9;5198:32;5286:4;5278:6;5274:17;5268:24;5261:4;5250:9;5246:20;5239:54;5349:4;5341:6;5337:17;5331:24;5324:4;5313:9;5309:20;5302:54;5412:4;5404:6;5400:17;5394:24;5387:4;5376:9;5372:20;5365:54;5475:4;5467:6;5463:17;5457:24;5450:4;5439:9;5435:20;5428:54;5538:4;5530:6;5526:17;5520:24;5513:4;5502:9;5498:20;5491:54;5615:4;5607:6;5603:17;5597:24;5590:32;5583:40;5576:4;5565:9;5561:20;5554:70;4991:639;;;;;15090:130:37;;;;;;:::i;:::-;;:::i;:::-;;;;;;6077:13:48;;-1:-1:-1;;;;;6073:22:48;;;6055:41;;6156:4;6144:17;;;6138:24;6134:33;;;6112:20;;;6105:63;6224:4;6212:17;;;6206:24;6184:20;;;6177:54;6287:4;6275:17;;;6269:24;6247:20;;;6240:54;6350:4;6338:17;;;6332:24;6310:20;;;6303:54;6035:3;6401:17;;;6395:24;6373:20;;;6366:54;6476:4;6464:17;;;6458:24;6436:20;;;6429:54;6539:4;6527:17;;;6521:24;6499:20;;;6492:54;6565:6;6613:15;;;6607:22;6587:18;;;6580:50;;;;6004:3;5989:19;;5820:816;5886:1462:37;;;;;;:::i;:::-;;:::i;13350:533::-;;;;;;:::i;:::-;;:::i;16166:328::-;;;;;;:::i;:::-;16312:7;16376:28;;;:16;:28;;;;;;;;:40;;;;;;;;;-1:-1:-1;;;;;16376:55:37;;;;;;;;;16450:16;;16468:18;;;;;16450:16;;16166:328;;;;;8811:25:48;;;8867:2;8852:18;;8845:34;;;;8784:18;16166:328:37;8637:248:48;16679:225:37;;;;;;:::i;:::-;;:::i;:::-;;;;9106:13:48;;9088:32;;9176:4;9164:17;;;9158:24;9136:20;;;9129:54;9241:17;;;9235:24;9228:32;9221:40;9199:20;;;9192:70;9076:2;9061:18;16679:225:37;8890:378:48;1293:23:37;;;;;-1:-1:-1;;;;;1293:23:37;;;;;;-1:-1:-1;;;;;9437:32:48;;;9419:51;;9407:2;9392:18;1293:23:37;9273:203:48;2071:101:0;;;:::i;13889:1059:37:-;;;;;;:::i;:::-;;:::i;17085:425::-;;;;;;:::i;:::-;;:::i;:::-;;;10364:25:48;;;10352:2;10337:18;17085:425:37;10218:177:48;2930:263:37;;;;;;:::i;:::-;;:::i;3915:225::-;;;;;;:::i;:::-;;:::i;1441:85:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;1441:85;;4499:1044:37;;;;;;:::i;:::-;;:::i;12904:222::-;;;;;;:::i;:::-;;:::i;2525:227::-;;;;;;:::i;:::-;;:::i;9881:464::-;;;;;;:::i;:::-;;:::i;1217:43::-;;1257:3;1217:43;;3434:354;;;;;;:::i;:::-;;:::i;9082:510::-;;;;;;:::i;:::-;;:::i;2321:198:0:-;;;;;;:::i;:::-;;:::i;11612:488:37:-;11700:24;;;;:12;:24;;;;;;;;:36;;;;;;;;929:10:12;11700:50:37;;;;;;;;;;11699:51;11691:94;;;;-1:-1:-1;;;11691:94:37;;12144:2:48;11691:94:37;;;12126:21:48;12183:2;12163:18;;;12156:30;12222:32;12202:18;;;12195:60;12272:18;;11691:94:37;;;;;;;;;11796:33;11832:28;;;:16;:28;;;;;;;;:40;;;;;;;;929:10:12;11832:54:37;;;;;;;11896:34;11832:54;11896:32;:34::i;:::-;12003:16;;11996:5;11940:23;;;:11;:23;;;;;;;;:35;;;;;;;;:80;;:35;;11996:5;11940:55;:80::i;:::-;12036:57;;929:10:12;9419:51:48;;12068:10:37;;12056;;12036:57;;9407:2:48;9392:18;12036:57:37;;;;;;;;11681:419;11612:488;;:::o;7662:1153::-;2295:23;;;;:11;:23;;;;;:33;7875:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;7897:23:::1;7923::::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;8001:26:::1;::::0;::::1;::::0;7976:21;;:51:::1;7968:92;;;::::0;-1:-1:-1;;;7968:92:37;;12863:2:48;7968:92:37::1;::::0;::::1;12845:21:48::0;12902:2;12882:18;;;12875:30;12941;12921:18;;;12914:58;12989:18;;7968:92:37::1;12661:352:48::0;7968:92:37::1;8099:7;:22;;;8078:10;:17;:43;8070:80;;;::::0;-1:-1:-1;;;8070:80:37;;13220:2:48;8070:80:37::1;::::0;::::1;13202:21:48::0;13259:2;13239:18;;;13232:30;13298:26;13278:18;;;13271:54;13342:18;;8070:80:37::1;13018:348:48::0;8070:80:37::1;8161:24;:7;:22;:24::i;:::-;8200:12;8196:280;;;8233:9;8228:121;8252:14;:21;8248:1;:25;8228:121;;;8280:69;8304:10;8316;8328:14;8343:1;8328:17;;;;;;;;:::i;:::-;;;;;;;8347:1;8280:23;:69::i;:::-;8275:3:::0;::::1;::::0;::::1;:::i;:::-;;;;8228:121;;;;8368:9;8363:102;8387:10;:17;8383:1;:21;8363:102;;;8411:54;8427:10;8439;8451;8462:1;8451:13;;;;;;;;:::i;:::-;;;;;;;8411:15;:54::i;:::-;8406:3:::0;::::1;::::0;::::1;:::i;:::-;;;;8363:102;;;;8196:280;8556:13;::::0;::::1;::::0;8534:18:::1;::::0;::::1;::::0;8517:14;;8486:27:::1;::::0;8556:13;8517:35:::1;::::0;::::1;:::i;:::-;8516:53;;;;:::i;:::-;8486:83;;8629:7;:27;;;8603:7;:23;;;:53;;;;:::i;:::-;8579:78;::::0;;::::1;:::i;:::-;8667:23;::::0;;;:11:::1;:23;::::0;;;;8579:78;;-1:-1:-1;8667:65:37::1;::::0;8579:78;8667:44:::1;:65::i;:::-;8788:19;8776:10;8764;8748:60;;;;;;;;;;7887:928;;7662:1153:::0;;;;;;:::o;10697:733::-;2295:23;;;;:11;:23;;;;;:33;10869:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;10900:24:::1;::::0;;;:12:::1;:24;::::0;;;;;;;:36;;;;;;;;-1:-1:-1;;;;;10900:51:37;::::1;::::0;;;;;;;;::::1;;10899:52;10891:95;;;::::0;-1:-1:-1;;;10891:95:37;;12144:2:48;10891:95:37::1;::::0;::::1;12126:21:48::0;12183:2;12163:18;;;12156:30;12222:32;12202:18;;;12195:60;12272:18;;10891:95:37::1;11942:354:48::0;10891:95:37::1;10997:33;11033:28:::0;;;:16:::1;:28;::::0;;;;;;;:40;;;;;;;;-1:-1:-1;;;;;11033:55:37;::::1;::::0;;;;;;;11098:109;::::1;;;11131:65;11155:10;11167;11179:13;11194:1;11131:23;:65::i;:::-;11217:34;:12;:32;:34::i;:::-;11332:16:::0;;::::1;11261:23:::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;:88:::1;::::0;11317:13;;11261:55:::1;:88::i;:::-;11365:58;::::0;-1:-1:-1;;;;;9437:32:48;;9419:51;;11397:10:37;;11385;;11365:58:::1;::::0;9407:2:48;9392:18;11365:58:37::1;;;;;;;;10881:549;10697:733:::0;;;;;:::o;15363:164::-;15450:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15450:14:37;-1:-1:-1;15484:23:37;;;;:11;:23;;;;;;;;:35;;;;;;;;;15476:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15363:164;;;;;:::o;15724:245::-;15869:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15869:19:37;-1:-1:-1;15907:28:37;;;;:16;:28;;;;;;;;:40;;;;;;;;-1:-1:-1;;;;;15907:55:37;;;;;;;;;;15900:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15724:245;;;;;;:::o;15090:130::-;15157:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15157:14:37;-1:-1:-1;15190:23:37;;;;:11;:23;;;;;;;;;15183:30;;;;;;;;;-1:-1:-1;;;;;15183:30:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15090:130::o;5886:1462::-;2295:23;;;;:11;:23;;;;;:33;6106:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;6128:23:::1;6154::::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;6232:26:::1;::::0;::::1;::::0;6207:21;;:51:::1;6199:90;;;::::0;-1:-1:-1;;;6199:90:37;;14240:2:48;6199:90:37::1;::::0;::::1;14222:21:48::0;14279:2;14259:18;;;14252:30;14318:28;14298:18;;;14291:56;14364:18;;6199:90:37::1;14038:350:48::0;6199:90:37::1;6332:7;:14;6307;:21;:39;6299:75;;;::::0;-1:-1:-1;;;6299:75:37;;14595:2:48;6299:75:37::1;::::0;::::1;14577:21:48::0;14634:2;14614:18;;;14607:30;14673:25;14653:18;;;14646:53;14716:18;;6299:75:37::1;14393:347:48::0;6299:75:37::1;6413:7;:22;;;6392:10;:17;:43;6384:78;;;::::0;-1:-1:-1;;;6384:78:37;;14947:2:48;6384:78:37::1;::::0;::::1;14929:21:48::0;14986:2;14966:18;;;14959:30;-1:-1:-1;;;15005:18:48;;;14998:52;15067:18;;6384:78:37::1;14745:346:48::0;6384:78:37::1;6473:19;6495:24;:7;:22;:24::i;:::-;6529:23;::::0;;;:11:::1;:23;::::0;;;;6473:46;;-1:-1:-1;6529:51:37::1;::::0;6473:46;6529:38:::1;:51::i;:::-;6611:1;6595:7;:13;;;:17;:46;;;;;6640:1;6616:14;:21;:25;6595:46;6591:381;;;6657:25;6705:9:::0;6700:173:::1;6724:7;:14;6720:1;:18;6700:173;;;6784:1;6771:7;6779:1;6771:10;;;;;;;;:::i;:::-;;;;;;;:14;6763:46;;;::::0;-1:-1:-1;;;6763:46:37;;15298:2:48;6763:46:37::1;::::0;::::1;15280:21:48::0;15337:2;15317:18;;;15310:30;-1:-1:-1;;;15356:18:48;;;15349:49;15415:18;;6763:46:37::1;15096:343:48::0;6763:46:37::1;6848:7;6856:1;6848:10;;;;;;;;:::i;:::-;;;;;;;6827:31;;;;;:::i;:::-;::::0;-1:-1:-1;6740:3:37;::::1;::::0;::::1;:::i;:::-;;;;6700:173;;;;1257:3;6894:17;:34;6886:75;;;::::0;-1:-1:-1;;;6886:75:37;;15646:2:48;6886:75:37::1;::::0;::::1;15628:21:48::0;15685:2;15665:18;;;15658:30;15724;15704:18;;;15697:58;15772:18;;6886:75:37::1;15444:352:48::0;6886:75:37::1;6643:329;6591:381;6987:9;6982:155;7006:14;:21;7002:1;:25;6982:155;;;7048:78;7072:10;7084;7096:14;7111:1;7096:17;;;;;;;;:::i;:::-;;;;;;;7115:7;7123:1;7115:10;;;;;;;;:::i;:::-;;;;;;;7048:23;:78::i;:::-;7029:3:::0;::::1;::::0;::::1;:::i;:::-;;;;6982:155;;;;7152:9;7147:127;7171:10;:17;7167:1;:21;7147:127;;;7209:54;7225:10;7237;7249;7260:1;7249:13;;;;;;;;:::i;7209:54::-;7190:3:::0;::::1;::::0;::::1;:::i;:::-;;;;7147:127;;;;7329:11;7317:10;7305;7289:52;;;;;;;;;;6118:1230;;5886:1462:::0;;;;;;:::o;13350:533::-;2295:23;;;;:11;:23;;;;;:33;13497:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;13547:1:::1;13527:10;:17;:21;13519:56;;;::::0;-1:-1:-1;;;13519:56:37;;16003:2:48;13519:56:37::1;::::0;::::1;15985:21:48::0;16042:2;16022:18;;;16015:30;-1:-1:-1;;;16061:18:48;;;16054:52;16123:18;;13519:56:37::1;15801:346:48::0;13519:56:37::1;13591:9;13586:142;13610:10;:17;13606:1;:21;13586:142;;;13648:24;::::0;;;:12:::1;:24;::::0;;;;;;;:36;;;;;;;;13685:13;;13648:69:::1;::::0;:24;13685:10;;13696:1;;13685:13;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;13648:51:37::1;-1:-1:-1::0;;;;;13648:51:37::1;;;;;;;;;;;;:67;:69::i;:::-;13629:3:::0;::::1;::::0;::::1;:::i;:::-;;;;13586:142;;;-1:-1:-1::0;13790:17:37;;13737:23:::1;::::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;:71:::1;::::0;:52:::1;:71::i;:::-;13853:10;13841;13824:52;13865:10;13824:52;;;;;;:::i;:::-;;;;;;;;13350:533:::0;;;;:::o;16679:225::-;16816:15;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;16816:15:37;-1:-1:-1;16850:24:37;;;;:12;:24;;;;;;;;:36;;;;;;;;;-1:-1:-1;;;;;16850:47:37;;;;;;;;;;;;;16843:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16679:225::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;13889:1059:37:-;2295:23;;;;:11;:23;;;;;:33;14078:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;14130:1:::1;14108:12;:19;:23;:51;;;;14158:1;14135:13;:20;:24;14108:51;14100:87;;;::::0;-1:-1:-1;;;14100:87:37;;17017:2:48;14100:87:37::1;::::0;::::1;16999:21:48::0;17056:2;17036:18;;;17029:30;17095:25;17075:18;;;17068:53;17138:18;;14100:87:37::1;16815:347:48::0;14100:87:37::1;14202:19:::0;;:23;14198:360:::1;;14246:9;14241:151;14265:12;:19;14261:1;:23;14241:151;;;14309:24;::::0;;;:12:::1;:24;::::0;;;;;;;:36;;;;;;;;14346:15;;14309:68:::1;::::0;:24;14346:12;;14359:1;;14346:15;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;14309:53:37::1;-1:-1:-1::0;;;;;14309:53:37::1;;;;;;;;;;;;:66;:68::i;:::-;14286:3:::0;::::1;::::0;::::1;:::i;:::-;;;;14241:151;;;-1:-1:-1::0;14455:19:37;;14405:23:::1;::::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;:70:::1;::::0;:49:::1;:70::i;:::-;14522:10;14510;14495:52;14534:12;14495:52;;;;;;:::i;:::-;;;;;;;;14198:360;14572:20:::0;;:24;14568:374:::1;;14617:9;14612:156;14636:13;:20;14632:1;:24;14612:156;;;14681:24;::::0;;;:12:::1;:24;::::0;;;;;;;:36;;;;;;;;14718:16;;14681:72:::1;::::0;:24;14718:13;;14732:1;;14718:16;::::1;;;;;:::i;14681:72::-;14658:3:::0;::::1;::::0;::::1;:::i;:::-;;;;14612:156;;;-1:-1:-1::0;14835:20:37;;14782:23:::1;::::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;:74:::1;::::0;:52:::1;:74::i;:::-;14905:10;14893;14876:55;14917:13;14876:55;;;;;;:::i;:::-;;;;;;;;14568:374;13889:1059:::0;;;;;:::o;17085:425::-;17219:7;17266:24;;;:12;:24;;;;;;;;:36;;;;;;;;-1:-1:-1;;;;;17266:47:37;;;;;;;;;17327:17;;;;:21;;;:50;;-1:-1:-1;17352:20:37;;:25;17327:50;:72;;;-1:-1:-1;17381:18:37;;;;;;17327:72;17323:111;;;17422:1;17415:8;;;;;17323:111;17450:23;;;;:11;:23;;;;;;;;:35;;;;;;;;:53;;:51;:53::i;:::-;17443:60;17085:425;-1:-1:-1;;;;;17085:425:37:o;2930:263::-;1334:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;3010:23:37;::::1;3002:60;;;::::0;-1:-1:-1;;;3002:60:37;;17369:2:48;3002:60:37::1;::::0;::::1;17351:21:48::0;17408:2;17388:18;;;17381:30;-1:-1:-1;;;17427:18:48;;;17420:54;17491:18;;3002:60:37::1;17167:348:48::0;3002:60:37::1;3094:8;::::0;;-1:-1:-1;;;;;3112:20:37;;::::1;-1:-1:-1::0;;;;;;3112:20:37;::::1;::::0;::::1;::::0;;;3148:38:::1;::::0;;3094:8;;;::::1;17732:34:48::0;;;17797:2;17782:18;;17775:43;;;;3148:38:37::1;::::0;17667:18:48;3148:38:37::1;;;;;;;;2992:201;2930:263:::0;:::o;3915:225::-;2295:23;;;;:11;:23;;;;;:33;3981:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;1815:1:2::1;2569:7;;:19:::0;2561:63:::1;;;;-1:-1:-1::0;;;2561:63:2::1;;;;;;;:::i;:::-;1815:1;2699:7;:18:::0;4016:19:37::2;4038:23:::0;;;:11:::2;:23;::::0;;;;:40:::2;::::0;:38:::2;:40::i;:::-;4016:62;;4109:10;4093:40;4121:11;4093:40;;;;10364:25:48::0;;10352:2;10337:18;;10218:177;4093:40:37::2;;;;;;;;-1:-1:-1::0;;1772:1:2::1;2872:7;:22:::0;-1:-1:-1;3915:225:37:o;4499:1044::-;2295:23;;;;:11;:23;;;;;:33;4735:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;4755:7:::1;2097:1;2087:7;:11;2079:35;;;;-1:-1:-1::0;;;2079:35:37::1;;;;;;;:::i;:::-;1815:1:2::2;2569:7;;:19:::0;2561:63:::2;;;;-1:-1:-1::0;;;2561:63:2::2;;;;;;;:::i;:::-;1815:1;2699:7;:18:::0;4787:23:37::3;4813::::0;;;:11:::3;:23;::::0;;;;;4881:15;4862:16:::3;4872:6:::0;4862:7;:16:::3;:::i;:::-;:34;;;;:::i;:::-;4846:50:::0;-1:-1:-1;4906:37:37::3;:7:::0;4846:50;4906:30:::3;:37::i;:::-;4953:18;4974:33;4993:10;5005:1;4974:18;:33::i;:::-;5017:23;5043::::0;;;:11:::3;:23;::::0;;;;;;;:35;;;;;;;;4953:54;;-1:-1:-1;5088:77:37::3;5043:35:::0;5111:7;5120:15;5137:6;5145:19;5088:22:::3;:77::i;:::-;5175:92;929:10:12::0;5239:8:37::3;::::0;-1:-1:-1;;;;;5239:8:37::3;5263:3;5250:9;:5:::0;5258:1:::3;5250:9;:::i;:::-;5249:17;;;;:::i;:::-;5193:13;::::0;::::3;::::0;-1:-1:-1;;;;;5193:13:37::3;::::0;5175:92;;:49:::3;:92::i;:::-;5282:17:::0;;:21;5278:171:::3;;5345:1;5327:15;:19;5319:56;;;::::0;-1:-1:-1;;;5319:56:37;;19126:2:48;5319:56:37::3;::::0;::::3;19108:21:48::0;19165:2;19145:18;;;19138:30;19204:26;19184:18;;;19177:54;19248:18;;5319:56:37::3;18924:348:48::0;5319:56:37::3;5389:49;5403:10;5415;5427;5389:13;:49::i;:::-;5464:72;::::0;;19479:25:48;;;19535:2;19520:18;;19513:34;;;19563:18;;;19556:34;;;5491:10:37;;5479;;5464:72:::3;::::0;19467:2:48;19452:18;5464:72:37::3;;;;;;;-1:-1:-1::0;;1772:1:2::2;2872:7;:22:::0;-1:-1:-1;;;;;;;;;;4499:1044:37:o;12904:222::-;2295:23;;;;:11;:23;;;;;:33;13048:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;13070:49:::1;13084:10;13096;13108;13070:13;:49::i;:::-;12904:222:::0;;;;:::o;2525:227::-;3111:19:1;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:1;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:1;1476:19:11;:23;;;3219:66:1;;-1:-1:-1;3268:12:1;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:1;;19803:2:48;3157:201:1;;;19785:21:48;19842:2;19822:18;;;19815:30;19881:34;19861:18;;;19854:62;-1:-1:-1;;;19932:18:48;;;19925:44;19986:19;;3157:201:1;19601:410:48;3157:201:1;3368:12;:16;;-1:-1:-1;;3368:16:1;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:1;;;;;3394:65;2593:16:37::1;:14;:16::i;:::-;2619:24;:22;:24::i;:::-;-1:-1:-1::0;;;;;2662:23:37;::::1;2654:60;;;::::0;-1:-1:-1;;;2654:60:37;;17369:2:48;2654:60:37::1;::::0;::::1;17351:21:48::0;17408:2;17388:18;;;17381:30;-1:-1:-1;;;17427:18:48;;;17420:54;17491:18;;2654:60:37::1;17167:348:48::0;2654:60:37::1;2725:8;:20:::0;;-1:-1:-1;;;;;;2725:20:37::1;-1:-1:-1::0;;;;;2725:20:37;::::1;;::::0;;3479:99:1;;;;3529:5;3513:21;;-1:-1:-1;;3513:21:1;;;3553:14;;-1:-1:-1;20168:36:48;;3553:14:1;;20156:2:48;20141:18;3553:14:1;20016:194:48;3479:99:1;3101:483;2525:227:37;:::o;9881:464::-;2295:23;;;;:11;:23;;;;;:33;10026:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;10048:24:::1;::::0;;;:12:::1;:24;::::0;;;;;;;:36;;;;;;;;-1:-1:-1;;;;;10048:51:37;::::1;::::0;;;;;;;;;:58;;-1:-1:-1;;10048:58:37::1;10102:4;10048:58;::::0;;10117:28;;;:16:::1;:28:::0;;;;;:40;;;;;;;;:55;;;;;;;;:78:::1;::::0;:76:::1;:78::i;:::-;10205:23;::::0;;;:11:::1;:23;::::0;;;;;;;:35;;;;;;;;:58:::1;::::0;:56:::1;:58::i;:::-;10279:59;::::0;-1:-1:-1;;;;;9437:32:48;;9419:51;;10312:10:37;;10300;;10279:59:::1;::::0;9407:2:48;9392:18;10279:59:37::1;9273:203:48::0;3434:354:37;3507:7;2097:1;2087:7;:11;2079:35;;;;-1:-1:-1;;;2079:35:37;;;;;;;:::i;:::-;1815:1:2::1;2569:7;;:19:::0;2561:63:::1;;;;-1:-1:-1::0;;;2561:63:2::1;;;;;;;:::i;:::-;1815:1;2699:7;:18:::0;-1:-1:-1;;;;;3547:20:37;::::2;3539:54;;;::::0;-1:-1:-1;;;3539:54:37;;20417:2:48;3539:54:37::2;::::0;::::2;20399:21:48::0;20456:2;20436:18;;;20429:30;-1:-1:-1;;;20475:18:48;;;20468:51;20536:18;;3539:54:37::2;20215:345:48::0;3539:54:37::2;3603:18;3624:20;:18;:20::i;:::-;3654:23;::::0;;;:11:::2;:23;::::0;;;;3603:41;;-1:-1:-1;3654:55:37::2;::::0;3693:6;3701:7;3654:38:::2;:55::i;:::-;3739:10:::0;3724:57:::2;929:10:12::0;3724:57:37::2;::::0;;-1:-1:-1;;;;;20823:15:48;;;20805:34;;20875:15;;;20870:2;20855:18;;20848:43;20907:18;;20900:34;;;20755:2;20740:18;3724:57:37::2;;;;;;;-1:-1:-1::0;;1772:1:2::1;2872:7;:22:::0;-1:-1:-1;;3434:354:37:o;9082:510::-;2295:23;;;;:11;:23;;;;;:33;9245:10;;-1:-1:-1;;;;;2295:33:37;929:10:12;2295:49:37;2287:93;;;;-1:-1:-1;;;2287:93:37;;;;;;;:::i;:::-;9265:4:::1;2097:1;2087:7;:11;2079:35;;;;-1:-1:-1::0;;;2079:35:37::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9289:27:37;::::2;9281:70;;;::::0;-1:-1:-1;;;9281:70:37;;21147:2:48;9281:70:37::2;::::0;::::2;21129:21:48::0;21186:2;21166:18;;;21159:30;21225:32;21205:18;;;21198:60;21275:18;;9281:70:37::2;20945:354:48::0;9281:70:37::2;9362:28;::::0;;;:16:::2;:28;::::0;;;;;;;:40;;;;;;;;-1:-1:-1;;;;;9362:55:37;::::2;::::0;;;;;;;:78:::2;::::0;9435:4;9362:72:::2;:78::i;:::-;9450:23;::::0;;;:11:::2;:23;::::0;;;;;;;:35;;;;;;;;:57:::2;::::0;9502:4;9450:51:::2;:57::i;:::-;9523:62;::::0;;-1:-1:-1;;;;;21496:32:48;;21478:51;;21560:2;21545:18;;21538:34;;;9553:10:37;;9541;;9523:62:::2;::::0;21451:18:48;9523:62:37::2;21304:274:48::0;2321:198:0;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;21785:2:48;2401:73:0::1;::::0;::::1;21767:21:48::0;21824:2;21804:18;;;21797:30;21863:34;21843:18;;;21836:62;-1:-1:-1;;;21914:18:48;;;21907:36;21960:19;;2401:73:0::1;21583:402:48::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;:::-;2321:198:::0;:::o;1402:159:43:-;1499:13;312:1;284:13;:25;;;:29;:57;;;;-1:-1:-1;318:23:43;;;;;;317:24;284:57;276:90;;;;-1:-1:-1;;;276:90:43;;;;;;;:::i;:::-;-1:-1:-1;1524:23:43::1;;:30:::0;;-1:-1:-1;;1524:30:43::1;1550:4;1524:30;::::0;;1402:159::o;3842:248:45:-;351:17;;;;3953:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;3978:8:::1;3973:72;;4030:4;4002:8;:24;;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;3973:72:45::1;4054:27;::::0;::::1;:29:::0;;;:27:::1;:29;::::0;::::1;:::i;:::-;;;;;;3842:248:::0;;;;:::o;1406:178::-;351:17;;;;1483:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;-1:-1:-1;1527:15:45::1;1503:21;::::0;::::1;:39:::0;1552:17:::1;;:25:::0;;-1:-1:-1;;1552:25:45::1;::::0;;1406:178::o;17830:980:37:-;17998:33;18034:28;;;:16;:28;;;;;;;;:40;;;;;;;;-1:-1:-1;;;;;18034:55:37;;;;;;;;;18125:23;;;:11;:23;;;;;:35;;;;;;;;18199:13;;;;18034:55;;18125:35;;18199:17;;;;:31;;;18229:1;18220:6;:10;18199:31;18195:258;;;18294:26;;;;18256:30;;;;:34;;18289:1;18256:34;:::i;:::-;:64;18255:187;;1257:3;18419:6;18403:7;:13;;;:22;;;;:::i;:::-;18402:40;;;;:::i;:::-;18255:187;;;18361:7;:17;;;18345:7;:13;;;:33;;;;:::i;:::-;18246:196;;18195:258;18463:28;;;;:16;:28;;;;;;;;:40;;;;;;;;-1:-1:-1;;;;;18463:55:37;;;;;;;;;:74;;18530:6;18463:66;:74::i;:::-;18594:16;;;18547:23;;;:11;:23;;;;;;;;:35;;;;;;;;:72;;18612:6;18547:46;:72::i;:::-;18629:70;18658:13;18692:6;18673:12;:16;;;:25;;;;:::i;:::-;18629:23;;;;:11;:23;;;;;;:70;:28;:70::i;:::-;18778:16;;18715:88;;;-1:-1:-1;;;;;23044:32:48;;23026:51;;23108:2;23093:18;;23086:34;;;;23136:18;;23129:34;;;18751:10:37;;18739;;18715:88;;23014:2:48;22999:18;18715:88:37;;;;;;;17988:822;;;17830:980;;;;:::o;19024:489::-;19156:24;;;;:12;:24;;;;;;;;:36;;;;;;;;-1:-1:-1;;;;;19156:47:37;;;;;;;;;:65;;:63;:65::i;:::-;19232:15;19250:23;;;:11;:23;;;;;;;;:35;;;;;;;;:53;;:51;:53::i;:::-;19313:23;;;;:11;:23;;;;;;;;:35;;;;;;;;19232:71;;-1:-1:-1;19313:60:37;;19232:71;19313:51;:60::i;:::-;19383:23;;;;:11;:23;;;;;:48;;19412:9;19423:7;19383:28;:48::i;:::-;19447:59;;;-1:-1:-1;;;;;21496:32:48;;21478:51;;21560:2;21545:18;;21538:34;;;19475:10:37;;19463;;19447:59;;21451:18:48;19447:59:37;21304:274:48;2577:192:46;2709:19;2681:8;:24;;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;2738:22:46;;;:24;;;:22;:24;;;:::i;:::-;;;;;;2577:192;;:::o;4337:575:45:-;351:17;;;;4433:19;;4414:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;4503:8:::1;:30;;;4472:8;:27;;;:61;4464:103;;;::::0;-1:-1:-1;;;4464:103:45;;23376:2:48;4464:103:45::1;::::0;::::1;23358:21:48::0;23415:2;23395:18;;;23388:30;23454:31;23434:18;;;23427:59;23503:18;;4464:103:45::1;23174:353:48::0;4464:103:45::1;4609:24;::::0;::::1;::::0;4591:15;;:42:::1;::::0;4609:24;4591:42:::1;:::i;:::-;4577:56;;4647:8;:23;;;4674:1;4647:28:::0;4643:73:::1;;4692:24;::::0;::::1;::::0;4677:39:::1;::::0;;::::1;:::i;:::-;;;4643:73;4730:8;:27;;;4761:1;4730:32:::0;4726:67:::1;;4779:14;::::0;::::1;::::0;4764:29:::1;::::0;;::::1;:::i;:::-;;;4726:67;-1:-1:-1::0;4827:15:45::1;4803:21;::::0;::::1;:39:::0;4852:17:::1;::::0;;::::1;:25:::0;;-1:-1:-1;;4852:25:45::1;::::0;;4337:575;:::o;3036:199:46:-;3130:15;;3126:60;;3175:11;3147:8;:24;;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;;3126:60:46;3196:30;;;:32;;;:30;:32;;;:::i;744:135:44:-;261:21;;825:9;;261:25;;;;:49;;-1:-1:-1;291:19:44;;;;;;290:20;261:49;253:78;;;;-1:-1:-1;;;253:78:44;;23734:2:48;253:78:44;;;23716:21:48;23773:2;23753:18;;;23746:30;-1:-1:-1;;;23792:18:48;;;23785:46;23848:18;;253:78:44;23532:340:48;253:78:44;-1:-1:-1;846:19:44::1;;:26:::0;;-1:-1:-1;;846:26:44::1;868:4;846:26;::::0;;744:135::o;2715:155:45:-;351:17;;;;2810:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;2857:6:::1;2830:8;:23;;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;2715:155:45:o;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;24079:2:48;1654:68:0;;;24061:21:48;;;24098:18;;;24091:30;24157:34;24137:18;;;24130:62;24209:18;;1654:68:0;23877:356:48;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;451:186:44:-;528:21;;:26;520:61;;;;-1:-1:-1;;;520:61:44;;24440:2:48;520:61:44;;;24422:21:48;24479:2;24459:18;;;24452:30;-1:-1:-1;;;24498:18:48;;;24491:52;24560:18;;520:61:44;24238:346:48;520:61:44;615:15;591:39;;451:186::o;2062:245:45:-;351:17;;;;2154:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;219:2:::1;2208:6;2182:8;:23;;;:32;;;;:::i;:::-;:49;;2174:83;;;::::0;-1:-1:-1;;;2174:83:45;;24791:2:48;2174:83:45::1;::::0;::::1;24773:21:48::0;24830:2;24810:18;;;24803:30;-1:-1:-1;;;24849:18:48;;;24842:51;24910:18;;2174:83:45::1;24589:345:48::0;2174:83:45::1;2294:6;2267:8;:23;;;:33;;;;;;;:::i;5044:370::-:0;5118:7;5137:15;5182:8;:28;;;5155:8;:24;;;:55;;;;:::i;:::-;5137:73;;5279:15;5324:8;:23;;;5297:8;:24;;;:50;;;;:::i;:::-;5279:68;-1:-1:-1;5375:11:45;5279:68;5375:1;:11;:::i;:::-;5365:7;:21;5364:43;;5400:7;5364:43;;;5390:7;5364:43;5357:50;5044:370;-1:-1:-1;;;;5044:370:45:o;1202:545:46:-;1270:7;1297:8;:21;;;1322:1;1297:26;1289:63;;;;-1:-1:-1;;;1289:63:46;;25141:2:48;1289:63:46;;;25123:21:48;25180:2;25160:18;;;25153:30;25219:26;25199:18;;;25192:54;25263:18;;1289:63:46;24939:348:48;1289:63:46;1396:8;:30;;;1370:8;:22;;;:56;1362:93;;;;-1:-1:-1;;;1362:93:46;;25494:2:48;1362:93:46;;;25476:21:48;25533:2;25513:18;;;25506:30;25572:26;25552:18;;;25545:54;25616:18;;1362:93:46;25292:348:48;1362:93:46;1489:15;1465:21;;;:39;1554:24;;;;1536:15;;;;1514:19;;1536:42;;;:::i;:::-;1514:64;-1:-1:-1;1592:15:46;;1588:125;;1670:18;;;1641:14;;;1623:79;;-1:-1:-1;;;;;1641:14:46;;;;1670:18;1690:11;1623:46;:79::i;2012:384::-;2141:21;;;;:26;2133:58;;;;-1:-1:-1;;;2133:58:46;;25847:2:48;2133:58:46;;;25829:21:48;25886:2;25866:18;;;25859:30;-1:-1:-1;;;25905:18:48;;;25898:49;25964:18;;2133:58:46;25645:343:48;2133:58:46;2255:12;2228:8;:24;;;:39;;;;:::i;:::-;2209:8;:15;;;:58;;2201:101;;;;-1:-1:-1;;;2201:101:46;;26195:2:48;2201:101:46;;;26177:21:48;26234:2;26214:18;;;26207:30;26273:32;26253:18;;;26246:60;26323:18;;2201:101:46;25993:354:48;2201:101:46;2340:12;2312:8;:24;;;:40;;;;;;;:::i;:::-;;;;;;;;2388:1;2362:8;:22;;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;2012:384:46:o;20343:250:37:-;20429:18;20472:19;20484:6;20472:11;:19::i;:::-;20509:23;;;;:11;:23;;;;;;;;:35;;;;;;;;:47;;;20459:32;;-1:-1:-1;20509:52:37;20501:85;;;;-1:-1:-1;;;20501:85:37;;26554:2:48;20501:85:37;;;26536:21:48;26593:2;26573:18;;;26566:30;-1:-1:-1;;;26612:18:48;;;26605:50;26672:18;;20501:85:37;26352:344:48;710:587:45;928:19;924:1;:23;:67;;;;;171:2;951:19;:40;;924:67;916:109;;;;-1:-1:-1;;;916:109:45;;26903:2:48;916:109:45;;;26885:21:48;26942:2;26922:18;;;26915:30;26981:31;26961:18;;;26954:59;27030:18;;916:109:45;26701:353:48;916:109:45;1035:25;;;1070:24;;;:46;;;;1126:14;;;:23;1159:27;;;:49;1241:15;1218:20;;;:38;1266:17;;:24;;-1:-1:-1;;1266:24:45;1286:4;1266:24;;;710:587::o;1040:252:5:-;1216:68;;-1:-1:-1;;;;;20823:15:48;;;1216:68:5;;;20805:34:48;20875:15;;20855:18;;;20848:43;20907:18;;;20900:34;;;1189:96:5;;1209:5;;-1:-1:-1;;;1239:27:5;20740:18:48;;1216:68:5;;;;-1:-1:-1;;1216:68:5;;;;;;;;;;;;;;-1:-1:-1;;;;;1216:68:5;-1:-1:-1;;;;;;1216:68:5;;;;;;;;;;1189:19;:96::i;12106:574:37:-;12274:1;12254:10;:17;:21;12246:56;;;;-1:-1:-1;;;12246:56:37;;16003:2:48;12246:56:37;;;15985:21:48;16042:2;16022:18;;;16015:30;-1:-1:-1;;;16061:18:48;;;16054:52;16123:18;;12246:56:37;15801:346:48;12246:56:37;12318:9;12313:217;12337:10;:17;12333:1;:21;12313:217;;;12408:1;-1:-1:-1;;;;;12383:27:37;:10;12394:1;12383:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;12383:27:37;;12375:64;;;;-1:-1:-1;;;12375:64:37;;27261:2:48;12375:64:37;;;27243:21:48;27300:2;27280:18;;;27273:30;27339:26;27319:18;;;27312:54;27383:18;;12375:64:37;27059:348:48;12375:64:37;12453:24;;;;:12;:24;;;;;;;;:36;;;;;;;;12490:13;;12453:66;;:24;12490:10;;12501:1;;12490:13;;;;;;:::i;12453:66::-;12356:3;;;;:::i;:::-;;;;12313:217;;;-1:-1:-1;12589:17:37;;12539:23;;;;:11;:23;;;;;;;;:35;;;;;;;;:68;;:49;:68::i;:::-;12650:10;12638;12623:50;12662:10;12623:50;;;;;;:::i;1003:95:0:-;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1065:26:0::1;:24;:26::i;1853:111:2:-:0;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1923:34:2::1;:32;:34::i;1133:263:43:-:0;1231:13;312:1;284:13;:25;;;:29;:57;;;;-1:-1:-1;318:23:43;;;;;;317:24;284:57;276:90;;;;-1:-1:-1;;;276:90:43;;;;;;;:::i;:::-;1264:29:::1;::::0;::::1;::::0;:34;1256:76:::1;;;::::0;-1:-1:-1;;;1256:76:43;;28026:2:48;1256:76:43::1;::::0;::::1;28008:21:48::0;28065:2;28045:18;;;28038:30;28104:31;28084:18;;;28077:59;28153:18;;1256:76:43::1;27824:353:48::0;1256:76:43::1;-1:-1:-1::0;1374:15:43::1;1342:29;::::0;;::::1;:47:::0;1133:263::o;3554:142:45:-;351:17;;;;3637:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;3657:30:::1;::::0;::::1;:32:::0;;;:30:::1;:32;::::0;::::1;:::i;19960:199:37:-:0;20012:18;20055:14;20067:1;20055:11;:14::i;:::-;20087:23;;;;:11;:23;;;;;:35;;;20042:27;;-1:-1:-1;20087:40:37;20079:73;;;;-1:-1:-1;;;20079:73:37;;28384:2:48;20079:73:37;;;28366:21:48;28423:2;28403:18;;;28396:30;-1:-1:-1;;;28442:18:48;;;28435:50;28502:18;;20079:73:37;28182:344:48;20079:73:37;19960:199;:::o;570:391:46:-;702:31;;-1:-1:-1;;;;;;702:31:46;;;723:10;702:31;;;;;;743:14;;:23;;-1:-1:-1;;;;;743:23:46;;;;;;;;776:15;;;:25;;;834:15;811:20;;;:38;860:94;;743:23;931:4;794:7;860:50;:94::i;:::-;570:391;;;:::o;656:327:43:-;759:23;;;;;;;:57;;-1:-1:-1;786:25:43;;;;:30;759:57;751:96;;;;-1:-1:-1;;;751:96:43;;28733:2:48;751:96:43;;;28715:21:48;28772:2;28752:18;;;28745:30;28811:28;28791:18;;;28784:56;28857:18;;751:96:43;28531:350:48;751:96:43;858:24;;892:23;;;:31;;-1:-1:-1;;892:31:43;;;961:15;933:25;;;;:43;656:327::o;3016:409:45:-;351:17;;;;3111:8;;351:17;;343:45;;;;-1:-1:-1;;;343:45:45;;;;;;;:::i;:::-;3185:7:::1;3158:8;:24;;;:34;;;;:::i;:::-;3139:15:::0;;:53:::1;;3131:96;;;::::0;-1:-1:-1;;;3131:96:45;;29088:2:48;3131:96:45::1;::::0;::::1;29070:21:48::0;29127:2;29107:18;;;29100:30;29166:32;29146:18;;;29139:60;29216:18;;3131:96:45::1;28886:354:48::0;3131:96:45::1;3275:8;:27;;;3245:8;:27;;;:57;3237:97;;;::::0;-1:-1:-1;;;3237:97:45;;29447:2:48;3237:97:45::1;::::0;::::1;29429:21:48::0;29486:2;29466:18;;;29459:30;29525:29;29505:18;;;29498:57;29572:18;;3237:97:45::1;29245:351:48::0;3237:97:45::1;3372:7;3344:8;:24;;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;3389:27:45::1;::::0;::::1;:29:::0;;;:27:::1;:29;::::0;::::1;:::i;:::-;;;;;;3016:409:::0;;;:::o;1709:388:43:-;1813:13;312:1;284:13;:25;;;:29;:57;;;;-1:-1:-1;318:23:43;;;;;;317:24;284:57;276:90;;;;-1:-1:-1;;;276:90:43;;;;;;;:::i;:::-;1846:25:::1;::::0;::::1;::::0;:30;1838:62:::1;;;::::0;-1:-1:-1;;;1838:62:43;;29803:2:48;1838:62:43::1;::::0;::::1;29785:21:48::0;29842:2;29822:18;;;29815:30;-1:-1:-1;;;29861:18:48;;;29854:49;29920:18;;1838:62:43::1;29601:343:48::0;1838:62:43::1;1938:15;1910:25;::::0;::::1;:43:::0;1967:10;;1963:128:::1;;-1:-1:-1::0;1993:19:43::1;::::0;::::1;:28:::0;2065:15:::1;2035:27;::::0;;::::1;:45:::0;1709:388::o;5851:284:45:-;5999:4;5976:8;:19;;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;6017:10:45;;6013:116;;6065:6;6043:8;:18;;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;;6085:31:45;;;:33;;;:31;:33;;;:::i;3409:238:46:-;3557:7;3534:8;:19;;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;3592:14:46;;;;3574:66;;-1:-1:-1;;;;;3592:14:46;3621:9;3632:7;3574:46;:66::i;976:216:44:-;261:21;;1057:9;;261:25;;;;:49;;-1:-1:-1;291:19:44;;;;;;290:20;261:49;253:78;;;;-1:-1:-1;;;253:78:44;;23734:2:48;253:78:44;;;23716:21:48;23773:2;23753:18;;;23746:30;-1:-1:-1;;;23792:18:48;;;23785:46;23848:18;;253:78:44;23532:340:48;253:78:44;1086:18:::1;::::0;::::1;::::0;:23;1078:61:::1;;;::::0;-1:-1:-1;;;1078:61:44;;30151:2:48;1078:61:44::1;::::0;::::1;30133:21:48::0;30190:2;30170:18;;;30163:30;30229:27;30209:18;;;30202:55;30274:18;;1078:61:44::1;29949:349:48::0;1078:61:44::1;-1:-1:-1::0;1170:15:44::1;1149:18;::::0;;::::1;:36:::0;976:216::o;5544:133:45:-;5663:7;5631:8;:28;;;:39;;;;;;;:::i;818:216:5:-;968:58;;-1:-1:-1;;;;;21496:32:48;;968:58:5;;;21478:51:48;21545:18;;;21538:34;;;941:86:5;;961:5;;-1:-1:-1;;;991:23:5;21451:18:48;;968:58:5;21304:274:48;19675:170:37;19734:7;929:10:12;19811:16:37;19826:1;19811:12;:16;:::i;:::-;19770:67;;30508:2:48;30504:15;;;;-1:-1:-1;;30500:53:48;19770:67:37;;;30488:66:48;19801:27:37;30570:12:48;;;30563:28;30607:12;;;30600:28;;;30644:12;;19770:67:37;;;;;;;;;;;;19760:78;;;;;;19753:85;;19675:170;;;:::o;3868:717:5:-;4298:23;4324:69;4352:4;4324:69;;;;;;;;;;;;;;;;;4332:5;-1:-1:-1;;;;;4324:27:5;;;:69;;;;;:::i;:::-;4407:17;;4298:95;;-1:-1:-1;4407:21:5;4403:176;;4502:10;4491:30;;;;;;;;;;;;:::i;:::-;4483:85;;;;-1:-1:-1;;;4483:85:5;;31119:2:48;4483:85:5;;;31101:21:48;31158:2;31138:18;;;31131:30;31197:34;31177:18;;;31170:62;-1:-1:-1;;;31248:18:48;;;31241:40;31298:19;;4483:85:5;30917:406:48;1104:111:0;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1176:32:0::1;929:10:12::0;1176:18:0::1;:32::i;1970:109:2:-:0;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1772:1:2::1;2050:7;:22:::0;1970:109::o;3872:223:11:-;4005:12;4036:52;4058:6;4066:4;4072:1;4075:12;4005;-1:-1:-1;;;;;1476:19:11;;;5239:60;;;;-1:-1:-1;;;5239:60:11;;31937:2:48;5239:60:11;;;31919:21:48;31976:2;31956:18;;;31949:30;32015:31;31995:18;;;31988:59;32064:18;;5239:60:11;31735:353:48;5239:60:11;5311:12;5325:23;5352:6;-1:-1:-1;;;;;5352:11:11;5371:5;5378:4;5352:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5310:73;;;;5400:51;5417:7;5426:10;5438:12;5400:16;:51::i;:::-;5393:58;4959:499;-1:-1:-1;;;;;;;4959:499:11:o;6622:742::-;6768:12;6796:7;6792:566;;;-1:-1:-1;6826:10:11;6819:17;;6792:566;6937:17;;:21;6933:415;;7181:10;7175:17;7241:15;7228:10;7224:2;7220:19;7213:44;6933:415;7320:12;7313:20;;-1:-1:-1;;;7313:20:11;;;;;;;;:::i;14:248:48:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:48;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:48:o;267:127::-;328:10;323:3;319:20;316:1;309:31;359:4;356:1;349:15;383:4;380:1;373:15;399:275;470:2;464:9;535:2;516:13;;-1:-1:-1;;512:27:48;500:40;;570:18;555:34;;591:22;;;552:62;549:88;;;617:18;;:::i;:::-;653:2;646:22;399:275;;-1:-1:-1;399:275:48:o;679:183::-;739:4;772:18;764:6;761:30;758:56;;;794:18;;:::i;:::-;-1:-1:-1;839:1:48;835:14;851:4;831:25;;679:183::o;867:173::-;935:20;;-1:-1:-1;;;;;984:31:48;;974:42;;964:70;;1030:1;1027;1020:12;964:70;867:173;;;:::o;1045:668::-;1099:5;1152:3;1145:4;1137:6;1133:17;1129:27;1119:55;;1170:1;1167;1160:12;1119:55;1206:6;1193:20;1232:4;1256:60;1272:43;1312:2;1272:43;:::i;:::-;1256:60;:::i;:::-;1350:15;;;1436:1;1432:10;;;;1420:23;;1416:32;;;1381:12;;;;1460:15;;;1457:35;;;1488:1;1485;1478:12;1457:35;1524:2;1516:6;1512:15;1536:148;1552:6;1547:3;1544:15;1536:148;;;1618:23;1637:3;1618:23;:::i;:::-;1606:36;;1662:12;;;;1569;;1536:148;;;-1:-1:-1;1702:5:48;1045:668;-1:-1:-1;;;;;;1045:668:48:o;1718:118::-;1804:5;1797:13;1790:21;1783:5;1780:32;1770:60;;1826:1;1823;1816:12;1841:862;1983:6;1991;1999;2007;2015;2068:3;2056:9;2047:7;2043:23;2039:33;2036:53;;;2085:1;2082;2075:12;2036:53;2121:9;2108:23;2098:33;;2178:2;2167:9;2163:18;2150:32;2140:42;;2233:2;2222:9;2218:18;2205:32;2256:18;2297:2;2289:6;2286:14;2283:34;;;2313:1;2310;2303:12;2283:34;2336:61;2389:7;2380:6;2369:9;2365:22;2336:61;:::i;:::-;2326:71;;2450:2;2439:9;2435:18;2422:32;2406:48;;2479:2;2469:8;2466:16;2463:36;;;2495:1;2492;2485:12;2463:36;;2518:63;2573:7;2562:8;2551:9;2547:24;2518:63;:::i;:::-;2508:73;;;2631:3;2620:9;2616:19;2603:33;2645:28;2667:5;2645:28;:::i;:::-;2692:5;2682:15;;;1841:862;;;;;;;;:::o;2708:452::-;2791:6;2799;2807;2815;2868:3;2856:9;2847:7;2843:23;2839:33;2836:53;;;2885:1;2882;2875:12;2836:53;2921:9;2908:23;2898:33;;2978:2;2967:9;2963:18;2950:32;2940:42;;3001:38;3035:2;3024:9;3020:18;3001:38;:::i;:::-;2991:48;;3089:2;3078:9;3074:18;3061:32;3102:28;3124:5;3102:28;:::i;:::-;2708:452;;;;-1:-1:-1;2708:452:48;;-1:-1:-1;;2708:452:48:o;4664:322::-;4741:6;4749;4757;4810:2;4798:9;4789:7;4785:23;4781:32;4778:52;;;4826:1;4823;4816:12;4778:52;4862:9;4849:23;4839:33;;4919:2;4908:9;4904:18;4891:32;4881:42;;4942:38;4976:2;4965:9;4961:18;4942:38;:::i;:::-;4932:48;;4664:322;;;;;:::o;5635:180::-;5694:6;5747:2;5735:9;5726:7;5722:23;5718:32;5715:52;;;5763:1;5760;5753:12;5715:52;-1:-1:-1;5786:23:48;;5635:180;-1:-1:-1;5635:180:48:o;6641:1502::-;6811:6;6819;6827;6835;6843;6896:3;6884:9;6875:7;6871:23;6867:33;6864:53;;;6913:1;6910;6903:12;6864:53;6949:9;6936:23;6926:33;;6978:2;7027;7016:9;7012:18;6999:32;6989:42;;7082:2;7071:9;7067:18;7054:32;7105:18;7146:2;7138:6;7135:14;7132:34;;;7162:1;7159;7152:12;7132:34;7185:61;7238:7;7229:6;7218:9;7214:22;7185:61;:::i;:::-;7175:71;;7299:2;7288:9;7284:18;7271:32;7255:48;;7328:2;7318:8;7315:16;7312:36;;;7344:1;7341;7334:12;7312:36;7367:63;7422:7;7411:8;7400:9;7396:24;7367:63;:::i;:::-;7357:73;;7483:3;7472:9;7468:19;7455:33;7439:49;;7513:2;7503:8;7500:16;7497:36;;;7529:1;7526;7519:12;7497:36;-1:-1:-1;7552:24:48;;7607:4;7599:13;;7595:27;-1:-1:-1;7585:55:48;;7636:1;7633;7626:12;7585:55;7672:2;7659:16;7695:60;7711:43;7751:2;7711:43;:::i;7695:60::-;7789:15;;;7871:1;7867:10;;;;7859:19;;7855:28;;;7820:12;;;;7895:19;;;7892:39;;;7927:1;7924;7917:12;7892:39;7951:11;;;;7971:142;7987:6;7982:3;7979:15;7971:142;;;8053:17;;8041:30;;8004:12;;;;8091;;;;7971:142;;;8132:5;8122:15;;;;;;;6641:1502;;;;;;;;:::o;8148:484::-;8250:6;8258;8266;8319:2;8307:9;8298:7;8294:23;8290:32;8287:52;;;8335:1;8332;8325:12;8287:52;8371:9;8358:23;8348:33;;8428:2;8417:9;8413:18;8400:32;8390:42;;8483:2;8472:9;8468:18;8455:32;8510:18;8502:6;8499:30;8496:50;;;8542:1;8539;8532:12;8496:50;8565:61;8618:7;8609:6;8598:9;8594:22;8565:61;:::i;:::-;8555:71;;;8148:484;;;;;:::o;9481:732::-;9617:6;9625;9633;9641;9694:3;9682:9;9673:7;9669:23;9665:33;9662:53;;;9711:1;9708;9701:12;9662:53;9747:9;9734:23;9724:33;;9804:2;9793:9;9789:18;9776:32;9766:42;;9859:2;9848:9;9844:18;9831:32;9882:18;9923:2;9915:6;9912:14;9909:34;;;9939:1;9936;9929:12;9909:34;9962:61;10015:7;10006:6;9995:9;9991:22;9962:61;:::i;:::-;9952:71;;10076:2;10065:9;10061:18;10048:32;10032:48;;10105:2;10095:8;10092:16;10089:36;;;10121:1;10118;10111:12;10089:36;;10144:63;10199:7;10188:8;10177:9;10173:24;10144:63;:::i;:::-;10134:73;;;9481:732;;;;;;;:::o;10400:186::-;10459:6;10512:2;10500:9;10491:7;10487:23;10483:32;10480:52;;;10528:1;10525;10518:12;10480:52;10551:29;10570:9;10551:29;:::i;10591:691::-;10720:6;10728;10736;10744;10752;10760;10813:3;10801:9;10792:7;10788:23;10784:33;10781:53;;;10830:1;10827;10820:12;10781:53;10866:9;10853:23;10843:33;;10923:2;10912:9;10908:18;10895:32;10885:42;;10974:2;10963:9;10959:18;10946:32;10936:42;;11025:2;11014:9;11010:18;10997:32;10987:42;;11076:3;11065:9;11061:19;11048:33;11038:43;;11132:3;11121:9;11117:19;11104:33;11160:18;11152:6;11149:30;11146:50;;;11192:1;11189;11182:12;11146:50;11215:61;11268:7;11259:6;11248:9;11244:22;11215:61;:::i;:::-;11205:71;;;10591:691;;;;;;;;:::o;11287:254::-;11355:6;11363;11416:2;11404:9;11395:7;11391:23;11387:32;11384:52;;;11432:1;11429;11422:12;11384:52;11455:29;11474:9;11455:29;:::i;:::-;11445:39;11531:2;11516:18;;;;11503:32;;-1:-1:-1;;;11287:254:48:o;11546:391::-;11632:6;11640;11648;11656;11709:3;11697:9;11688:7;11684:23;11680:33;11677:53;;;11726:1;11723;11716:12;11677:53;11762:9;11749:23;11739:33;;11819:2;11808:9;11804:18;11791:32;11781:42;;11842:38;11876:2;11865:9;11861:18;11842:38;:::i;:::-;11546:391;;;;-1:-1:-1;11832:48:48;;11927:2;11912:18;11899:32;;-1:-1:-1;;11546:391:48:o;12301:355::-;12503:2;12485:21;;;12542:2;12522:18;;;12515:30;12581:33;12576:2;12561:18;;12554:61;12647:2;12632:18;;12301:355::o;13371:127::-;13432:10;13427:3;13423:20;13420:1;13413:31;13463:4;13460:1;13453:15;13487:4;13484:1;13477:15;13503:127;13564:10;13559:3;13555:20;13552:1;13545:31;13595:4;13592:1;13585:15;13619:4;13616:1;13609:15;13635:135;13674:3;13695:17;;;13692:43;;13715:18;;:::i;:::-;-1:-1:-1;13762:1:48;13751:13;;13635:135::o;13775:128::-;13842:9;;;13863:11;;;13860:37;;;13877:18;;:::i;13908:125::-;13973:9;;;13994:10;;;13991:36;;;14007:18;;:::i;16152:658::-;16323:2;16375:21;;;16445:13;;16348:18;;;16467:22;;;16294:4;;16323:2;16546:15;;;;16520:2;16505:18;;;16294:4;16589:195;16603:6;16600:1;16597:13;16589:195;;;16668:13;;-1:-1:-1;;;;;16664:39:48;16652:52;;16759:15;;;;16724:12;;;;16700:1;16618:9;16589:195;;;-1:-1:-1;16801:3:48;;16152:658;-1:-1:-1;;;;;;16152:658:48:o;17829:355::-;18031:2;18013:21;;;18070:2;18050:18;;;18043:30;18109:33;18104:2;18089:18;;18082:61;18175:2;18160:18;;17829:355::o;18189:335::-;18391:2;18373:21;;;18430:2;18410:18;;;18403:30;-1:-1:-1;;;18464:2:48;18449:18;;18442:41;18515:2;18500:18;;18189:335::o;18529:168::-;18569:7;18635:1;18631;18627:6;18623:14;18620:1;18617:21;18612:1;18605:9;18598:17;18594:45;18591:71;;;18642:18;;:::i;:::-;-1:-1:-1;18682:9:48;;18529:168::o;18702:217::-;18742:1;18768;18758:132;;18812:10;18807:3;18803:20;18800:1;18793:31;18847:4;18844:1;18837:15;18875:4;18872:1;18865:15;18758:132;-1:-1:-1;18904:9:48;;18702:217::o;21990:344::-;22192:2;22174:21;;;22231:2;22211:18;;;22204:30;-1:-1:-1;;;22265:2:48;22250:18;;22243:50;22325:2;22310:18;;21990:344::o;22339:339::-;22541:2;22523:21;;;22580:2;22560:18;;;22553:30;-1:-1:-1;;;22614:2:48;22599:18;;22592:45;22669:2;22654:18;;22339:339::o;22683:136::-;22722:3;22750:5;22740:39;;22759:18;;:::i;:::-;-1:-1:-1;;;22795:18:48;;22683:136::o;27412:407::-;27614:2;27596:21;;;27653:2;27633:18;;;27626:30;27692:34;27687:2;27672:18;;27665:62;-1:-1:-1;;;27758:2:48;27743:18;;27736:41;27809:3;27794:19;;27412:407::o;30667:245::-;30734:6;30787:2;30775:9;30766:7;30762:23;30758:32;30755:52;;;30803:1;30800;30793:12;30755:52;30835:9;30829:16;30854:28;30876:5;30854:28;:::i;32093:250::-;32178:1;32188:113;32202:6;32199:1;32196:13;32188:113;;;32278:11;;;32272:18;32259:11;;;32252:39;32224:2;32217:10;32188:113;;;-1:-1:-1;;32335:1:48;32317:16;;32310:27;32093:250::o;32348:287::-;32477:3;32515:6;32509:13;32531:66;32590:6;32585:3;32578:4;32570:6;32566:17;32531:66;:::i;:::-;32613:16;;;;;32348:287;-1:-1:-1;;32348:287:48:o;32640:396::-;32789:2;32778:9;32771:21;32752:4;32821:6;32815:13;32864:6;32859:2;32848:9;32844:18;32837:34;32880:79;32952:6;32947:2;32936:9;32932:18;32927:2;32919:6;32915:15;32880:79;:::i;:::-;33020:2;32999:15;-1:-1:-1;;32995:29:48;32980:45;;;;33027:2;32976:54;;32640:396;-1:-1:-1;;32640:396:48:o", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mgp\",\"type\":\"uint256\"}],\"name\":\"AddedCollaborator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"observers\",\"type\":\"address[]\"}],\"name\":\"AddedObservers\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"}],\"name\":\"ApprovedCollaborator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"}],\"name\":\"ApprovedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revertedBudget\",\"type\":\"uint256\"}],\"name\":\"CanceledPackage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"observerBudget\",\"type\":\"uint256\"}],\"name\":\"CreatedPackage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"}],\"name\":\"CreatedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"budgetLeft\",\"type\":\"uint256\"}],\"name\":\"FinishedPackage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budgetLeft\",\"type\":\"uint256\"}],\"name\":\"FinishedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mgp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"}],\"name\":\"PaidCollaboratorRewards\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"PaidObserverFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId_\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId_\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator_\",\"type\":\"address\"}],\"name\":\"RemovedCollaborator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"observers\",\"type\":\"address[]\"}],\"name\":\"RemovedObservers\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"}],\"name\":\"StartedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldTreasury\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"UpdatedTreasury\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"PCT_PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_mgp\",\"type\":\"uint256\"}],\"name\":\"addCollaborator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"}],\"name\":\"addObservers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"}],\"name\":\"approveCollaborator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_collaborators\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"_workStarted\",\"type\":\"bool\"}],\"name\":\"cancelPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_observerBudget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_collaboratorsLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"}],\"name\":\"createPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"budget_\",\"type\":\"uint256\"}],\"name\":\"createProject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_collaborators\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_scores\",\"type\":\"uint256[]\"}],\"name\":\"finishPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"}],\"name\":\"finishProject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"}],\"name\":\"getCollaboratorData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"mgp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeCreated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeMgpApproved\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeMgpPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeBonusPaid\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isRemoved\",\"type\":\"bool\"}],\"internalType\":\"structCollaborator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"}],\"name\":\"getCollaboratorRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_observer\",\"type\":\"address\"}],\"name\":\"getObserverData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"timeCreated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timePaid\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isRemoved\",\"type\":\"bool\"}],\"internalType\":\"structObserver\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_observer\",\"type\":\"address\"}],\"name\":\"getObserverFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"}],\"name\":\"getPackageData\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetAllocated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetObservers\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetObserversPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bonusPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collaboratorsPaidBonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeCreated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeFinished\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalObservers\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalCollaborators\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collaboratorsLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"approvedCollaborators\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeCanceled\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"internalType\":\"structPackage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"}],\"name\":\"getProjectData\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetAllocated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"budgetPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeCreated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeFinished\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalPackages\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalFinishedPackages\",\"type\":\"uint256\"}],\"internalType\":\"structProject\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_shouldPayMgp\",\"type\":\"bool\"}],\"name\":\"removeCollaborator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"}],\"name\":\"removeObservers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"}],\"name\":\"selfRemove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_observersIn\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_observersOut\",\"type\":\"address[]\"}],\"name\":\"updateObservers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury_\",\"type\":\"address\"}],\"name\":\"updateTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b5061398f806100206000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806371af530b116100de578063be06555e11610097578063e1d8451411610071578063e1d8451414610519578063e82d657214610523578063ec104ff114610536578063f2fde38b1461054957600080fd5b8063be06555e146104e0578063c4d66de8146104f3578063dcce114e1461050657600080fd5b806371af530b146104625780637cbe62c6146104755780637f51bb1f1461049657806385ceab29146104a95780638da5cb5b146104bc578063b2b57114146104cd57600080fd5b80632926aa80116101305780632926aa80146103785780633a7efc841461038b57806358ff3e471461039e578063590ab7db146103f857806361d027b31461042f578063715018a61461045a57600080fd5b806303a1fc2214610178578063085f8a9c1461018d5780630eae9d88146101a057806320000478146101b35780632008002e1461028557806323d683e7146102f0575b600080fd5b61018b610186366004613192565b61055c565b005b61018b61019b3660046132bb565b610661565b61018b6101ae366004613347565b610889565b6101c66101c1366004613192565b6109f1565b60405161027c9190815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018080830151908201526101a080830151908201526101c080830151908201526101e0918201511515918101919091526102000190565b60405180910390f35b61029861029336600461338f565b610b4a565b60405161027c9190600060e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015292915050565b6103036102fe3660046133c4565b610c12565b60405161027c919081516001600160a01b0390811682526020808401519091169082015260408083015190820152606080830151908201526080808301519082015260a0828101519082015260c0808301519082015260e0808301519082015261010091820151918101919091526101200190565b61018b6103863660046133dd565b610cf8565b61018b6103993660046134cf565b611041565b6103e36103ac36600461338f565b6000928352609b602090815260408085209385529281528284206001600160a01b0392909216845252902080546001909101549091565b6040805192835260208301919091520161027c565b61040b61040636600461338f565b6111a4565b6040805182518152602080840151908201529181015115159082015260600161027c565b609754610442906001600160a01b031681565b6040516001600160a01b03909116815260200161027c565b61018b611222565b61018b61047036600461351f565b611236565b61048861048336600461338f565b61146b565b60405190815260200161027c565b61018b6104a4366004613596565b6114ef565b61018b6104b73660046133c4565b6115aa565b6033546001600160a01b0316610442565b61018b6104db3660046135b1565b611666565b61018b6104ee3660046134cf565b611843565b61018b610501366004613596565b61188c565b61018b61051436600461338f565b611a0e565b610488620f424081565b61018b61053136600461361d565b611aff565b61018b610544366004613647565b611c12565b61018b610557366004613596565b611d5b565b6000828152609a60209081526040808320848452825280832033845290915290205460ff16156105d35760405162461bcd60e51b815260206004820152601e60248201527f636f6c6c61626f7261746f7220617070726f76656420616c726561647921000060448201526064015b60405180910390fd5b6000828152609b60209081526040808320848452825280832033845290915290206105fd81611dd4565b80546000848152609960209081526040808320868452909152812061062492909190611e1b565b604051338152829084907f1810672a3dad8f995260ba0777de0e36f462980ce02a3951804f83aac9c2d455906020015b60405180910390a3505050565b60008581526098602052604090205485906001600160a01b031633146106995760405162461bcd60e51b81526004016105ca90613684565b60008681526099602090815260408083208884529091529020600b8101548551146107065760405162461bcd60e51b815260206004820152601c60248201527f696e76616c696420636f6c6c61626f7261746f7273206c656e6774680000000060448201526064016105ca565b80600a015484511461075a5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206f6273657276657273206c656e677468000000000000000060448201526064016105ca565b61076381611e7d565b82156107f25760005b85518110156107ad5761079b888888848151811061078c5761078c6136bb565b60200260200101516000611eb7565b806107a5816136e7565b91505061076c565b5060005b84518110156107f0576107de88888784815181106107d1576107d16136bb565b602002602001015161203e565b806107e8816136e7565b9150506107b1565b505b6005810154600282015482546000929161080b91613700565b6108159190613713565b90508160040154826003015461082b9190613700565b6108359082613713565b60008981526098602052604090209091506108509082612115565b8087897f56829e4c362b83a2633cd58ab80f95a4c661582416ca0dd74cf6844198ef939060405160405180910390a45050505050505050565b60008481526098602052604090205484906001600160a01b031633146108c15760405162461bcd60e51b81526004016105ca90613684565b6000858152609a6020908152604080832087845282528083206001600160a01b038716845290915290205460ff161561093c5760405162461bcd60e51b815260206004820152601e60248201527f636f6c6c61626f7261746f7220617070726f76656420616c726561647921000060448201526064016105ca565b6000858152609b6020908152604080832087845282528083206001600160a01b038716845290915290208215610979576109798686866000611eb7565b61098281611dd4565b8054600087815260996020908152604080832089845290915290206109a8918590611e1b565b6040516001600160a01b0385168152859087907f1810672a3dad8f995260ba0777de0e36f462980ce02a3951804f83aac9c2d455906020015b60405180910390a3505050505050565b610a736040518061020001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b506000828152609960209081526040808320848452825291829020825161020081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b820154610160820152600c820154610180820152600d8201546101a0820152600e8201546101c0820152600f9091015460ff1615156101e08201525b92915050565b610b8c6040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b506000838152609b6020908152604080832085845282528083206001600160a01b0385168452825291829020825160e081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a082015260069091015460ff16151560c08201525b9392505050565b610c7360405180610120016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060009081526098602090815260409182902082516101208101845281546001600160a01b039081168252600183015416928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260089091015461010082015290565b60008581526098602052604090205485906001600160a01b03163314610d305760405162461bcd60e51b81526004016105ca90613684565b60008681526099602090815260408083208884529091529020600b810154855114610d9d5760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420636f6c6c61626f7261746f7273206c69737400000000000060448201526064016105ca565b8251855114610dee5760405162461bcd60e51b815260206004820152601760248201527f61727261797327206c656e677468206d69736d6174636800000000000000000060448201526064016105ca565b80600a0154845114610e3b5760405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a59081bd89cd95c9d995c9cc81b1a5cdd60521b60448201526064016105ca565b6000610e4682612149565b6000898152609860205260409020909150610e61908261222f565b60008260050154118015610e76575060008651115b15610f75576000805b8551811015610f20576000868281518110610e9c57610e9c6136bb565b602002602001015111610ee75760405162461bcd60e51b8152602060048201526013602482015272696e76616c696420626f6e75732073636f726560681b60448201526064016105ca565b858181518110610ef957610ef96136bb565b602002602001015182610f0c9190613713565b915080610f18816136e7565b915050610e7f565b50620f42408114610f735760405162461bcd60e51b815260206004820152601c60248201527f696e636f727265637420746f74616c20626f6e75732073636f7265730000000060448201526064016105ca565b505b60005b8651811015610fd157610fbf8989898481518110610f9857610f986136bb565b6020026020010151888581518110610fb257610fb26136bb565b6020026020010151611eb7565b80610fc9816136e7565b915050610f78565b5060005b855181101561100757610ff589898884815181106107d1576107d16136bb565b80610fff816136e7565b915050610fd5565b508087897fca0673658d6abd07a7992b1c692276e95e5693b83c44ebcbc0f5661add8f274f60405160405180910390a45050505050505050565b60008381526098602052604090205483906001600160a01b031633146110795760405162461bcd60e51b81526004016105ca90613684565b60008251116110c35760405162461bcd60e51b8152602060048201526016602482015275656d707479206f62736572766572732061727261792160501b60448201526064016105ca565b60005b8251811015611140576000858152609c602090815260408083208784529091528120845161112e9290869085908110611101576111016136bb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020612261565b80611138816136e7565b9150506110c6565b50815160008581526099602090815260408083208784529091529020611165916122c8565b82847f85572f85b2bc590a66fd61ccb26b098a3e1e5be48c230a5cc1f4c1d23603d1e1846040516111969190613726565b60405180910390a350505050565b6111ca604051806060016040528060008152602001600081526020016000151581525090565b506000928352609c602090815260408085209385529281528284206001600160a01b03929092168452908152918190208151606081018352815481526001820154938101939093526002015460ff1615159082015290565b61122a61230c565b6112346000612366565b565b60008481526098602052604090205484906001600160a01b0316331461126e5760405162461bcd60e51b81526004016105ca90613684565b60008351118061127f575060008251115b6112cb5760405162461bcd60e51b815260206004820152601760248201527f656d707479206f6273657276657273206172726179732100000000000000000060448201526064016105ca565b8251156113ae5760005b835181101561134f576000868152609c602090815260408083208884529091528120855161133d9290879085908110611310576113106136bb565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206123b8565b80611347816136e7565b9150506112d5565b5082516000868152609960209081526040808320888452909152902061137491612405565b83857fb1cc0cc3834b00e41fce4d1b26e0683b2457f753ec2683b88651d001476a6e38856040516113a59190613726565b60405180910390a35b8151156114645760005b8251811015611405576000868152609c60209081526040808320888452909152812084516113f39290869085908110611101576111016136bb565b806113fd816136e7565b9150506113b8565b5081516000868152609960209081526040808320888452909152902061142a916122c8565b83857f85572f85b2bc590a66fd61ccb26b098a3e1e5be48c230a5cc1f4c1d23603d1e18460405161145b9190613726565b60405180910390a35b5050505050565b6000838152609c6020908152604080832085845282528083206001600160a01b0385168452909152812060018101541515806114a657508054155b806114b55750600281015460ff165b156114c4576000915050610c0b565b600085815260996020908152604080832087845290915290206114e690612497565b95945050505050565b6114f761230c565b6001600160a01b0381166115485760405162461bcd60e51b8152602060048201526018602482015277696e76616c6964207472656173757279206164647265737360401b60448201526064016105ca565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f2ac12ebf7dfd56173c73b2e43941f0faed1c3f7fb6f959191a4ab4bdd3d32e2191015b60405180910390a15050565b60008181526098602052604090205481906001600160a01b031633146115e25760405162461bcd60e51b81526004016105ca90613684565b6002606554036116045760405162461bcd60e51b81526004016105ca90613773565b60026065556000828152609860205260408120611620906124e9565b9050827f57854ae7fa7dd108a735bb91879e7ef3ba109e004981ca9d6df5f72510ddb7318260405161165491815260200190565b60405180910390a25050600160655550565b60008681526098602052604090205486906001600160a01b0316331461169e5760405162461bcd60e51b81526004016105ca90613684565b85600081116116bf5760405162461bcd60e51b81526004016105ca906137aa565b6002606554036116e15760405162461bcd60e51b81526004016105ca90613773565b600260655560008881526098602052604081209086611700898b613713565b61170a9190613713565b905061171682826125d8565b60006117238b60006126bc565b60008c8152609960209081526040808320848452909152902090915061174c818c8b8d8c61272b565b611789336097546001600160a01b031660646117698760056137cf565b61177391906137ee565b60018801546001600160a01b03169291906127b3565b8651156117eb57600089116117e05760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206f627365727665727320627564676574000000000000000060448201526064016105ca565b6117eb8c838961281e565b604080518c8152602081018c90529081018a905282908d907f078c5efce40e0c0891ebda17cfbf5d7cdd9d5eb4afb16375d39b8243451871e29060600160405180910390a35050600160655550505050505050505050565b60008381526098602052604090205483906001600160a01b0316331461187b5760405162461bcd60e51b81526004016105ca90613684565b61188684848461281e565b50505050565b600054610100900460ff16158080156118ac5750600054600160ff909116105b806118c65750303b1580156118c6575060005460ff166001145b6119295760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105ca565b6000805460ff19166001179055801561194c576000805461ff0019166101001790555b611954612989565b61195c6129b8565b6001600160a01b0382166119ad5760405162461bcd60e51b8152602060048201526018602482015277696e76616c6964207472656173757279206164647265737360401b60448201526064016105ca565b609780546001600160a01b0319166001600160a01b0384161790558015611a0a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161159e565b5050565b60008381526098602052604090205483906001600160a01b03163314611a465760405162461bcd60e51b81526004016105ca90613684565b6000848152609a6020908152604080832086845282528083206001600160a01b038616808552908352818420805460ff19166001179055878452609b835281842087855283528184209084529091529020611aa0906129e7565b60008481526099602090815260408083208684529091529020611ac290612a79565b6040516001600160a01b0383168152839085907f89d75bad6a27d516d326126cd95a5626e99ce9548579494bb6d51f59b9c8878390602001611196565b8060008111611b205760405162461bcd60e51b81526004016105ca906137aa565b600260655403611b425760405162461bcd60e51b81526004016105ca90613773565b60026065556001600160a01b038316611b955760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b60448201526064016105ca565b6000611b9f612ab1565b6000818152609860205260409020909150611bbb908585612b19565b807fe13f31eeb084676e55593cb99c5bef76fadde467d9bc2653f56a4c9c3f3302c633604080516001600160a01b0392831681529188166020830152810186905260600160405180910390a2505060016065555050565b60008481526098602052604090205484906001600160a01b03163314611c4a5760405162461bcd60e51b81526004016105ca90613684565b8160008111611c6b5760405162461bcd60e51b81526004016105ca906137aa565b6001600160a01b038416611cc15760405162461bcd60e51b815260206004820152601e60248201527f636f6c6c61626f7261746f7227732061646472657373206973207a65726f000060448201526064016105ca565b6000868152609b6020908152604080832088845282528083206001600160a01b03881684529091529020611cf59084612b61565b60008681526099602090815260408083208884529091529020611d189084612bd9565b604080516001600160a01b038616815260208101859052869188917f8aa39f8fa6c78a00b31a805b7955eb3e38d4cb7bd4d87c84655269141bd8477e91016109e1565b611d6361230c565b6001600160a01b038116611dc85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ca565b611dd181612366565b50565b8060008160020154118015611dee5750600681015460ff16155b611e0a5760405162461bcd60e51b81526004016105ca90613810565b50600601805460ff19166001179055565b600f830154839060ff16611e415760405162461bcd60e51b81526004016105ca9061383e565b82611e605781846001016000828254611e5a9190613700565b90915550505b600b84018054906000611e7283613867565b919050555050505050565b600f810154819060ff16611ea35760405162461bcd60e51b81526004016105ca9061383e565b5042600e820155600f01805460ff19169055565b6000848152609b6020908152604080832086845282528083206001600160a01b0386168452825280832087845260998352818420878552909252822060058101549192909115801590611f0a5750600084115b15611f6357600b8201546007830154611f24906001613713565b14611f4c57620f4240848360050154611f3d91906137cf565b611f4791906137ee565b611f60565b81600601548260050154611f609190613700565b90505b6000878152609b6020908152604080832089845282528083206001600160a01b03891684529091529020611f979082612ceb565b825460008881526099602090815260408083208a84529091529020611fbc9183612d84565b611fe585828560000154611fd09190613713565b60008a81526098602052604090209190612dce565b8254604080516001600160a01b038816815260208101929092528101829052869088907f53aa87b28abc70f0fb4d2402a35d5e4d91386b5b045ad43d598a715982e32d209060600160405180910390a350505050505050565b6000838152609c6020908152604080832085845282528083206001600160a01b0385168452909152902061207190612e00565b6000838152609960209081526040808320858452909152812061209390612497565b600085815260996020908152604080832087845290915290209091506120b99082612eb2565b60008481526098602052604090206120d2908383612dce565b604080516001600160a01b038416815260208101839052849186917ff791dbe60269baac78be1afe586f70aa816e7a19b3ff88e228ca638e41142dae9101611196565b808260030160008282546121299190613700565b909155505060078201805490600061214083613867565b91905055505050565b600f810154600090829060ff166121725760405162461bcd60e51b81526004016105ca9061383e565b82600d015483600b0154146121c95760405162461bcd60e51b815260206004820152601d60248201527f756e617070726f76656420636f6c6c61626f7261746f7273206c65667400000060448201526064016105ca565b600183015483546121da9190613700565b915082600a01546000036121fa5760038301546121f79083613713565b91505b82600b01546000036122185760058301546122159083613713565b91505b50426009830155600f909101805460ff1916905590565b801561224f57808260030160008282546122499190613700565b90915550505b600882018054906000612140836136e7565b80548190158015906122785750600281015460ff16155b6122b75760405162461bcd60e51b815260206004820152601060248201526f37379039bab1b41037b139b2b93b32b960811b60448201526064016105ca565b50600201805460ff19166001179055565b600f820154829060ff166122ee5760405162461bcd60e51b81526004016105ca9061383e565b8183600a0160008282546123029190613700565b9091555050505050565b6033546001600160a01b031633146112345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ca565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8054156124005760405162461bcd60e51b81526020600482015260166024820152751bd89cd95c9d995c88185b1c9958591e48185919195960521b60448201526064016105ca565b429055565b600f820154829060ff1661242b5760405162461bcd60e51b81526004016105ca9061383e565b600a8284600a015461243d9190613713565b11156124835760405162461bcd60e51b81526020600482015260156024820152741b585e081bd89cd95c9d995c9cc81c995858da1959605a1b60448201526064016105ca565b8183600a0160008282546123029190613713565b600080826004015483600301546124ae9190613700565b9050600083600a015484600301546124c691906137ee565b90506124d38160026137cf565b82106124df57806124e1565b815b949350505050565b6000816006015460001461253f5760405162461bcd60e51b815260206004820152601860248201527f616c72656164792066696e69736865642070726f6a656374000000000000000060448201526064016105ca565b81600801548260070154146125965760405162461bcd60e51b815260206004820152601860248201527f756e66696e6973686564207061636b61676573206c656674000000000000000060448201526064016105ca565b426006830155600382015460028301546000916125b291613700565b90508015610b445782546001840154610b44916001600160a01b03918216911683612ec6565b6006820154156126205760405162461bcd60e51b81526020600482015260136024820152721c1c9bda9958dd081a5cc8199a5b9a5cda1959606a1b60448201526064016105ca565b8082600301546126309190613713565b826002015410156126835760405162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f7567682070726f6a65637420627564676574206c656674000060448201526064016105ca565b808260030160008282546126979190613713565b9250508190555060018260070160008282546126b39190613713565b90915550505050565b60006126c782612ef6565b600084815260996020908152604080832084845290915290206008015490915015610b445760405162461bcd60e51b8152602060048201526014602482015273191d5c1b1a58d85d19481c1858dad859d9481a5960621b60448201526064016105ca565b80600010801561273c5750600a8111155b6127885760405162461bcd60e51b815260206004820152601d60248201527f696e636f727265637420636f6c6c61626f7261746f7273206c696d697400000060448201526064016105ca565b92845560038401919091556005830155600c820155426008820155600f01805460ff19166001179055565b6040516001600160a01b03808516602483015283166044820152606481018290526118869085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612f4e565b60008151116128685760405162461bcd60e51b8152602060048201526016602482015275656d707479206f62736572766572732061727261792160501b60448201526064016105ca565b60005b81518110156129335760006001600160a01b0316828281518110612891576128916136bb565b60200260200101516001600160a01b0316036128ef5760405162461bcd60e51b815260206004820152601860248201527f7a65726f206f627365727665722773206164647265737321000000000000000060448201526064016105ca565b6000848152609c60209081526040808320868452909152812083516129219290859085908110611310576113106136bb565b8061292b816136e7565b91505061286b565b5080516000848152609960209081526040808320868452909152902061295891612405565b81837fb1cc0cc3834b00e41fce4d1b26e0683b2457f753ec2683b88651d001476a6e38836040516106549190613726565b600054610100900460ff166129b05760405162461bcd60e51b81526004016105ca9061387e565b611234613020565b600054610100900460ff166129df5760405162461bcd60e51b81526004016105ca9061387e565b611234613050565b8060008160020154118015612a015750600681015460ff16155b612a1d5760405162461bcd60e51b81526004016105ca90613810565b600382015415612a6f5760405162461bcd60e51b815260206004820152601d60248201527f636f6c6c61626f7261746f7220616c726561647920617070726f76656400000060448201526064016105ca565b5042600390910155565b600f810154819060ff16612a9f5760405162461bcd60e51b81526004016105ca9061383e565b600d82018054906000612140836136e7565b6000612abd6000612ef6565b60008181526098602052604090206005015490915015612b165760405162461bcd60e51b8152602060048201526014602482015273191d5c1b1a58d85d19481c1c9bda9958dd081a5960621b60448201526064016105ca565b90565b82546001600160a01b03199081163390811785556001850180546001600160a01b03861693168317905560028501839055426005860155612b5c919030846127b3565b505050565b600682015460ff1680612b7657506002820154155b612bc25760405162461bcd60e51b815260206004820152601a60248201527f636f6c6c61626f7261746f7220616c726561647920616464656400000000000060448201526064016105ca565b815560068101805460ff1916905542600290910155565b600f820154829060ff16612bff5760405162461bcd60e51b81526004016105ca9061383e565b818360010154612c0f9190613713565b83541015612c5f5760405162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f756768207061636b61676520627564676574206c656674000060448201526064016105ca565b82600c015483600b015410612cb65760405162461bcd60e51b815260206004820152601b60248201527f636f6c6c61626f7261746f7273206c696d69742072656163686564000000000060448201526064016105ca565b81836001016000828254612cca9190613713565b9091555050600b83018054906000612ce1836136e7565b9190505550505050565b8160008160020154118015612d055750600681015460ff16155b612d215760405162461bcd60e51b81526004016105ca90613810565b600483015415612d695760405162461bcd60e51b81526020600482015260136024820152721c995dd85c9908185b1c9958591e481c185a59606a1b60448201526064016105ca565b4260048401558115612b5c5750600182015542600590910155565b81836002016000828254612d989190613713565b90915550508015612b5c5780836006016000828254612db79190613713565b9091555050600783018054906000612ce1836136e7565b80836004016000828254612de29190613713565b90915550506001830154612b5c906001600160a01b03168383612ec6565b8054819015801590612e175750600281015460ff16155b612e565760405162461bcd60e51b815260206004820152601060248201526f37379039bab1b41037b139b2b93b32b960811b60448201526064016105ca565b600182015415612ea85760405162461bcd60e51b815260206004820152601960248201527f6f627365727665722066656520616c726561647920706169640000000000000060448201526064016105ca565b5042600190910155565b808260040160008282546126b39190613713565b6040516001600160a01b038316602482015260448101829052612b5c90849063a9059cbb60e01b906064016127e7565b600033612f04600143613700565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b6000612fa3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661307e9092919063ffffffff16565b805190915015612b5c5780806020019051810190612fc191906138c9565b612b5c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105ca565b600054610100900460ff166130475760405162461bcd60e51b81526004016105ca9061387e565b61123433612366565b600054610100900460ff166130775760405162461bcd60e51b81526004016105ca9061387e565b6001606555565b60606124e18484600085856001600160a01b0385163b6130e05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105ca565b600080866001600160a01b031685876040516130fc919061390a565b60006040518083038185875af1925050503d8060008114613139576040519150601f19603f3d011682016040523d82523d6000602084013e61313e565b606091505b509150915061314e828286613159565b979650505050505050565b60608315613168575081610c0b565b8251156131785782518084602001fd5b8160405162461bcd60e51b81526004016105ca9190613926565b600080604083850312156131a557600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156131f3576131f36131b4565b604052919050565b600067ffffffffffffffff821115613215576132156131b4565b5060051b60200190565b80356001600160a01b038116811461323657600080fd5b919050565b600082601f83011261324c57600080fd5b8135602061326161325c836131fb565b6131ca565b82815260059290921b8401810191818101908684111561328057600080fd5b8286015b848110156132a2576132958161321f565b8352918301918301613284565b509695505050505050565b8015158114611dd157600080fd5b600080600080600060a086880312156132d357600080fd5b8535945060208601359350604086013567ffffffffffffffff808211156132f957600080fd5b61330589838a0161323b565b9450606088013591508082111561331b57600080fd5b506133288882890161323b565b9250506080860135613339816132ad565b809150509295509295909350565b6000806000806080858703121561335d57600080fd5b84359350602085013592506133746040860161321f565b91506060850135613384816132ad565b939692955090935050565b6000806000606084860312156133a457600080fd5b83359250602084013591506133bb6040850161321f565b90509250925092565b6000602082840312156133d657600080fd5b5035919050565b600080600080600060a086880312156133f557600080fd5b853594506020808701359450604087013567ffffffffffffffff8082111561341c57600080fd5b6134288a838b0161323b565b9550606089013591508082111561343e57600080fd5b61344a8a838b0161323b565b9450608089013591508082111561346057600080fd5b508701601f8101891361347257600080fd5b803561348061325c826131fb565b81815260059190911b8201830190838101908b83111561349f57600080fd5b928401925b828410156134bd578335825292840192908401906134a4565b80955050505050509295509295909350565b6000806000606084860312156134e457600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561350957600080fd5b6135158682870161323b565b9150509250925092565b6000806000806080858703121561353557600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561355b57600080fd5b6135678883890161323b565b9350606087013591508082111561357d57600080fd5b5061358a8782880161323b565b91505092959194509250565b6000602082840312156135a857600080fd5b610c0b8261321f565b60008060008060008060c087890312156135ca57600080fd5b863595506020870135945060408701359350606087013592506080870135915060a087013567ffffffffffffffff81111561360457600080fd5b61361089828a0161323b565b9150509295509295509295565b6000806040838503121561363057600080fd5b6136398361321f565b946020939093013593505050565b6000806000806080858703121561365d57600080fd5b84359350602085013592506136746040860161321f565b9396929550929360600135925050565b6020808252601f908201527f63616c6c6572206973206e6f742070726f6a65637420696e69746961746f7200604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016136f9576136f96136d1565b5060010190565b81810381811115610b4457610b446136d1565b80820180821115610b4457610b446136d1565b6020808252825182820181905260009190848201906040850190845b818110156137675783516001600160a01b031683529284019291840191600101613742565b50909695505050505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600b908201526a16995c9bc8185b5bdd5b9d60aa1b604082015260600190565b60008160001904831182151516156137e9576137e96136d1565b500290565b60008261380b57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526014908201527337379039bab1b41031b7b63630b137b930ba37b960611b604082015260600190565b6020808252600f908201526e6e6f2073756368207061636b61676560881b604082015260600190565b600081613876576138766136d1565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156138db57600080fd5b8151610c0b816132ad565b60005b838110156139015781810151838201526020016138e9565b50506000910152565b6000825161391c8184602087016138e6565b9190910192915050565b60208152600082518060208401526139458160408501602087016138e6565b601f01601f1916919091016040019291505056fea26469706673582212206fbfdd8250baaf0738cdc9fbe9dcc1cc69f53e27eb017c3706658ddfb1219f8d64736f6c63430008100033", "bin-runtime": "608060405234801561001057600080fd5b50600436106101735760003560e01c806371af530b116100de578063be06555e11610097578063e1d8451411610071578063e1d8451414610519578063e82d657214610523578063ec104ff114610536578063f2fde38b1461054957600080fd5b8063be06555e146104e0578063c4d66de8146104f3578063dcce114e1461050657600080fd5b806371af530b146104625780637cbe62c6146104755780637f51bb1f1461049657806385ceab29146104a95780638da5cb5b146104bc578063b2b57114146104cd57600080fd5b80632926aa80116101305780632926aa80146103785780633a7efc841461038b57806358ff3e471461039e578063590ab7db146103f857806361d027b31461042f578063715018a61461045a57600080fd5b806303a1fc2214610178578063085f8a9c1461018d5780630eae9d88146101a057806320000478146101b35780632008002e1461028557806323d683e7146102f0575b600080fd5b61018b610186366004613192565b61055c565b005b61018b61019b3660046132bb565b610661565b61018b6101ae366004613347565b610889565b6101c66101c1366004613192565b6109f1565b60405161027c9190815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018080830151908201526101a080830151908201526101c080830151908201526101e0918201511515918101919091526102000190565b60405180910390f35b61029861029336600461338f565b610b4a565b60405161027c9190600060e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015292915050565b6103036102fe3660046133c4565b610c12565b60405161027c919081516001600160a01b0390811682526020808401519091169082015260408083015190820152606080830151908201526080808301519082015260a0828101519082015260c0808301519082015260e0808301519082015261010091820151918101919091526101200190565b61018b6103863660046133dd565b610cf8565b61018b6103993660046134cf565b611041565b6103e36103ac36600461338f565b6000928352609b602090815260408085209385529281528284206001600160a01b0392909216845252902080546001909101549091565b6040805192835260208301919091520161027c565b61040b61040636600461338f565b6111a4565b6040805182518152602080840151908201529181015115159082015260600161027c565b609754610442906001600160a01b031681565b6040516001600160a01b03909116815260200161027c565b61018b611222565b61018b61047036600461351f565b611236565b61048861048336600461338f565b61146b565b60405190815260200161027c565b61018b6104a4366004613596565b6114ef565b61018b6104b73660046133c4565b6115aa565b6033546001600160a01b0316610442565b61018b6104db3660046135b1565b611666565b61018b6104ee3660046134cf565b611843565b61018b610501366004613596565b61188c565b61018b61051436600461338f565b611a0e565b610488620f424081565b61018b61053136600461361d565b611aff565b61018b610544366004613647565b611c12565b61018b610557366004613596565b611d5b565b6000828152609a60209081526040808320848452825280832033845290915290205460ff16156105d35760405162461bcd60e51b815260206004820152601e60248201527f636f6c6c61626f7261746f7220617070726f76656420616c726561647921000060448201526064015b60405180910390fd5b6000828152609b60209081526040808320848452825280832033845290915290206105fd81611dd4565b80546000848152609960209081526040808320868452909152812061062492909190611e1b565b604051338152829084907f1810672a3dad8f995260ba0777de0e36f462980ce02a3951804f83aac9c2d455906020015b60405180910390a3505050565b60008581526098602052604090205485906001600160a01b031633146106995760405162461bcd60e51b81526004016105ca90613684565b60008681526099602090815260408083208884529091529020600b8101548551146107065760405162461bcd60e51b815260206004820152601c60248201527f696e76616c696420636f6c6c61626f7261746f7273206c656e6774680000000060448201526064016105ca565b80600a015484511461075a5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206f6273657276657273206c656e677468000000000000000060448201526064016105ca565b61076381611e7d565b82156107f25760005b85518110156107ad5761079b888888848151811061078c5761078c6136bb565b60200260200101516000611eb7565b806107a5816136e7565b91505061076c565b5060005b84518110156107f0576107de88888784815181106107d1576107d16136bb565b602002602001015161203e565b806107e8816136e7565b9150506107b1565b505b6005810154600282015482546000929161080b91613700565b6108159190613713565b90508160040154826003015461082b9190613700565b6108359082613713565b60008981526098602052604090209091506108509082612115565b8087897f56829e4c362b83a2633cd58ab80f95a4c661582416ca0dd74cf6844198ef939060405160405180910390a45050505050505050565b60008481526098602052604090205484906001600160a01b031633146108c15760405162461bcd60e51b81526004016105ca90613684565b6000858152609a6020908152604080832087845282528083206001600160a01b038716845290915290205460ff161561093c5760405162461bcd60e51b815260206004820152601e60248201527f636f6c6c61626f7261746f7220617070726f76656420616c726561647921000060448201526064016105ca565b6000858152609b6020908152604080832087845282528083206001600160a01b038716845290915290208215610979576109798686866000611eb7565b61098281611dd4565b8054600087815260996020908152604080832089845290915290206109a8918590611e1b565b6040516001600160a01b0385168152859087907f1810672a3dad8f995260ba0777de0e36f462980ce02a3951804f83aac9c2d455906020015b60405180910390a3505050505050565b610a736040518061020001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b506000828152609960209081526040808320848452825291829020825161020081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b820154610160820152600c820154610180820152600d8201546101a0820152600e8201546101c0820152600f9091015460ff1615156101e08201525b92915050565b610b8c6040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b506000838152609b6020908152604080832085845282528083206001600160a01b0385168452825291829020825160e081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a082015260069091015460ff16151560c08201525b9392505050565b610c7360405180610120016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060009081526098602090815260409182902082516101208101845281546001600160a01b039081168252600183015416928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260089091015461010082015290565b60008581526098602052604090205485906001600160a01b03163314610d305760405162461bcd60e51b81526004016105ca90613684565b60008681526099602090815260408083208884529091529020600b810154855114610d9d5760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420636f6c6c61626f7261746f7273206c69737400000000000060448201526064016105ca565b8251855114610dee5760405162461bcd60e51b815260206004820152601760248201527f61727261797327206c656e677468206d69736d6174636800000000000000000060448201526064016105ca565b80600a0154845114610e3b5760405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a59081bd89cd95c9d995c9cc81b1a5cdd60521b60448201526064016105ca565b6000610e4682612149565b6000898152609860205260409020909150610e61908261222f565b60008260050154118015610e76575060008651115b15610f75576000805b8551811015610f20576000868281518110610e9c57610e9c6136bb565b602002602001015111610ee75760405162461bcd60e51b8152602060048201526013602482015272696e76616c696420626f6e75732073636f726560681b60448201526064016105ca565b858181518110610ef957610ef96136bb565b602002602001015182610f0c9190613713565b915080610f18816136e7565b915050610e7f565b50620f42408114610f735760405162461bcd60e51b815260206004820152601c60248201527f696e636f727265637420746f74616c20626f6e75732073636f7265730000000060448201526064016105ca565b505b60005b8651811015610fd157610fbf8989898481518110610f9857610f986136bb565b6020026020010151888581518110610fb257610fb26136bb565b6020026020010151611eb7565b80610fc9816136e7565b915050610f78565b5060005b855181101561100757610ff589898884815181106107d1576107d16136bb565b80610fff816136e7565b915050610fd5565b508087897fca0673658d6abd07a7992b1c692276e95e5693b83c44ebcbc0f5661add8f274f60405160405180910390a45050505050505050565b60008381526098602052604090205483906001600160a01b031633146110795760405162461bcd60e51b81526004016105ca90613684565b60008251116110c35760405162461bcd60e51b8152602060048201526016602482015275656d707479206f62736572766572732061727261792160501b60448201526064016105ca565b60005b8251811015611140576000858152609c602090815260408083208784529091528120845161112e9290869085908110611101576111016136bb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020612261565b80611138816136e7565b9150506110c6565b50815160008581526099602090815260408083208784529091529020611165916122c8565b82847f85572f85b2bc590a66fd61ccb26b098a3e1e5be48c230a5cc1f4c1d23603d1e1846040516111969190613726565b60405180910390a350505050565b6111ca604051806060016040528060008152602001600081526020016000151581525090565b506000928352609c602090815260408085209385529281528284206001600160a01b03929092168452908152918190208151606081018352815481526001820154938101939093526002015460ff1615159082015290565b61122a61230c565b6112346000612366565b565b60008481526098602052604090205484906001600160a01b0316331461126e5760405162461bcd60e51b81526004016105ca90613684565b60008351118061127f575060008251115b6112cb5760405162461bcd60e51b815260206004820152601760248201527f656d707479206f6273657276657273206172726179732100000000000000000060448201526064016105ca565b8251156113ae5760005b835181101561134f576000868152609c602090815260408083208884529091528120855161133d9290879085908110611310576113106136bb565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206123b8565b80611347816136e7565b9150506112d5565b5082516000868152609960209081526040808320888452909152902061137491612405565b83857fb1cc0cc3834b00e41fce4d1b26e0683b2457f753ec2683b88651d001476a6e38856040516113a59190613726565b60405180910390a35b8151156114645760005b8251811015611405576000868152609c60209081526040808320888452909152812084516113f39290869085908110611101576111016136bb565b806113fd816136e7565b9150506113b8565b5081516000868152609960209081526040808320888452909152902061142a916122c8565b83857f85572f85b2bc590a66fd61ccb26b098a3e1e5be48c230a5cc1f4c1d23603d1e18460405161145b9190613726565b60405180910390a35b5050505050565b6000838152609c6020908152604080832085845282528083206001600160a01b0385168452909152812060018101541515806114a657508054155b806114b55750600281015460ff165b156114c4576000915050610c0b565b600085815260996020908152604080832087845290915290206114e690612497565b95945050505050565b6114f761230c565b6001600160a01b0381166115485760405162461bcd60e51b8152602060048201526018602482015277696e76616c6964207472656173757279206164647265737360401b60448201526064016105ca565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f2ac12ebf7dfd56173c73b2e43941f0faed1c3f7fb6f959191a4ab4bdd3d32e2191015b60405180910390a15050565b60008181526098602052604090205481906001600160a01b031633146115e25760405162461bcd60e51b81526004016105ca90613684565b6002606554036116045760405162461bcd60e51b81526004016105ca90613773565b60026065556000828152609860205260408120611620906124e9565b9050827f57854ae7fa7dd108a735bb91879e7ef3ba109e004981ca9d6df5f72510ddb7318260405161165491815260200190565b60405180910390a25050600160655550565b60008681526098602052604090205486906001600160a01b0316331461169e5760405162461bcd60e51b81526004016105ca90613684565b85600081116116bf5760405162461bcd60e51b81526004016105ca906137aa565b6002606554036116e15760405162461bcd60e51b81526004016105ca90613773565b600260655560008881526098602052604081209086611700898b613713565b61170a9190613713565b905061171682826125d8565b60006117238b60006126bc565b60008c8152609960209081526040808320848452909152902090915061174c818c8b8d8c61272b565b611789336097546001600160a01b031660646117698760056137cf565b61177391906137ee565b60018801546001600160a01b03169291906127b3565b8651156117eb57600089116117e05760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206f627365727665727320627564676574000000000000000060448201526064016105ca565b6117eb8c838961281e565b604080518c8152602081018c90529081018a905282908d907f078c5efce40e0c0891ebda17cfbf5d7cdd9d5eb4afb16375d39b8243451871e29060600160405180910390a35050600160655550505050505050505050565b60008381526098602052604090205483906001600160a01b0316331461187b5760405162461bcd60e51b81526004016105ca90613684565b61188684848461281e565b50505050565b600054610100900460ff16158080156118ac5750600054600160ff909116105b806118c65750303b1580156118c6575060005460ff166001145b6119295760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105ca565b6000805460ff19166001179055801561194c576000805461ff0019166101001790555b611954612989565b61195c6129b8565b6001600160a01b0382166119ad5760405162461bcd60e51b8152602060048201526018602482015277696e76616c6964207472656173757279206164647265737360401b60448201526064016105ca565b609780546001600160a01b0319166001600160a01b0384161790558015611a0a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161159e565b5050565b60008381526098602052604090205483906001600160a01b03163314611a465760405162461bcd60e51b81526004016105ca90613684565b6000848152609a6020908152604080832086845282528083206001600160a01b038616808552908352818420805460ff19166001179055878452609b835281842087855283528184209084529091529020611aa0906129e7565b60008481526099602090815260408083208684529091529020611ac290612a79565b6040516001600160a01b0383168152839085907f89d75bad6a27d516d326126cd95a5626e99ce9548579494bb6d51f59b9c8878390602001611196565b8060008111611b205760405162461bcd60e51b81526004016105ca906137aa565b600260655403611b425760405162461bcd60e51b81526004016105ca90613773565b60026065556001600160a01b038316611b955760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b60448201526064016105ca565b6000611b9f612ab1565b6000818152609860205260409020909150611bbb908585612b19565b807fe13f31eeb084676e55593cb99c5bef76fadde467d9bc2653f56a4c9c3f3302c633604080516001600160a01b0392831681529188166020830152810186905260600160405180910390a2505060016065555050565b60008481526098602052604090205484906001600160a01b03163314611c4a5760405162461bcd60e51b81526004016105ca90613684565b8160008111611c6b5760405162461bcd60e51b81526004016105ca906137aa565b6001600160a01b038416611cc15760405162461bcd60e51b815260206004820152601e60248201527f636f6c6c61626f7261746f7227732061646472657373206973207a65726f000060448201526064016105ca565b6000868152609b6020908152604080832088845282528083206001600160a01b03881684529091529020611cf59084612b61565b60008681526099602090815260408083208884529091529020611d189084612bd9565b604080516001600160a01b038616815260208101859052869188917f8aa39f8fa6c78a00b31a805b7955eb3e38d4cb7bd4d87c84655269141bd8477e91016109e1565b611d6361230c565b6001600160a01b038116611dc85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ca565b611dd181612366565b50565b8060008160020154118015611dee5750600681015460ff16155b611e0a5760405162461bcd60e51b81526004016105ca90613810565b50600601805460ff19166001179055565b600f830154839060ff16611e415760405162461bcd60e51b81526004016105ca9061383e565b82611e605781846001016000828254611e5a9190613700565b90915550505b600b84018054906000611e7283613867565b919050555050505050565b600f810154819060ff16611ea35760405162461bcd60e51b81526004016105ca9061383e565b5042600e820155600f01805460ff19169055565b6000848152609b6020908152604080832086845282528083206001600160a01b0386168452825280832087845260998352818420878552909252822060058101549192909115801590611f0a5750600084115b15611f6357600b8201546007830154611f24906001613713565b14611f4c57620f4240848360050154611f3d91906137cf565b611f4791906137ee565b611f60565b81600601548260050154611f609190613700565b90505b6000878152609b6020908152604080832089845282528083206001600160a01b03891684529091529020611f979082612ceb565b825460008881526099602090815260408083208a84529091529020611fbc9183612d84565b611fe585828560000154611fd09190613713565b60008a81526098602052604090209190612dce565b8254604080516001600160a01b038816815260208101929092528101829052869088907f53aa87b28abc70f0fb4d2402a35d5e4d91386b5b045ad43d598a715982e32d209060600160405180910390a350505050505050565b6000838152609c6020908152604080832085845282528083206001600160a01b0385168452909152902061207190612e00565b6000838152609960209081526040808320858452909152812061209390612497565b600085815260996020908152604080832087845290915290209091506120b99082612eb2565b60008481526098602052604090206120d2908383612dce565b604080516001600160a01b038416815260208101839052849186917ff791dbe60269baac78be1afe586f70aa816e7a19b3ff88e228ca638e41142dae9101611196565b808260030160008282546121299190613700565b909155505060078201805490600061214083613867565b91905055505050565b600f810154600090829060ff166121725760405162461bcd60e51b81526004016105ca9061383e565b82600d015483600b0154146121c95760405162461bcd60e51b815260206004820152601d60248201527f756e617070726f76656420636f6c6c61626f7261746f7273206c65667400000060448201526064016105ca565b600183015483546121da9190613700565b915082600a01546000036121fa5760038301546121f79083613713565b91505b82600b01546000036122185760058301546122159083613713565b91505b50426009830155600f909101805460ff1916905590565b801561224f57808260030160008282546122499190613700565b90915550505b600882018054906000612140836136e7565b80548190158015906122785750600281015460ff16155b6122b75760405162461bcd60e51b815260206004820152601060248201526f37379039bab1b41037b139b2b93b32b960811b60448201526064016105ca565b50600201805460ff19166001179055565b600f820154829060ff166122ee5760405162461bcd60e51b81526004016105ca9061383e565b8183600a0160008282546123029190613700565b9091555050505050565b6033546001600160a01b031633146112345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ca565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8054156124005760405162461bcd60e51b81526020600482015260166024820152751bd89cd95c9d995c88185b1c9958591e48185919195960521b60448201526064016105ca565b429055565b600f820154829060ff1661242b5760405162461bcd60e51b81526004016105ca9061383e565b600a8284600a015461243d9190613713565b11156124835760405162461bcd60e51b81526020600482015260156024820152741b585e081bd89cd95c9d995c9cc81c995858da1959605a1b60448201526064016105ca565b8183600a0160008282546123029190613713565b600080826004015483600301546124ae9190613700565b9050600083600a015484600301546124c691906137ee565b90506124d38160026137cf565b82106124df57806124e1565b815b949350505050565b6000816006015460001461253f5760405162461bcd60e51b815260206004820152601860248201527f616c72656164792066696e69736865642070726f6a656374000000000000000060448201526064016105ca565b81600801548260070154146125965760405162461bcd60e51b815260206004820152601860248201527f756e66696e6973686564207061636b61676573206c656674000000000000000060448201526064016105ca565b426006830155600382015460028301546000916125b291613700565b90508015610b445782546001840154610b44916001600160a01b03918216911683612ec6565b6006820154156126205760405162461bcd60e51b81526020600482015260136024820152721c1c9bda9958dd081a5cc8199a5b9a5cda1959606a1b60448201526064016105ca565b8082600301546126309190613713565b826002015410156126835760405162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f7567682070726f6a65637420627564676574206c656674000060448201526064016105ca565b808260030160008282546126979190613713565b9250508190555060018260070160008282546126b39190613713565b90915550505050565b60006126c782612ef6565b600084815260996020908152604080832084845290915290206008015490915015610b445760405162461bcd60e51b8152602060048201526014602482015273191d5c1b1a58d85d19481c1858dad859d9481a5960621b60448201526064016105ca565b80600010801561273c5750600a8111155b6127885760405162461bcd60e51b815260206004820152601d60248201527f696e636f727265637420636f6c6c61626f7261746f7273206c696d697400000060448201526064016105ca565b92845560038401919091556005830155600c820155426008820155600f01805460ff19166001179055565b6040516001600160a01b03808516602483015283166044820152606481018290526118869085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612f4e565b60008151116128685760405162461bcd60e51b8152602060048201526016602482015275656d707479206f62736572766572732061727261792160501b60448201526064016105ca565b60005b81518110156129335760006001600160a01b0316828281518110612891576128916136bb565b60200260200101516001600160a01b0316036128ef5760405162461bcd60e51b815260206004820152601860248201527f7a65726f206f627365727665722773206164647265737321000000000000000060448201526064016105ca565b6000848152609c60209081526040808320868452909152812083516129219290859085908110611310576113106136bb565b8061292b816136e7565b91505061286b565b5080516000848152609960209081526040808320868452909152902061295891612405565b81837fb1cc0cc3834b00e41fce4d1b26e0683b2457f753ec2683b88651d001476a6e38836040516106549190613726565b600054610100900460ff166129b05760405162461bcd60e51b81526004016105ca9061387e565b611234613020565b600054610100900460ff166129df5760405162461bcd60e51b81526004016105ca9061387e565b611234613050565b8060008160020154118015612a015750600681015460ff16155b612a1d5760405162461bcd60e51b81526004016105ca90613810565b600382015415612a6f5760405162461bcd60e51b815260206004820152601d60248201527f636f6c6c61626f7261746f7220616c726561647920617070726f76656400000060448201526064016105ca565b5042600390910155565b600f810154819060ff16612a9f5760405162461bcd60e51b81526004016105ca9061383e565b600d82018054906000612140836136e7565b6000612abd6000612ef6565b60008181526098602052604090206005015490915015612b165760405162461bcd60e51b8152602060048201526014602482015273191d5c1b1a58d85d19481c1c9bda9958dd081a5960621b60448201526064016105ca565b90565b82546001600160a01b03199081163390811785556001850180546001600160a01b03861693168317905560028501839055426005860155612b5c919030846127b3565b505050565b600682015460ff1680612b7657506002820154155b612bc25760405162461bcd60e51b815260206004820152601a60248201527f636f6c6c61626f7261746f7220616c726561647920616464656400000000000060448201526064016105ca565b815560068101805460ff1916905542600290910155565b600f820154829060ff16612bff5760405162461bcd60e51b81526004016105ca9061383e565b818360010154612c0f9190613713565b83541015612c5f5760405162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f756768207061636b61676520627564676574206c656674000060448201526064016105ca565b82600c015483600b015410612cb65760405162461bcd60e51b815260206004820152601b60248201527f636f6c6c61626f7261746f7273206c696d69742072656163686564000000000060448201526064016105ca565b81836001016000828254612cca9190613713565b9091555050600b83018054906000612ce1836136e7565b9190505550505050565b8160008160020154118015612d055750600681015460ff16155b612d215760405162461bcd60e51b81526004016105ca90613810565b600483015415612d695760405162461bcd60e51b81526020600482015260136024820152721c995dd85c9908185b1c9958591e481c185a59606a1b60448201526064016105ca565b4260048401558115612b5c5750600182015542600590910155565b81836002016000828254612d989190613713565b90915550508015612b5c5780836006016000828254612db79190613713565b9091555050600783018054906000612ce1836136e7565b80836004016000828254612de29190613713565b90915550506001830154612b5c906001600160a01b03168383612ec6565b8054819015801590612e175750600281015460ff16155b612e565760405162461bcd60e51b815260206004820152601060248201526f37379039bab1b41037b139b2b93b32b960811b60448201526064016105ca565b600182015415612ea85760405162461bcd60e51b815260206004820152601960248201527f6f627365727665722066656520616c726561647920706169640000000000000060448201526064016105ca565b5042600190910155565b808260040160008282546126b39190613713565b6040516001600160a01b038316602482015260448101829052612b5c90849063a9059cbb60e01b906064016127e7565b600033612f04600143613700565b60405160609290921b6bffffffffffffffffffffffff1916602083015240603482015260548101839052607401604051602081830303815290604052805190602001209050919050565b6000612fa3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661307e9092919063ffffffff16565b805190915015612b5c5780806020019051810190612fc191906138c9565b612b5c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105ca565b600054610100900460ff166130475760405162461bcd60e51b81526004016105ca9061387e565b61123433612366565b600054610100900460ff166130775760405162461bcd60e51b81526004016105ca9061387e565b6001606555565b60606124e18484600085856001600160a01b0385163b6130e05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105ca565b600080866001600160a01b031685876040516130fc919061390a565b60006040518083038185875af1925050503d8060008114613139576040519150601f19603f3d011682016040523d82523d6000602084013e61313e565b606091505b509150915061314e828286613159565b979650505050505050565b60608315613168575081610c0b565b8251156131785782518084602001fd5b8160405162461bcd60e51b81526004016105ca9190613926565b600080604083850312156131a557600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156131f3576131f36131b4565b604052919050565b600067ffffffffffffffff821115613215576132156131b4565b5060051b60200190565b80356001600160a01b038116811461323657600080fd5b919050565b600082601f83011261324c57600080fd5b8135602061326161325c836131fb565b6131ca565b82815260059290921b8401810191818101908684111561328057600080fd5b8286015b848110156132a2576132958161321f565b8352918301918301613284565b509695505050505050565b8015158114611dd157600080fd5b600080600080600060a086880312156132d357600080fd5b8535945060208601359350604086013567ffffffffffffffff808211156132f957600080fd5b61330589838a0161323b565b9450606088013591508082111561331b57600080fd5b506133288882890161323b565b9250506080860135613339816132ad565b809150509295509295909350565b6000806000806080858703121561335d57600080fd5b84359350602085013592506133746040860161321f565b91506060850135613384816132ad565b939692955090935050565b6000806000606084860312156133a457600080fd5b83359250602084013591506133bb6040850161321f565b90509250925092565b6000602082840312156133d657600080fd5b5035919050565b600080600080600060a086880312156133f557600080fd5b853594506020808701359450604087013567ffffffffffffffff8082111561341c57600080fd5b6134288a838b0161323b565b9550606089013591508082111561343e57600080fd5b61344a8a838b0161323b565b9450608089013591508082111561346057600080fd5b508701601f8101891361347257600080fd5b803561348061325c826131fb565b81815260059190911b8201830190838101908b83111561349f57600080fd5b928401925b828410156134bd578335825292840192908401906134a4565b80955050505050509295509295909350565b6000806000606084860312156134e457600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561350957600080fd5b6135158682870161323b565b9150509250925092565b6000806000806080858703121561353557600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561355b57600080fd5b6135678883890161323b565b9350606087013591508082111561357d57600080fd5b5061358a8782880161323b565b91505092959194509250565b6000602082840312156135a857600080fd5b610c0b8261321f565b60008060008060008060c087890312156135ca57600080fd5b863595506020870135945060408701359350606087013592506080870135915060a087013567ffffffffffffffff81111561360457600080fd5b61361089828a0161323b565b9150509295509295509295565b6000806040838503121561363057600080fd5b6136398361321f565b946020939093013593505050565b6000806000806080858703121561365d57600080fd5b84359350602085013592506136746040860161321f565b9396929550929360600135925050565b6020808252601f908201527f63616c6c6572206973206e6f742070726f6a65637420696e69746961746f7200604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016136f9576136f96136d1565b5060010190565b81810381811115610b4457610b446136d1565b80820180821115610b4457610b446136d1565b6020808252825182820181905260009190848201906040850190845b818110156137675783516001600160a01b031683529284019291840191600101613742565b50909695505050505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600b908201526a16995c9bc8185b5bdd5b9d60aa1b604082015260600190565b60008160001904831182151516156137e9576137e96136d1565b500290565b60008261380b57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526014908201527337379039bab1b41031b7b63630b137b930ba37b960611b604082015260600190565b6020808252600f908201526e6e6f2073756368207061636b61676560881b604082015260600190565b600081613876576138766136d1565b506000190190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156138db57600080fd5b8151610c0b816132ad565b60005b838110156139015781810151838201526020016138e9565b50506000910152565b6000825161391c8184602087016138e6565b9190910192915050565b60208152600082518060208401526139458160408501602087016138e6565b601f01601f1916919091016040019291505056fea26469706673582212206fbfdd8250baaf0738cdc9fbe9dcc1cc69f53e27eb017c3706658ddfb1219f8d64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/TokenFactory.sol:TokenFactory": {"srcmap": "619:2543:38:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "619:2543:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1524:293;;;;;;:::i;:::-;;:::i;:::-;;2071:101:0;;;:::i;2751:409:38:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2170:32:48;;;2152:51;;2140:2;2125:18;2751:409:38;;;;;;;1441:85:0;1513:6;;-1:-1:-1;;;;;1513:6:0;1441:85;;776:26:38;;;;;-1:-1:-1;;;;;776:26:38;;;934:35;;;;;-1:-1:-1;;;;;934:35:38;;;1112:254;;;;;;:::i;:::-;;:::i;2108:290::-;;;;;;:::i;:::-;;:::i;2321:198:0:-;;;;;;:::i;:::-;;:::i;1524:293:38:-;1334:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;1607:26:38;::::1;1599:71;;;::::0;-1:-1:-1;;;1599:71:38;;3530:2:48;1599:71:38::1;::::0;::::1;3512:21:48::0;;;3549:18;;;3542:30;3608:34;3588:18;;;3581:62;3660:18;;1599:71:38::1;;;;;;;;;1705:11;::::0;;-1:-1:-1;;;;;1726:26:38;;::::1;-1:-1:-1::0;;;;;;1726:26:38;::::1;::::0;::::1;::::0;;;1767:43:::1;::::0;1705:11;::::1;::::0;1726:26;1705:11;;1767:43:::1;::::0;1680:22:::1;::::0;1767:43:::1;1589:228;1524:293:::0;:::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;2751:409:38:-;2879:11;;2852:7;;-1:-1:-1;;;;;2879:11:38;2871:70;;;;-1:-1:-1;;;2871:70:38;;3891:2:48;2871:70:38;;;3873:21:48;;;3910:18;;;3903:30;3969:34;3949:18;;;3942:62;4021:18;;2871:70:38;3689:356:48;2871:70:38;3001:17;;2951:15;;2980:40;;-1:-1:-1;;;;;3001:17:38;2980:12;:40::i;:::-;3047:11;;3031:50;;-1:-1:-1;;;3031:50:38;;2951:70;;-1:-1:-1;;;;;;3031:15:38;;;;;;:50;;3047:11;;3060:5;;3067:7;;3076:4;;3031:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3097:26:38;;-1:-1:-1;;;;;3097:26:38;;;-1:-1:-1;3097:26:38;;-1:-1:-1;3097:26:38;;;3148:4;2751:409;-1:-1:-1;;;;2751:409:38:o;1112:254::-;3111:19:1;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:1;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:1;1476:19:11;:23;;;3219:66:1;;-1:-1:-1;3268:12:1;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:1;;5330:2:48;3157:201:1;;;5312:21:48;5369:2;5349:18;;;5342:30;5408:34;5388:18;;;5381:62;-1:-1:-1;;;5459:18:48;;;5452:44;5513:19;;3157:201:1;5128:410:48;3157:201:1;3368:12;:16;;-1:-1:-1;;3368:16:1;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:1;;;;;3394:65;1185:16:38::1;:14;:16::i;:::-;1220:68;-1:-1:-1::0;;;;;1220:38:38;::::1;-1:-1:-1::0;;;1220:38:38::1;:68::i;:::-;1212:106;;;::::0;-1:-1:-1;;;1212:106:38;;5745:2:48;1212:106:38::1;::::0;::::1;5727:21:48::0;5784:2;5764:18;;;5757:30;5823:27;5803:18;;;5796:55;5868:18;;1212:106:38::1;5543:349:48::0;1212:106:38::1;1328:17;:31:::0;;-1:-1:-1;;;;;;1328:31:38::1;-1:-1:-1::0;;;;;1328:31:38;::::1;;::::0;;3479:99:1;;;;3529:5;3513:21;;-1:-1:-1;;3513:21:1;;;3553:14;;-1:-1:-1;6049:36:48;;3553:14:1;;6037:2:48;6022:18;3553:14:1;;;;;;;3479:99;3101:483;1112:254:38;:::o;2108:290::-;2243:14;2299:10;2311:12;2325:5;2332:7;2286:54;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;2269:72;;2378:12;2370:6;-1:-1:-1;;;;;2356:35:38;;;;;;;;;;;2108:290;;;;;:::o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;6856:2:48;2401:73:0::1;::::0;::::1;6838:21:48::0;6895:2;6875:18;;;6868:30;6934:34;6914:18;;;6907:62;-1:-1:-1;;;6985:18:48;;;6978:36;7031:19;;2401:73:0::1;6654:402:48::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;:::-;2321:198:::0;:::o;1599:130::-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:12;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;7263:2:48;1654:68:0;;;7245:21:48;;;7282:18;;;7275:30;7341:34;7321:18;;;7314:62;7393:18;;1654:68:0;7061:356:48;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;973:558:18:-;1030:16;1141:4;1135:11;-1:-1:-1;;;1166:3:18;1159:79;1284:14;1278:4;1274:25;1267:4;1262:3;1258:14;1251:49;-1:-1:-1;;;1329:4:18;1324:3;1320:14;1313:90;1443:4;1438:3;1435:1;1428:20;1416:32;-1:-1:-1;;;;;;;1475:22:18;;1467:57;;;;-1:-1:-1;;;1467:57:18;;7624:2:48;1467:57:18;;;7606:21:48;7663:2;7643:18;;;7636:30;-1:-1:-1;;;7682:18:48;;;7675:52;7744:18;;1467:57:18;7422:346:48;1467:57:18;973:558;;;:::o;1003:95:0:-;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1065:26:0::1;:24;:26::i;1366:274:14:-:0;1453:4;1560:23;1575:7;1560:14;:23::i;:::-;:73;;;;;1587:46;1612:7;1621:11;1587:24;:46::i;:::-;1553:80;1366:274;-1:-1:-1;;;1366:274:14:o;1104:111:0:-;4910:13:1;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:1;;;;;;;:::i;:::-;1176:32:0::1;929:10:12::0;1176:18:0::1;:32::i;726:422:14:-:0;790:4;997:71;1022:7;-1:-1:-1;;;997:24:14;:71::i;:::-;:144;;;;-1:-1:-1;1085:56:14;1110:7;-1:-1:-1;;;;;;1085:24:14;:56::i;:::-;1084:57;997:144;978:163;726:422;-1:-1:-1;;726:422:14:o;4256:649::-;4418:82;;;-1:-1:-1;;;;;;8347:33:48;;4418:82:14;;;;8329:52:48;;;;4418:82:14;;;;;;;;;;8302:18:48;;;;4418:82:14;;;;;;;;;-1:-1:-1;;;;;4418:82:14;-1:-1:-1;;;4418:82:14;;;4708:20;;4349:4;;4418:82;4349:4;;;;;;4418:82;4349:4;;4708:20;4673:7;4666:5;4655:86;4644:97;;4768:16;4754:30;;4818:4;4812:11;4797:26;;4850:7;:29;;;;;4875:4;4861:10;:18;;4850:29;:48;;;;;4897:1;4883:11;:15;4850:48;4843:55;4256:649;-1:-1:-1;;;;;;;4256:649:14:o;-1:-1:-1:-;;;;;;;;:::o;14:131:48:-;-1:-1:-1;;;;;89:31:48;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;402:127::-;463:10;458:3;454:20;451:1;444:31;494:4;491:1;484:15;518:4;515:1;508:15;534:719;577:5;630:3;623:4;615:6;611:17;607:27;597:55;;648:1;645;638:12;597:55;684:6;671:20;710:18;747:2;743;740:10;737:36;;;753:18;;:::i;:::-;828:2;822:9;796:2;882:13;;-1:-1:-1;;878:22:48;;;902:2;874:31;870:40;858:53;;;926:18;;;946:22;;;923:46;920:72;;;972:18;;:::i;:::-;1012:10;1008:2;1001:22;1047:2;1039:6;1032:18;1093:3;1086:4;1081:2;1073:6;1069:15;1065:26;1062:35;1059:55;;;1110:1;1107;1100:12;1059:55;1174:2;1167:4;1159:6;1155:17;1148:4;1140:6;1136:17;1123:54;1221:1;1214:4;1209:2;1201:6;1197:15;1193:26;1186:37;1241:6;1232:15;;;;;;534:719;;;;:::o;1258:743::-;1365:6;1373;1381;1434:2;1422:9;1413:7;1409:23;1405:32;1402:52;;;1450:1;1447;1440:12;1402:52;1490:9;1477:23;1519:18;1560:2;1552:6;1549:14;1546:34;;;1576:1;1573;1566:12;1546:34;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1702:2;1691:9;1687:18;1674:32;1658:48;;1731:2;1721:8;1718:16;1715:36;;;1747:1;1744;1737:12;1715:36;1770:52;1814:7;1803:8;1792:9;1788:24;1770:52;:::i;:::-;1760:62;;1875:2;1864:9;1860:18;1847:32;1831:48;;1904:2;1894:8;1891:16;1888:36;;;1920:1;1917;1910:12;1888:36;;1943:52;1987:7;1976:8;1965:9;1961:24;1943:52;:::i;:::-;1933:62;;;1258:743;;;;;:::o;2712:611::-;2809:6;2817;2825;2878:2;2866:9;2857:7;2853:23;2849:32;2846:52;;;2894:1;2891;2884:12;2846:52;2930:9;2917:23;2907:33;;2991:2;2980:9;2976:18;2963:32;3014:18;3055:2;3047:6;3044:14;3041:34;;;3071:1;3068;3061:12;4050:423;4092:3;4130:5;4124:12;4157:6;4152:3;4145:19;4182:1;4192:162;4206:6;4203:1;4200:13;4192:162;;;4268:4;4324:13;;;4320:22;;4314:29;4296:11;;;4292:20;;4285:59;4221:12;4192:162;;;4196:3;4399:1;4392:4;4383:6;4378:3;4374:16;4370:27;4363:38;4462:4;4455:2;4451:7;4446:2;4438:6;4434:15;4430:29;4425:3;4421:39;4417:50;4410:57;;;4050:423;;;;:::o;4478:645::-;-1:-1:-1;;;;;4751:32:48;;4733:51;;4820:3;4815:2;4800:18;;4793:31;;;-1:-1:-1;;4847:46:48;;4873:19;;4865:6;4847:46;:::i;:::-;4941:9;4933:6;4929:22;4924:2;4913:9;4909:18;4902:50;4975:33;5001:6;4993;4975:33;:::i;:::-;4961:47;;5056:9;5048:6;5044:22;5039:2;5028:9;5024:18;5017:50;5084:33;5110:6;5102;5084:33;:::i;6096:553::-;6378:1;6374;6369:3;6365:11;6361:19;6353:6;6349:32;6338:9;6331:51;6418:6;6413:2;6402:9;6398:18;6391:34;6461:3;6456:2;6445:9;6441:18;6434:31;6312:4;6488:46;6529:3;6518:9;6514:19;6506:6;6488:46;:::i;:::-;6582:9;6574:6;6570:22;6565:2;6554:9;6550:18;6543:50;6610:33;6636:6;6628;6610:33;:::i;7773:407::-;7975:2;7957:21;;;8014:2;7994:18;;;7987:30;8053:34;8048:2;8033:18;;8026:62;-1:-1:-1;;;8119:2:48;8104:18;;8097:41;8170:3;8155:19;;7773:407::o", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"}],\"name\":\"DeployedNFT\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"DeployedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\":\"oldLearnToEarn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newLearnToEarn\",\"type\":\"address\"}],\"name\":\"SetLearnToEarn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"name\":\"deployNFT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"deployToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractINFTReward\",\"name\":\"_nftRewared\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"learnToEarn\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[{\"internalType\":\"address\",\"name\":\"_learnToEarn\",\"type\":\"address\"}],\"name\":\"setLearnToEarn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"templateNFTReward\",\"outputs\":[{\"internalType\":\"contractINFTReward\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50611a28806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200009f5760003560e01c8063a4e8aaae116200006e578063a4e8aaae146200010c578063c455ed401462000120578063c4d66de81462000134578063da68ed12146200014b578063f2fde38b146200016257600080fd5b80633025928f14620000a4578063715018a614620000bd5780637309fe2214620000c75780638da5cb5b14620000fa575b600080fd5b620000bb620000b5366004620008d1565b62000179565b005b620000bb62000231565b620000de620000d83660046200099c565b62000249565b6040516001600160a01b03909116815260200160405180910390f35b6033546001600160a01b0316620000de565b606554620000de906001600160a01b031681565b606654620000de906001600160a01b031681565b620000bb62000145366004620008d1565b6200036b565b620000de6200015c36600462000a2e565b6200050b565b620000bb62000173366004620008d1565b6200058c565b620001836200060b565b6001600160a01b038116620001df5760405162461bcd60e51b815260206004820181905260248201527f6c6561726e546f4561726e2061646472657373206973206e6f742076616c696460448201526064015b60405180910390fd5b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f448700cd409e255b87a8a438a7cd86b88452daafacabc31ab74b8da7b039a47890600090a35050565b6200023b6200060b565b62000247600062000667565b565b6065546000906001600160a01b0316620002a65760405162461bcd60e51b815260206004820181905260248201527f4c6561726e546f4561726e2061646472657373206973206e6f742076616c69646044820152606401620001d6565b606654600090620002c0906001600160a01b0316620006b9565b606554604051635f1e6f6d60e01b81529192506001600160a01b0380841692635f1e6f6d92620002fb92169089908990899060040162000aac565b600060405180830381600087803b1580156200031657600080fd5b505af11580156200032b573d6000803e3d6000fd5b50506040516001600160a01b03841692507ff784f9219f2a6abce53e3cbad9cdb6703c11c16fe0fb6e2525b74f9a04fed14c9150600090a2949350505050565b600054610100900460ff16158080156200038c5750600054600160ff909116105b80620003a85750303b158015620003a8575060005460ff166001145b6200040d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620001d6565b6000805460ff19166001179055801562000431576000805461ff0019166101001790555b6200043b62000758565b620004576001600160a01b03831663357c172f60e01b6200078c565b620004a55760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964204e46545265776172642061646472657373000000000000006044820152606401620001d6565b606680546001600160a01b0319166001600160a01b038416179055801562000507576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000338484846040516200051f90620008ad565b6200052e949392919062000afc565b604051809103906000f0801580156200054b573d6000803e3d6000fd5b50905083816001600160a01b03167f9d4a605126592dbb92f903ac98e8c937282fbe6325f14bf4d5eacf3544edc35c60405160405180910390a39392505050565b620005966200060b565b6001600160a01b038116620005fd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620001d6565b620006088162000667565b50565b6033546001600160a01b03163314620002475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001d6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528260601b60148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09150506001600160a01b038116620007535760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401620001d6565b919050565b600054610100900460ff16620007825760405162461bcd60e51b8152600401620001d69062000b39565b62000247620007b4565b60006200079983620007e9565b8015620007ad5750620007ad838362000822565b9392505050565b600054610100900460ff16620007de5760405162461bcd60e51b8152600401620001d69062000b39565b620002473362000667565b6000620007fe826301ffc9a760e01b62000822565b80156200081c57506200081a826001600160e01b031962000822565b155b92915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d9150600051905082801562000895575060208210155b8015620008a25750600081115b979650505050505050565b610e6e8062000b8583390190565b6001600160a01b03811681146200060857600080fd5b600060208284031215620008e457600080fd5b8135620007ad81620008bb565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200091957600080fd5b813567ffffffffffffffff80821115620009375762000937620008f1565b604051601f8301601f19908116603f01168101908282118183101715620009625762000962620008f1565b816040528381528660208588010111156200097c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215620009b257600080fd5b833567ffffffffffffffff80821115620009cb57600080fd5b620009d98783880162000907565b94506020860135915080821115620009f057600080fd5b620009fe8783880162000907565b9350604086013591508082111562000a1557600080fd5b5062000a248682870162000907565b9150509250925092565b60008060006060848603121562000a4457600080fd5b83359250602084013567ffffffffffffffff80821115620009f057600080fd5b6000815180845260005b8181101562000a8c5760208185018101518683018201520162000a6e565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038516815260806020820181905260009062000ad29083018662000a64565b828103604084015262000ae6818662000a64565b90508281036060840152620008a2818562000a64565b60018060a01b038516815283602082015260806040820152600062000b25608083018562000a64565b8281036060840152620008a2818562000a64565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe60806040523480156200001157600080fd5b5060405162000e6e38038062000e6e833981016040819052620000349162000224565b8181600362000044838262000346565b50600462000053828262000346565b5050506200006884846200007260201b60201c565b505050506200043a565b6001600160a01b038216620000cd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000e1919062000412565b90915550506001600160a01b038216600090815260208190526040812080548392906200011090849062000412565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200018757600080fd5b81516001600160401b0380821115620001a457620001a46200015f565b604051601f8301601f19908116603f01168101908282118183101715620001cf57620001cf6200015f565b81604052838152602092508683858801011115620001ec57600080fd5b600091505b83821015620002105785820183015181830184015290820190620001f1565b600093810190920192909252949350505050565b600080600080608085870312156200023b57600080fd5b84516001600160a01b03811681146200025357600080fd5b6020860151604087015191955093506001600160401b03808211156200027857600080fd5b620002868883890162000175565b935060608701519150808211156200029d57600080fd5b50620002ac8782880162000175565b91505092959194509250565b600181811c90821680620002cd57607f821691505b602082108103620002ee57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200015a57600081815260208120601f850160051c810160208610156200031d5750805b601f850160051c820191505b818110156200033e5782815560010162000329565b505050505050565b81516001600160401b038111156200036257620003626200015f565b6200037a81620003738454620002b8565b84620002f4565b602080601f831160018114620003b25760008415620003995750858301515b600019600386901b1c1916600185901b1785556200033e565b600085815260208120601f198616915b82811015620003e357888601518255948401946001909101908401620003c2565b5085821015620004025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200043457634e487b7160e01b600052601160045260246000fd5b92915050565b610a24806200044a6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806342966c681161007157806342966c681461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061083a565b60405180910390f35b6100ea6100e53660046108a4565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046108ce565b61026c565b604051601281526020016100ce565b6100ea61013c3660046108a4565b610290565b61015461014f36600461090a565b6102b2565b005b6100fe610164366004610923565b6001600160a01b031660009081526020819052604090205490565b6100c16102bf565b6100ea6101953660046108a4565b6102ce565b6100ea6101a83660046108a4565b61034e565b6100fe6101bb366004610945565b61035c565b6060600380546101cf90610978565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610978565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610387565b60019150505b92915050565b60003361027a8582856104ac565b610285858585610526565b506001949350505050565b6000336102608185856102a3838361035c565b6102ad91906109c8565b610387565b6102bc33826106f4565b50565b6060600480546101cf90610978565b600033816102dc828661035c565b9050838110156103415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102858286868403610387565b600033610260818585610526565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103e95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610338565b6001600160a01b03821661044a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610338565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104b8848461035c565b9050600019811461052057818110156105135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610338565b6105208484848403610387565b50505050565b6001600160a01b03831661058a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610338565b6001600160a01b0382166105ec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610338565b6001600160a01b038316600090815260208190526040902054818110156106645760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610338565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061069b9084906109c8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106e791815260200190565b60405180910390a3610520565b6001600160a01b0382166107545760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610338565b6001600160a01b038216600090815260208190526040902054818110156107c85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610338565b6001600160a01b03831660009081526020819052604081208383039055600280548492906107f79084906109db565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161049f565b600060208083528351808285015260005b818110156108675785810183015185820160400152820161084b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461089f57600080fd5b919050565b600080604083850312156108b757600080fd5b6108c083610888565b946020939093013593505050565b6000806000606084860312156108e357600080fd5b6108ec84610888565b92506108fa60208501610888565b9150604084013590509250925092565b60006020828403121561091c57600080fd5b5035919050565b60006020828403121561093557600080fd5b61093e82610888565b9392505050565b6000806040838503121561095857600080fd5b61096183610888565b915061096f60208401610888565b90509250929050565b600181811c9082168061098c57607f821691505b6020821081036109ac57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610266576102666109b2565b81810381811115610266576102666109b256fea26469706673582212206f580637e2726840ddefd5197269032aa3ba94a5d49ec58f0f176cc76bec3ecd64736f6c63430008100033a2646970667358221220a2972ed69cd8a17cd17a6f8d32a9251583a42610dac37f45a11a5acd0f363cf764736f6c63430008100033", "bin-runtime": "60806040523480156200001157600080fd5b50600436106200009f5760003560e01c8063a4e8aaae116200006e578063a4e8aaae146200010c578063c455ed401462000120578063c4d66de81462000134578063da68ed12146200014b578063f2fde38b146200016257600080fd5b80633025928f14620000a4578063715018a614620000bd5780637309fe2214620000c75780638da5cb5b14620000fa575b600080fd5b620000bb620000b5366004620008d1565b62000179565b005b620000bb62000231565b620000de620000d83660046200099c565b62000249565b6040516001600160a01b03909116815260200160405180910390f35b6033546001600160a01b0316620000de565b606554620000de906001600160a01b031681565b606654620000de906001600160a01b031681565b620000bb62000145366004620008d1565b6200036b565b620000de6200015c36600462000a2e565b6200050b565b620000bb62000173366004620008d1565b6200058c565b620001836200060b565b6001600160a01b038116620001df5760405162461bcd60e51b815260206004820181905260248201527f6c6561726e546f4561726e2061646472657373206973206e6f742076616c696460448201526064015b60405180910390fd5b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f448700cd409e255b87a8a438a7cd86b88452daafacabc31ab74b8da7b039a47890600090a35050565b6200023b6200060b565b62000247600062000667565b565b6065546000906001600160a01b0316620002a65760405162461bcd60e51b815260206004820181905260248201527f4c6561726e546f4561726e2061646472657373206973206e6f742076616c69646044820152606401620001d6565b606654600090620002c0906001600160a01b0316620006b9565b606554604051635f1e6f6d60e01b81529192506001600160a01b0380841692635f1e6f6d92620002fb92169089908990899060040162000aac565b600060405180830381600087803b1580156200031657600080fd5b505af11580156200032b573d6000803e3d6000fd5b50506040516001600160a01b03841692507ff784f9219f2a6abce53e3cbad9cdb6703c11c16fe0fb6e2525b74f9a04fed14c9150600090a2949350505050565b600054610100900460ff16158080156200038c5750600054600160ff909116105b80620003a85750303b158015620003a8575060005460ff166001145b6200040d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620001d6565b6000805460ff19166001179055801562000431576000805461ff0019166101001790555b6200043b62000758565b620004576001600160a01b03831663357c172f60e01b6200078c565b620004a55760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964204e46545265776172642061646472657373000000000000006044820152606401620001d6565b606680546001600160a01b0319166001600160a01b038416179055801562000507576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000338484846040516200051f90620008ad565b6200052e949392919062000afc565b604051809103906000f0801580156200054b573d6000803e3d6000fd5b50905083816001600160a01b03167f9d4a605126592dbb92f903ac98e8c937282fbe6325f14bf4d5eacf3544edc35c60405160405180910390a39392505050565b620005966200060b565b6001600160a01b038116620005fd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620001d6565b620006088162000667565b50565b6033546001600160a01b03163314620002475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001d6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528260601b60148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09150506001600160a01b038116620007535760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401620001d6565b919050565b600054610100900460ff16620007825760405162461bcd60e51b8152600401620001d69062000b39565b62000247620007b4565b60006200079983620007e9565b8015620007ad5750620007ad838362000822565b9392505050565b600054610100900460ff16620007de5760405162461bcd60e51b8152600401620001d69062000b39565b620002473362000667565b6000620007fe826301ffc9a760e01b62000822565b80156200081c57506200081a826001600160e01b031962000822565b155b92915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d9150600051905082801562000895575060208210155b8015620008a25750600081115b979650505050505050565b610e6e8062000b8583390190565b6001600160a01b03811681146200060857600080fd5b600060208284031215620008e457600080fd5b8135620007ad81620008bb565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200091957600080fd5b813567ffffffffffffffff80821115620009375762000937620008f1565b604051601f8301601f19908116603f01168101908282118183101715620009625762000962620008f1565b816040528381528660208588010111156200097c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215620009b257600080fd5b833567ffffffffffffffff80821115620009cb57600080fd5b620009d98783880162000907565b94506020860135915080821115620009f057600080fd5b620009fe8783880162000907565b9350604086013591508082111562000a1557600080fd5b5062000a248682870162000907565b9150509250925092565b60008060006060848603121562000a4457600080fd5b83359250602084013567ffffffffffffffff80821115620009f057600080fd5b6000815180845260005b8181101562000a8c5760208185018101518683018201520162000a6e565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038516815260806020820181905260009062000ad29083018662000a64565b828103604084015262000ae6818662000a64565b90508281036060840152620008a2818562000a64565b60018060a01b038516815283602082015260806040820152600062000b25608083018562000a64565b8281036060840152620008a2818562000a64565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe60806040523480156200001157600080fd5b5060405162000e6e38038062000e6e833981016040819052620000349162000224565b8181600362000044838262000346565b50600462000053828262000346565b5050506200006884846200007260201b60201c565b505050506200043a565b6001600160a01b038216620000cd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000e1919062000412565b90915550506001600160a01b038216600090815260208190526040812080548392906200011090849062000412565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200018757600080fd5b81516001600160401b0380821115620001a457620001a46200015f565b604051601f8301601f19908116603f01168101908282118183101715620001cf57620001cf6200015f565b81604052838152602092508683858801011115620001ec57600080fd5b600091505b83821015620002105785820183015181830184015290820190620001f1565b600093810190920192909252949350505050565b600080600080608085870312156200023b57600080fd5b84516001600160a01b03811681146200025357600080fd5b6020860151604087015191955093506001600160401b03808211156200027857600080fd5b620002868883890162000175565b935060608701519150808211156200029d57600080fd5b50620002ac8782880162000175565b91505092959194509250565b600181811c90821680620002cd57607f821691505b602082108103620002ee57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200015a57600081815260208120601f850160051c810160208610156200031d5750805b601f850160051c820191505b818110156200033e5782815560010162000329565b505050505050565b81516001600160401b038111156200036257620003626200015f565b6200037a81620003738454620002b8565b84620002f4565b602080601f831160018114620003b25760008415620003995750858301515b600019600386901b1c1916600185901b1785556200033e565b600085815260208120601f198616915b82811015620003e357888601518255948401946001909101908401620003c2565b5085821015620004025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200043457634e487b7160e01b600052601160045260246000fd5b92915050565b610a24806200044a6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806342966c681161007157806342966c681461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061083a565b60405180910390f35b6100ea6100e53660046108a4565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046108ce565b61026c565b604051601281526020016100ce565b6100ea61013c3660046108a4565b610290565b61015461014f36600461090a565b6102b2565b005b6100fe610164366004610923565b6001600160a01b031660009081526020819052604090205490565b6100c16102bf565b6100ea6101953660046108a4565b6102ce565b6100ea6101a83660046108a4565b61034e565b6100fe6101bb366004610945565b61035c565b6060600380546101cf90610978565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610978565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610387565b60019150505b92915050565b60003361027a8582856104ac565b610285858585610526565b506001949350505050565b6000336102608185856102a3838361035c565b6102ad91906109c8565b610387565b6102bc33826106f4565b50565b6060600480546101cf90610978565b600033816102dc828661035c565b9050838110156103415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102858286868403610387565b600033610260818585610526565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103e95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610338565b6001600160a01b03821661044a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610338565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104b8848461035c565b9050600019811461052057818110156105135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610338565b6105208484848403610387565b50505050565b6001600160a01b03831661058a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610338565b6001600160a01b0382166105ec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610338565b6001600160a01b038316600090815260208190526040902054818110156106645760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610338565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061069b9084906109c8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106e791815260200190565b60405180910390a3610520565b6001600160a01b0382166107545760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610338565b6001600160a01b038216600090815260208190526040902054818110156107c85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610338565b6001600160a01b03831660009081526020819052604081208383039055600280548492906107f79084906109db565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161049f565b600060208083528351808285015260005b818110156108675785810183015185820160400152820161084b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461089f57600080fd5b919050565b600080604083850312156108b757600080fd5b6108c083610888565b946020939093013593505050565b6000806000606084860312156108e357600080fd5b6108ec84610888565b92506108fa60208501610888565b9150604084013590509250925092565b60006020828403121561091c57600080fd5b5035919050565b60006020828403121561093557600080fd5b61093e82610888565b9392505050565b6000806040838503121561095857600080fd5b61096183610888565b915061096f60208401610888565b90509250929050565b600181811c9082168061098c57607f821691505b6020821081036109ac57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610266576102666109b2565b81810381811115610266576102666109b256fea26469706673582212206f580637e2726840ddefd5197269032aa3ba94a5d49ec58f0f176cc76bec3ecd64736f6c63430008100033a2646970667358221220a2972ed69cd8a17cd17a6f8d32a9251583a42610dac37f45a11a5acd0f363cf764736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/ILearnToEarn.sol:ILearnToEarn": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"}],\"name\":\"AddedBudget\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"learner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rewardAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"nftIds\",\"type\":\"uint256[]\"}],\"name\":\"ClaimedReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"learner\",\"type\":\"address\"}],\"name\":\"CompletedCourse\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timeStarted\",\"type\":\"uint256\"}],\"name\":\"CreatedCourse\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"RemovedCourse\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"courseId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawnBudget\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_budget\",\"type\":\"uint256\"}],\"name\":\"addBudget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_learner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_timeStarted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeCompleted\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_nftIds\",\"type\":\"uint256[]\"}],\"name\":\"completeCourse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rewardAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeEndBonus\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isUsingDuration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_isBonusToken\",\"type\":\"bool\"}],\"name\":\"createCourse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_courseId\",\"type\":\"bytes32\"}],\"name\":\"withdrawBudget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/INFTReward.sol:INFTReward": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_learnToEarn\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/IReBakedDAO.sol:IReBakedDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mgp\",\"type\":\"uint256\"}],\"name\":\"AddedCollaborator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"observers\",\"type\":\"address[]\"}],\"name\":\"AddedObservers\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"}],\"name\":\"ApprovedCollaborator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"}],\"name\":\"ApprovedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revertedBudget\",\"type\":\"uint256\"}],\"name\":\"CanceledPackage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"observerBudget\",\"type\":\"uint256\"}],\"name\":\"CreatedPackage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budget\",\"type\":\"uint256\"}],\"name\":\"CreatedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"budgetLeft\",\"type\":\"uint256\"}],\"name\":\"FinishedPackage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"budgetLeft\",\"type\":\"uint256\"}],\"name\":\"FinishedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mgp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonus\",\"type\":\"uint256\"}],\"name\":\"PaidCollaboratorRewards\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"PaidObserverFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId_\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId_\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collaborator_\",\"type\":\"address\"}],\"name\":\"RemovedCollaborator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"packageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"observers\",\"type\":\"address[]\"}],\"name\":\"RemovedObservers\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"projectId\",\"type\":\"bytes32\"}],\"name\":\"StartedProject\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldTreasury\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"UpdatedTreasury\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_mgp\",\"type\":\"uint256\"}],\"name\":\"addCollaborator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"}],\"name\":\"addObservers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"}],\"name\":\"approveCollaborator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_collaborators\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"_workStarted\",\"type\":\"bool\"}],\"name\":\"cancelPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_budget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bonus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_observerBudget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_collaboratorsLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"}],\"name\":\"createPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"budget_\",\"type\":\"uint256\"}],\"name\":\"createProject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_collaborators\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_scores\",\"type\":\"uint256[]\"}],\"name\":\"finishPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"}],\"name\":\"finishProject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_collaborator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_shouldPayMgp\",\"type\":\"bool\"}],\"name\":\"removeCollaborator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_observers\",\"type\":\"address[]\"}],\"name\":\"removeObservers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"}],\"name\":\"selfRemove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_projectId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_packageId\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_observersIn\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_observersOut\",\"type\":\"address[]\"}],\"name\":\"updateObservers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury_\",\"type\":\"address\"}],\"name\":\"updateTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/interfaces/ITokenFactory.sol:ITokenFactory": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"nft\",\"type\":\"address\"}],\"name\":\"DeployedNFT\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"DeployedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldLearnToEarn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newLearnToEarn\",\"type\":\"address\"}],\"name\":\"SetLearnToEarn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"name\":\"deployNFT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"deployToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/CollaboratorLibrary.sol:CollaboratorLibrary": {"srcmap": "103:1996:43:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;103:1996:43;;;;;;;;;;;;;;;;;", "srcmap-runtime": "103:1996:43:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069b082de11cf28234a75c60fa34e73e90f09ac864a4cea3c8f02e6487b74fbee64736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069b082de11cf28234a75c60fa34e73e90f09ac864a4cea3c8f02e6487b74fbee64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/ObserverLibrary.sol:ObserverLibrary": {"srcmap": "99:1095:44:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;99:1095:44;;;;;;;;;;;;;;;;;", "srcmap-runtime": "99:1095:44:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fcf98ba60cba496f298757d1221a007194c155ebe10ac664b5f478f71b4031f164736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fcf98ba60cba496f298757d1221a007194c155ebe10ac664b5f478f71b4031f164736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/PackageLibrary.sol:PackageLibrary": {"srcmap": "98:6039:45:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;98:6039:45;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:6039:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;127:46;;171:2;127:46;;;;;168:25:48;;;156:2;141:18;127:46:45;;;;;;", "abi": "[{\"inputs\":[],\"name\":\"MAX_COLLABORATORS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_OBSERVERS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "6091610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c8063eb892b10146042578063ec120a00146042575b600080fd5b6049600a81565b60405190815260200160405180910390f3fea26469706673582212205aa3ccd4d106552c101c6170f4ef264bf9581ec19c3a7b940a42126181fa5c0864736f6c63430008100033", "bin-runtime": "7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c8063eb892b10146042578063ec120a00146042575b600080fd5b6049600a81565b60405190815260200160405180910390f3fea26469706673582212205aa3ccd4d106552c101c6170f4ef264bf9581ec19c3a7b940a42126181fa5c0864736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}, "/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/libraries/ProjectLibrary.sol:ProjectLibrary": {"srcmap": "301:3348:46:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;301:3348:46;;;;;;;;;;;;;;;;;", "srcmap-runtime": "301:3348:46:-:0;;;;;;;;", "abi": "[]", "bin": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220776f6f4b6e258f8a33e3e90f3615192c43f9043b376b39164c3f06963a7e2a3b64736f6c63430008100033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220776f6f4b6e258f8a33e3e90f3615192c43f9043b376b39164c3f06963a7e2a3b64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}}} \ No newline at end of file diff --git a/crytic-export/7b56c664f87a319177abdc204d9723d0.json b/crytic-export/7b56c664f87a319177abdc204d9723d0.json deleted file mode 100644 index a77c7a3..0000000 --- a/crytic-export/7b56c664f87a319177abdc204d9723d0.json +++ /dev/null @@ -1 +0,0 @@ -{"sources": {"/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ExplorationExample.sol": {"AST": {"absolutePath": "contracts/ExplorationExample.sol", "exportedSymbols": {"ExplorationExample": [22]}, "id": 23, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".16"], "nodeType": "PragmaDirective", "src": "32:23:0"}, {"abstract": false, "baseContracts": [], "canonicalName": "ExplorationExample", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 22, "linearizedBaseContracts": [22], "name": "ExplorationExample", "nameLocation": "66:18:0", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 3, "mutability": "mutable", "name": "value", "nameLocation": "107:5:0", "nodeType": "VariableDeclaration", "scope": 22, "src": "91:21:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "91:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 12, "nodeType": "Block", "src": "165:34:0", "statements": [{"expression": {"id": 10, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 8, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3, "src": "175:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 9, "name": "_newValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5, "src": "183:9:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "175:17:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 11, "nodeType": "ExpressionStatement", "src": "175:17:0"}]}, "functionSelector": "55241077", "id": 13, "implemented": true, "kind": "function", "modifiers": [], "name": "setValue", "nameLocation": "128:8:0", "nodeType": "FunctionDefinition", "parameters": {"id": 6, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 5, "mutability": "mutable", "name": "_newValue", "nameLocation": "145:9:0", "nodeType": "VariableDeclaration", "scope": 13, "src": "137:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 4, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "137:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "136:19:0"}, "returnParameters": {"id": 7, "nodeType": "ParameterList", "parameters": [], "src": "165:0:0"}, "scope": 22, "src": "119:80:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"body": {"id": 20, "nodeType": "Block", "src": "257:29:0", "statements": [{"expression": {"id": 18, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3, "src": "274:5:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 17, "id": 19, "nodeType": "Return", "src": "267:12:0"}]}, "functionSelector": "20965255", "id": 21, "implemented": true, "kind": "function", "modifiers": [], "name": "getValue", "nameLocation": "214:8:0", "nodeType": "FunctionDefinition", "parameters": {"id": 14, "nodeType": "ParameterList", "parameters": [], "src": "222:2:0"}, "returnParameters": {"id": 17, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 16, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 21, "src": "248:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 15, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "248:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "247:9:0"}, "scope": 22, "src": "205:81:0", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 23, "src": "57:231:0", "usedErrors": []}], "src": "32:256:0"}}}, "sourceList": ["/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ExplorationExample.sol"], "contracts": {"/home/phong_ho/NAPA/Pioneer/buildsmartcontract/contracts/ExplorationExample.sol:ExplorationExample": {"srcmap": "57:231:0:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "57:231:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;205:81;248:7;274:5;205:81;;160:25:1;;;148:2;133:18;205:81:0;;;;;;;119:80;;;;;;:::i;:::-;175:5;:17;119:80;;;196:180:1;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o", "abi": "[{\"inputs\":[],\"name\":\"getValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newValue\",\"type\":\"uint256\"}],\"name\":\"setValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "6080604052348015600f57600080fd5b5060ac8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063209652551460375780635524107714604c575b600080fd5b60005460405190815260200160405180910390f35b605c6057366004605e565b600055565b005b600060208284031215606f57600080fd5b503591905056fea2646970667358221220bf6d0a79fa093eeff3c92dd6641d0ebab42ce7252bc8cdf3abb7ea720c86bfcf64736f6c63430008100033", "bin-runtime": "6080604052348015600f57600080fd5b506004361060325760003560e01c8063209652551460375780635524107714604c575b600080fd5b60005460405190815260200160405180910390f35b605c6057366004605e565b600055565b005b600060208284031215606f57600080fd5b503591905056fea2646970667358221220bf6d0a79fa093eeff3c92dd6641d0ebab42ce7252bc8cdf3abb7ea720c86bfcf64736f6c63430008100033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}}}} \ No newline at end of file From a7bc8576390a1cba437826757414482ce55c9183 Mon Sep 17 00:00:00 2001 From: phongho01 Date: Mon, 24 Apr 2023 14:37:31 +0700 Subject: [PATCH 08/13] undo deploy.js file --- scripts/deploy.js | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/scripts/deploy.js b/scripts/deploy.js index b2ee660..55b9eab 100644 --- a/scripts/deploy.js +++ b/scripts/deploy.js @@ -1,4 +1,4 @@ -const { ethers, upgrades, run } = require("hardhat"); +const { ethers, upgrades } = require("hardhat"); const fs = require("fs"); async function main() { @@ -59,9 +59,9 @@ async function main() { // await reBakedDAO.deployed(); // Upgrading - // const reBakedDAO = await upgrades.upgradeProxy("0x42472dB3d10d5AA6dE423F876CA555f803eF8ADD", ReBakedDAO); + const reBakedDAO = await upgrades.upgradeProxy("0x42472dB3d10d5AA6dE423F876CA555f803eF8ADD", ReBakedDAO); - // console.log("ReBakedDAO deployed to:", reBakedDAO.address); + console.log("ReBakedDAO deployed to:", reBakedDAO.address); // const tx = await tokenFactory.setReBakedDao(reBakedDAO.address); // await tx.wait(); @@ -75,18 +75,6 @@ async function main() { // "ReBakedDAO": reBakedDAO.address, // }; // fs.writeFileSync("contracts.json", JSON.stringify(contractAddresses)); - - // const USDC = await ethers.getContractFactory('IOUToken'); - // const usdc = await USDC.deploy(deployer.address, ethers.utils.parseUnits('10000'), 'USDC', 'USDC'); - // await usdc.deployed(); - - // console.log(usdc.address); - - await run('verify:verify', { - address: "0x1F3C3321d6fb4b376809d13E1d935A7542e2a23c", - constructorArguments: [deployer.address, ethers.utils.parseUnits('10000'), 'USDC', 'USDC'] - }) - } // We recommend this pattern to be able to use async/await everywhere From 09e8dc7026f0acbfff885adbbf6864684d1f46d2 Mon Sep 17 00:00:00 2001 From: phongho01 Date: Mon, 24 Apr 2023 14:38:32 +0700 Subject: [PATCH 09/13] remove code --- contracts/ReBakedDAO.sol | 3 --- 1 file changed, 3 deletions(-) diff --git a/contracts/ReBakedDAO.sol b/contracts/ReBakedDAO.sol index f8b2216..c8fb593 100644 --- a/contracts/ReBakedDAO.sol +++ b/contracts/ReBakedDAO.sol @@ -35,9 +35,6 @@ contract ReBakedDAO is IReBakedDAO, OwnableUpgradeable, ReentrancyGuardUpgradeab // projectId => packageId => Package mapping(bytes32 => mapping(bytes32 => Package)) private packageData; - // projectId => packageId => address collaborator - // mapping(bytes32 => mapping(bytes32 => mapping(address => bool))) private approvedUser; - // projectId => packageId => address collaborator mapping(bytes32 => mapping(bytes32 => mapping(address => Collaborator))) private collaboratorData; From 7d3818600a0f4f0bbb45feb6c912cca6337f827a Mon Sep 17 00:00:00 2001 From: phongho01 Date: Mon, 24 Apr 2023 14:41:56 +0700 Subject: [PATCH 10/13] optimize contract --- .openzeppelin/unknown-31337.json | 492 +++++++++++++++---------------- 1 file changed, 246 insertions(+), 246 deletions(-) diff --git a/.openzeppelin/unknown-31337.json b/.openzeppelin/unknown-31337.json index 991728f..7877f0d 100644 --- a/.openzeppelin/unknown-31337.json +++ b/.openzeppelin/unknown-31337.json @@ -2,7 +2,7 @@ "manifestVersion": "3.2", "admin": { "address": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", - "txHash": "0xebb9a87f16cab7d0b9f0548ec59302058a7894600f5a34cfb4ded0e0b668604f" + "txHash": "0xa747eb8873ab9c630adcd997d9f927588ea4e82633582d6e408b664117bff956" }, "proxies": [ { @@ -2717,997 +2717,997 @@ }, { "address": "0x9A676e781A523b5d0C0e43731313A708CB607508", - "txHash": "0x041fc2306775cd59d703efd206650152ddbb7097bc501e78cce272a13fb14ff9", + "txHash": "0x1d9902d4482a6433b74d2b86598976bb909cf61b0e5da4551c29445327632ebe", "kind": "transparent" }, { "address": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", - "txHash": "0xe25649b64fffa4e0488723975ece8086fa3aa1264260fbb7b2b1cb12829efd18", + "txHash": "0xb50947902e4cb802ba7beebc75526b4cf6b9d175fb976b1b8a2cac334398f326", "kind": "transparent" }, { "address": "0x59b670e9fA9D0A427751Af201D676719a970857b", - "txHash": "0xb578e1c9bff7d4a7bcbdc9bdecad9224010ca459c6ce23a3a6083a22b24b2c30", + "txHash": "0x245d8c024fdbaa6f1f36b8ea2a46f615da6ffdc93fc23c4b380dceed2ab60a80", "kind": "transparent" }, { "address": "0x4ed7c70F96B99c776995fB64377f0d4aB3B0e1C1", - "txHash": "0xf0fb96c08572c20b82899f3f9b057acce15e7a77cbdd47b6894dfa001fd2963d", + "txHash": "0xabed57bb1ad3e5dee8029e6c91de3e32d6864a4d95db9213af2fd21333d3fac5", "kind": "transparent" }, { "address": "0xc5a5C42992dECbae36851359345FE25997F5C42d", - "txHash": "0xc80dd329cf48adadbdf30f7fdd87674229c93ffb779611c72b1bee12584e6ddf", + "txHash": "0x049ccbbfc261b716f54da8ffad927e0ca98be0cf3a7f00506d9a597faa1814cb", "kind": "transparent" }, { "address": "0x67d269191c92Caf3cD7723F116c85e6E9bf55933", - "txHash": "0xb6e0e140b83624c699ed8c02bea69ea723cb0a834e0924f8ce25e9808fb62088", + "txHash": "0x1313127405279604294e978902fd261c96386593e85012557fbea2a03d72df8c", "kind": "transparent" }, { "address": "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9", - "txHash": "0xff9c908bbaa91052c54c8e62b2ca4c4e2a42e597c2efb69915cb9e6b388cd3b8", + "txHash": "0x87c40c78960f8a483e4dcd334efc04281dcce947d793e3ba325c15750f7ebb80", "kind": "transparent" }, { "address": "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", - "txHash": "0x0e90dfc0ceff5067712f643433be528b34c743e57e6b248ac7abccb332f3300c", + "txHash": "0xf9bf5671ed3015cfb1ac11548194240c83b49699be1dc4f498eb33a24613054d", "kind": "transparent" }, { "address": "0x70e0bA845a1A0F2DA3359C97E0285013525FFC49", - "txHash": "0x3ff79965e092c6f483eaddf97025d7adb7264be09451d337f07f047798bea976", + "txHash": "0x4569abec1a2a0a46ebf75215890ad579b28e41fa1af183b4ec0f6aa937dea8de", "kind": "transparent" }, { "address": "0x4826533B4897376654Bb4d4AD88B7faFD0C98528", - "txHash": "0x5ce45603a186af355e76b599ba8da566239df518764523df7bd72950c06151d6", + "txHash": "0x4e24d2de3ce31682e7fc53ea8054a551392ceefc3516e3ee6e3a4c1a5adcc9b8", "kind": "transparent" }, { "address": "0x5eb3Bc0a489C5A8288765d2336659EbCA68FCd00", - "txHash": "0xa1634eab14ec5070460ebad58a73bcd91cd0a559e70a7d73e973131b02eb0b2c", + "txHash": "0xd28bb19cea3e6a750373346abf247d40b59e18a65ea3e5ce310248090515d6d7", "kind": "transparent" }, { "address": "0x36C02dA8a0983159322a80FFE9F24b1acfF8B570", - "txHash": "0x64f54e36db043f5593ad58814faf18461fcd58f76220f3df8a007656e2eefce3", + "txHash": "0xb1df4ae98b611900a1d9ab8f1502a8c19f8d3ea550b4ce11bee61b828f8beef4", "kind": "transparent" }, { "address": "0xb7278A61aa25c888815aFC32Ad3cC52fF24fE575", - "txHash": "0x2fb9f6a134930ef29b3cb969156b8349c3e5bd4af0c1ee9c139f424fbee07017", + "txHash": "0x459e917440acdb80c367be3a0c758c1c1db261391be6838a5c5f55502179f04d", "kind": "transparent" }, { "address": "0xCD8a1C3ba11CF5ECfa6267617243239504a98d90", - "txHash": "0x4bef67095f6c8df84ebef990c85dc8b5c0f66afc871a0dbf095c077caf0a3825", + "txHash": "0x899b850087875b36e3d9121fd1d025dfdaccc3daa346c8e48661d7fd3c4751d4", "kind": "transparent" }, { "address": "0xc351628EB244ec633d5f21fBD6621e1a683B1181", - "txHash": "0xb1507f5424c549775bf9fd8c84fe4559e4d4ae6ddf0ad0d3fbc5c5609641286a", + "txHash": "0x127571cafea73d38c04c7e6a64b909ad1768a480f6f038ad84ba1bec07f69fa7", "kind": "transparent" }, { "address": "0xFD471836031dc5108809D173A067e8486B9047A3", - "txHash": "0x2fdab26e0ee2ad0d27836dac22e60e649e79178b609d52ff13f7faafb456e6a9", + "txHash": "0xc7a82db78ca8ea312931101fb1e4b2ecb298e440e68d103ea713deadad5e41fb", "kind": "transparent" }, { "address": "0x922D6956C99E12DFeB3224DEA977D0939758A1Fe", - "txHash": "0x59314c038681fd1b19b026f7a23c16705867ce2cd3489d864542f0907874c8b7", + "txHash": "0x1d1075fa27904672a5b7750ca8e542684e022f0cacc4e869709064cff57b8550", "kind": "transparent" }, { "address": "0x5081a39b8A5f0E35a8D959395a630b68B74Dd30f", - "txHash": "0x094b2b21842ea9fd2345a8e15afeae81d77c4c37d2931b96847145ebb50fac95", + "txHash": "0xe087769c1c2800766f174c0d40e97da24575c5840b3a6788572e2be0fb057bf9", "kind": "transparent" }, { "address": "0x21dF544947ba3E8b3c32561399E88B52Dc8b2823", - "txHash": "0x12a871bf85e6e4eec3b171bd52719ae8f229996ceba15f73d640feb25a4c10c9", + "txHash": "0xc13f843ca8664c6cd558286f9d0867235cf107771e24afdea54bfc065b7b1cb0", "kind": "transparent" }, { "address": "0x2E2Ed0Cfd3AD2f1d34481277b3204d807Ca2F8c2", - "txHash": "0xbe965768124d6def4c78e10824a71693960333d4a02802f28493c2d8cdb42398", + "txHash": "0xe888b1c631147b2feb0d0797c7d58e3944280d9e2fdd984cf1a7757415179ae9", "kind": "transparent" }, { "address": "0x8198f5d8F8CfFE8f9C413d98a0A55aEB8ab9FbB7", - "txHash": "0x6b9ab8f7fba1bc7ddb06b063b292a99f74c6d99431eda920c8e547d4dafdf4d7", + "txHash": "0x7bd534e7620f4a9be1819cf15259ab2cdc3bd1e5cd34e37a26cf1b5d87ba3a8b", "kind": "transparent" }, { "address": "0x0355B7B8cb128fA5692729Ab3AAa199C1753f726", - "txHash": "0xe6b1ccc433ff0733b463c4573a82a374515b40073d494d4dc2e70dce98f7310b", + "txHash": "0xa73cd098b388048f71b8481bd2b8844c3dbcd6906d6239de710126216d065715", "kind": "transparent" }, { "address": "0xBEc49fA140aCaA83533fB00A2BB19bDdd0290f25", - "txHash": "0x895101f335f137352b6b9e547b5c2e01aec25c969f106994b17229f9de350db8", + "txHash": "0xa7586a32a165ed0d8a3059f6b996c9bffa1f94f4cb7a69b19a42497f9eadb163", "kind": "transparent" }, { "address": "0xD84379CEae14AA33C123Af12424A37803F885889", - "txHash": "0xf6b9ce77bc8dc2302f1d78887f47019aa527f08ddb74cde8018bd259712424b3", + "txHash": "0x7863cc128525ba8113edc12cdedea99fbc98452eb791f7a44e01084309dc158a", "kind": "transparent" }, { "address": "0x86A2EE8FAf9A840F7a2c64CA3d51209F9A02081D", - "txHash": "0x224dac447bf57d3d445959041746585b629d1702bf40a6d6c24447cf52b70a42", + "txHash": "0x5fcd7ae8793bcfc832d6dded1523da774b5d13deb4a93671cf5db8a1bcf0a83a", "kind": "transparent" }, { "address": "0xA4899D35897033b927acFCf422bc745916139776", - "txHash": "0x08e38bdbd08319898a90a0b329eb44e473a1a3b9640aa6d2221691bf3dd76c5d", + "txHash": "0x10c15c6125739c1ea7dfd074c8ea3c5c8d96a06b7aa71074695b14f0ebdb62bf", "kind": "transparent" }, { "address": "0xe8D2A1E88c91DCd5433208d4152Cc4F399a7e91d", - "txHash": "0xc6fb2aee53aa62000802524e113a4e1995c27bdadeb3ec3d10a3d2a21101d44b", + "txHash": "0xe64273b689d4e7a8746f8cab2c65cb8eb40a0810200253865cf53c67d21da7ad", "kind": "transparent" }, { "address": "0x5067457698Fd6Fa1C6964e416b3f42713513B3dD", - "txHash": "0x8734c4365f365f3607fd735f34cb0afe5f93e62f5765678422eaae0484b98c5a", + "txHash": "0x9d61181c061faf5235874bcf19f12d3e2c9ef09ee00a5cd4be9d9473e63b4c51", "kind": "transparent" }, { "address": "0x22753E4264FDDc6181dc7cce468904A80a363E44", - "txHash": "0x5d5834c04cba1536624241c819ae411e5ded61025170e1033e45f77befbbf8fb", + "txHash": "0x852ffadce95031b41fe408f787f7cac8e79f51415187010ec0e819bf831c053e", "kind": "transparent" }, { "address": "0xA7c59f010700930003b33aB25a7a0679C860f29c", - "txHash": "0x1b07053803e9c29a71a2f8c0b50bf20cf4b9680692b02620040dd16f2d64ec46", + "txHash": "0x3d3c1e6216d240c243470d70208e870c0cd3a3977a54bdaca93d42c1d771a46e", "kind": "transparent" }, { "address": "0x457cCf29090fe5A24c19c1bc95F492168C0EaFdb", - "txHash": "0xd9b5da730acd059ea149aaea981eb7ae20be61cb63bc4a5257c10c6b9af2cc8d", + "txHash": "0xdc7661dde13f198a8882e1e23829ed4ca0ff9f596a48826223c64617e1b04ae0", "kind": "transparent" }, { "address": "0x525C7063E7C20997BaaE9bDa922159152D0e8417", - "txHash": "0xbd7a7948b34144b3856bbbc4e28f705f55ba8728fd4a526b7064dac2325e161e", + "txHash": "0x79e737410d71c7065517f0a25a439e770629777c59c84e6e1a72eb19a8fc5ea8", "kind": "transparent" }, { "address": "0x6F6f570F45833E249e27022648a26F4076F48f78", - "txHash": "0x4eecdee8fc3482764284d8c704a05cc4f75d0082eff8f3a16446d193f950626a", + "txHash": "0xa0dfaeebab498e665f71e67bfbcaa7e42759bb481b40e052fbc83d4450e3d14f", "kind": "transparent" }, { "address": "0xCA8c8688914e0F7096c920146cd0Ad85cD7Ae8b9", - "txHash": "0xb54910ccfa91554d2c373ee6f32b4840824e21211d24b16d7e85242e0b28a053", + "txHash": "0x2b14e01376a2c27bf68e50127db186e7b0d737cd0f9e9c8ef3ce706a5df3dda7", "kind": "transparent" }, { "address": "0x638A246F0Ec8883eF68280293FFE8Cfbabe61B44", - "txHash": "0xb72913130ec38dce2de381004421f13d442ab172037c78e3693782468bf2b288", + "txHash": "0xf6781d95042f61e30f3a1d511859665f627f1ccd59811b952518824fec693571", "kind": "transparent" }, { "address": "0x6C2d83262fF84cBaDb3e416D527403135D757892", - "txHash": "0xb1444a3ff98f2379ab7935f63a3e0fd36bcbcec5cbf070d47ec9890d0ec5e5c0", + "txHash": "0x35676d03f2248e39c17df4f0a1cc70164952ab6a78e8c7d1103236cd40d4dca6", "kind": "transparent" }, { "address": "0x2b5A4e5493d4a54E717057B127cf0C000C876f9B", - "txHash": "0x90f584f9f0c492ea231ea5c8541224d9d7c229ae5ed56022b5b812d67a8a878e", + "txHash": "0x77d17dd9124662b3aace2aeeabb267a4bae0f326373836088dd9e0dc33d248f6", "kind": "transparent" }, { "address": "0x413b1AfCa96a3df5A686d8BFBF93d30688a7f7D9", - "txHash": "0x5c4f1dacd5add371d2c0a40b2c31a1d8aef85a822d2be9555da7548c4d23d75f", + "txHash": "0xab1d216d4d65e13cf0f659d4e2d8266e3c3123ebdc24171cc5b8081b26881800", "kind": "transparent" }, { "address": "0x2Dd78Fd9B8F40659Af32eF98555B8b31bC97A351", - "txHash": "0xb7259496335b7fb35af7b5e9a2ebdc8614eb4fdc7fa521343499fa5a8a13753d", + "txHash": "0x228a1a0178cac2e1b40bfd3c774ec32ee4c5de77607b5e26eb08bf695664db6d", "kind": "transparent" }, { "address": "0x56fC17a65ccFEC6B7ad0aDe9BD9416CB365B9BE8", - "txHash": "0x5a8335d102824dd9007ee7db80d7cdac075fb7de91afe9621b2a927ff1a32257", + "txHash": "0x2953e81c4df338ef55b12d4fb40e4f15fe22f25ce258c0d8b669ff676b8b3ec7", "kind": "transparent" }, { "address": "0x8D81A3DCd17030cD5F23Ac7370e4Efb10D2b3cA4", - "txHash": "0x87c7c1aa70775aa64fc032cf50528c3fd80670a5da350c3a80c618c95224d802", + "txHash": "0xbbff5bf3501fcfbfcfe64945963ebce5b675e4c9040ebc62f6023cca7b09b5f4", "kind": "transparent" }, { "address": "0xcC4c41415fc68B2fBf70102742A83cDe435e0Ca7", - "txHash": "0x5282c57db885d116d18cb3bf6cc7e59223e3ef03d77c6f37fe3a07cb3a933dd4", + "txHash": "0xbe6354d39c623b2618c2e8e83d5aa862933cc5439677042e8443260b75853d7a", "kind": "transparent" }, { "address": "0x0Dd99d9f56A14E9D53b2DdC62D9f0bAbe806647A", - "txHash": "0x514533368500eee6509c31de203e734bf59c5c27e3ac972a9ef2b0c1b08b5328", + "txHash": "0x29bc0ff49673a5ff811b27cbf7f0278287506aeff4731f5034fa2cb3e8cf97e6", "kind": "transparent" }, { "address": "0xeAd789bd8Ce8b9E94F5D0FCa99F8787c7e758817", - "txHash": "0x63bb666e4e5a9770382f7ff4121bbb5ef65893a322208a63095ab41dea27c4ef", + "txHash": "0x31b42cd980f4c8707c2ac95d1be6ff5d1cfd396a0ae162e589836177c7382395", "kind": "transparent" }, { "address": "0x1D8D70AD07C8E7E442AD78E4AC0A16f958Eba7F0", - "txHash": "0x3e7112ad4f255e4b75db4493a3da0c23e092936da3b65ff03949302452ae2c65", + "txHash": "0xbc5c8e0828abec3f51a368c4837b43c10737ce3d0f005b8e25b8aef2e73a9f1d", "kind": "transparent" }, { "address": "0xA9e6Bfa2BF53dE88FEb19761D9b2eE2e821bF1Bf", - "txHash": "0x48731f5d878fca847be622c5ac23975d444c5a56f53b5591f9f8c970209fa8a0", + "txHash": "0x29ffaf06bd64374f96e7c44afa739986c065ff63862dc2756239968ecfba6ac1", "kind": "transparent" }, { "address": "0xC32609C91d6B6b51D48f2611308FEf121B02041f", - "txHash": "0x70a0be82a35248f34d4c13f70b9363c0c6e464372fcfddfb039bf67dffcb9b90", + "txHash": "0xf47720b5e58fbd1200723cb7e3c5940d0e9ded8fe980ceb95c788c14f453fe0f", "kind": "transparent" }, { "address": "0x262e2b50219620226C5fB5956432A88fffd94Ba7", - "txHash": "0xc41e41f1828cc238b7eeb7030162548b1a3096b3e640dacf962688fa8ec6ce71", + "txHash": "0xf81439f312ffb20d85853fc08a8048ae8006572e0a8d5530519c3b8df24fd667", "kind": "transparent" }, { "address": "0x90c84237fDdf091b1E63f369AF122EB46000bc70", - "txHash": "0xa33df5bea63f000521da7f70b2b0c162af4523e9e6211d4c3b800271f1efca26", + "txHash": "0xfb6b22372331b644ad0fd29781f3b88a04f658e6f03f027e04e331d7c8cb96ef", "kind": "transparent" }, { "address": "0x3D63c50AD04DD5aE394CAB562b7691DD5de7CF6f", - "txHash": "0x8bc71b6aa97ba1cd877466742a504c49e417fe662669b4a2b081d0276bb43ea7", + "txHash": "0x1e9053bcde1e020edb8b73ccf129ef17ee3fb792c49926a745c3a4b23c326a8d", "kind": "transparent" }, { "address": "0x124dDf9BdD2DdaD012ef1D5bBd77c00F05C610DA", - "txHash": "0x8929fbedf33ce78fef48e3e3f0b8804428cefd6353607c2b1558b0a7de379b22", + "txHash": "0x60ea13fbdd261005de4a6ec6060fa3830bb2411e489d50adce85a666da6cd9f4", "kind": "transparent" }, { "address": "0xe044814c9eD1e6442Af956a817c161192cBaE98F", - "txHash": "0x70988d9f2d2d26af925c3ca36f7197984bbbd88f0cd12d8eb152edd9650f1289", + "txHash": "0x4c965661bc5f1323d003b8e8e5a8a8567b947909a4532ff3ce73001f4d2444ae", "kind": "transparent" }, { "address": "0xe14058B1c3def306e2cb37535647A04De03Db092", - "txHash": "0xb0d3084fd2e7f02d0e0e65b435b76cfe658be19e4a2851e1a075a8e45fab01f1", + "txHash": "0x47ca5d51b47ee490fe28852203b6206aa155079a862b1b4410e6d8a73960bf54", "kind": "transparent" }, { "address": "0x74ef2B06A1D2035C33244A4a263FF00B84504865", - "txHash": "0x070d9a910601f2a152b8ddc431485d82c605ffa67247ab4099bce33bae995849", + "txHash": "0x1c3d1d9424ff9fe9a6e36c6eebae49ec1552970744ed601dec833743417bd027", "kind": "transparent" }, { "address": "0x6f2E42BB4176e9A7352a8bF8886255Be9F3D2d13", - "txHash": "0xcfa2a39f24fffade54a8bde60574921a0fcc0333a6686a2e7a749a7fd8ff6493", + "txHash": "0xd7f35868ec2481ec0cda123dde94c9f6be05c93974a138aab91cb389b09445c6", "kind": "transparent" }, { "address": "0xA3f7BF5b0fa93176c260BBa57ceE85525De2BaF4", - "txHash": "0x28edb49ea4da17eb7224a989214caa015e633e376a836f715eb44aff79f39be8", + "txHash": "0x3c305158e84f22dc27fd0d0493514a1062c2db632c6b89c6d09da778c2625172", "kind": "transparent" }, { "address": "0xa195ACcEB1945163160CD5703Ed43E4f78176a54", - "txHash": "0xdb30c45dd74aaa6c74e8d73368a1b84f6b686e9cf711f34c160d1a9c7c44f854", + "txHash": "0xd0dc68a70b11ca4eb039adfcb67211c7e6c22e9a117d4ff6e7233739fa2473db", "kind": "transparent" }, { "address": "0x6212cb549De37c25071cF506aB7E115D140D9e42", - "txHash": "0xb13bd3fbeda1eb370b19a3b200d9c30f0f235bf64bd7c371b44f6cfa4009c358", + "txHash": "0x77b2d71dc25958e55acd7c53f0cdaee692047f4ee44d9a8f382181a4331944e3", "kind": "transparent" }, { "address": "0x46d4674578a2daBbD0CEAB0500c6c7867999db34", - "txHash": "0xea55e2fa28bda07583ae50e6197d36e152ebea98cbc717779a2dba1a4afa7ef6", + "txHash": "0x53ea743830fe4c9b4babba7bc163d46f8ca2de9082ba13f3ce5d8c723b5cd44f", "kind": "transparent" }, { "address": "0x9155497EAE31D432C0b13dBCc0615a37f55a2c87", - "txHash": "0xcb0e5e66e3e36b6637638d9912f7dc9e6077d25434f57a5ef66777fdf11d353e", + "txHash": "0x277dbf389dd1d2a2db42a8b295a260a86b821aa820159987d10961822bf337b4", "kind": "transparent" }, { "address": "0x04d7478fDF318C3C22cECE62Da9D78ff94807D77", - "txHash": "0xca805f12eba1cdb3b0688da98fbd3d7c13cf2b1825565d08c4fda1353fe47941", + "txHash": "0x0563c378ea709f7822cd96a7ffbd7f96454df6340ff7a650f44d8e982345a5f6", "kind": "transparent" }, { "address": "0xd9abC93F81394Bd161a1b24B03518e0a570bDEAd", - "txHash": "0xcdea17f15635d806d21c1123d599aa78918f980c5d7b060fa15ad2c4d7a5ca1c", + "txHash": "0xf2eb53807e591af9ff5681252adf6df0f394b7b7d6128fff3678df3898683e7d", "kind": "transparent" }, { "address": "0x89ec9355b1Bcc964e576211c8B011BD709083f8d", - "txHash": "0x52f2351c0a8004440ac354585694262a29ff53bbf2f563baccd95b545c5b38fa", + "txHash": "0xef94049775728363d3a6c3add9b1b888899efb8275914362087f63fc9422fa82", "kind": "transparent" }, { "address": "0x72662E4da74278430123cE51405c1e7A1B87C294", - "txHash": "0xc2f3537b1faf08ecda000126ff0b59c254c3e383ec9613e52d792f798b8ce12f", + "txHash": "0x1ca28bfbb75223768a11373f8f6cabc6b08991761d8c029334e87539fc321ff3", "kind": "transparent" }, { "address": "0x0B1a87021ec75fBaE919b1e86b2B1335FFC8F4d3", - "txHash": "0x7bc79f045871388eba66e28e5848278a8ed92c649c88090e2753314d7ca0d9c7", + "txHash": "0x0f7c496dce5fce8e3386e1832d959f881c02fc0ff8fe5e0716caf8f78d34dd8b", "kind": "transparent" }, { "address": "0x18eb8AF587dcd7E4F575040F6D800a6B5Cef6CAf", - "txHash": "0x8f91b9df55a5a391175d39d6af14e171e355e4f77410e71058707bd06f3d92c4", + "txHash": "0x5ab96b88119d0135264a6c03fda2450f44e1bbee13e6b72f8c4cccf35503ef00", "kind": "transparent" }, { "address": "0xa4d0806d597146df93796A38435ABB2a3cb96677", - "txHash": "0x6150a435ab9ab235b3b484b4eaa69e9ecc683a243fe494b941b5ba45db6297cd", + "txHash": "0xa710c98698857228244596315b4af01d1e29e0b96f8a1b8063b41ead08db2df9", "kind": "transparent" }, { "address": "0xAE246E208ea35B3F23dE72b697D47044FC594D5F", - "txHash": "0x5add0c5c94a3ca5295eaebabc5a06c0922345c6393f7034a29f927dd723884ed", + "txHash": "0xed559f861692e855c4684444c168ea04ef116a7e7208f9b8fa5b0a0196a27157", "kind": "transparent" }, { "address": "0xD56e6F296352B03C3c3386543185E9B8c2e5Fd0b", - "txHash": "0xdafa411813f74a4b113df8db6b112d08a04ab7d417a6bcaae7411825897d0b83", + "txHash": "0x8b6f8ec983d3d65b09019d2e0d75e03d33325e27bee13bbc94c8a3cd5704e226", "kind": "transparent" }, { "address": "0xEC7cb8C3EBE77BA6d284F13296bb1372A8522c5F", - "txHash": "0xdd6913bbb6f7a24ebc732df0f0d86b482da1dac9df3318d53c603330579ffd2d", + "txHash": "0xb9cb9055e2699376d36263ca26d66dfe9aac839ddecb2711b42129c358efb095", "kind": "transparent" }, { "address": "0xCC5Bc84C3FDbcF262AaDD9F76652D6784293dD9e", - "txHash": "0x2f3cd5c20991536f62114a4d219f928bfbc6541093660f5dae88bcace0723c6a", + "txHash": "0x6156dcc4da6bc5c53e666b958ededd5be50f35a2022980a346a7a6309bd59885", "kind": "transparent" }, { "address": "0x04F75a27cE2FDC591C71a88f1EcaC7e5Ce44f5Fc", - "txHash": "0xd147bef5d7caafc18b52c1c9a9dddf92ed1c66f2741b564b5c087cd81284e4a1", + "txHash": "0x7c2ed8952d0d2b6bc387ce3ed9239d531739c53450bf2e0763801c5fbbab1f1f", "kind": "transparent" }, { "address": "0x820638ecd57B55e51CE6EaD7D137962E7A201dD9", - "txHash": "0x20b851121bae9e302b821241c0b9c58f8d6e65357f7eb15eb837aeb11f1c6f64", + "txHash": "0xfe2f5e1702f5936fc09ca46ca7e2eea3087e6f12eff8f95452e66150aced8f89", "kind": "transparent" }, { "address": "0x987Aa6E80e995d6A76C4d061eE324fc760Ea9F61", - "txHash": "0x047c5a10f7e30bcfc2b0e37428ffe48d082fdc24ef98da3a9a7d6bb67564cff7", + "txHash": "0xcba6317ce513e6661eaec3161399a2fb881aaf4e063bca70229c54f2d1a22a05", "kind": "transparent" }, { "address": "0x6B9C4119796C80Ced5a3884027985Fd31830555b", - "txHash": "0x7b26d1e0d28f3e2acd5c558a4dcaaa34a91c3b4b67e04bdb4ba503f9f7ffa530", + "txHash": "0xca9b5641c7be99018838dde7c647b7d17ee3ce40d24e9219d29c6bd0af589f79", "kind": "transparent" }, { "address": "0xA8d14b3d9e2589CEA8644BB0f67EB90d21079f8B", - "txHash": "0x92c7b4342dfcf6597b7cac2482f80a078ea6e4c35bfc970737598d07f2b3fdfe", + "txHash": "0x0996f515e33c05e9c15e38034a2376fb62376914735d92d79c353f2ef8875250", "kind": "transparent" }, { "address": "0x716473Fb4E7cD49c7d1eC7ec6d7490A03d9dA332", - "txHash": "0xec68f1272865dae247bf984d3a4f3911bbfd8ac52e910846a3c74c4238f3ce08", + "txHash": "0xc1a8bf0fb09b98e73359d782d8aad009fa91c57affc9f12b2ad4e55efdacd531", "kind": "transparent" }, { "address": "0x67Fc5Aa53440518DdbAd4B381fD4b86fFD77B776", - "txHash": "0xbc409c69b624d5e31c90f1c2cc06bbf1496451d2d69ba0bb40558141c0b76bdf", + "txHash": "0x3640d7a4674b9a6c0e39f67d6fecb2fa15151cb2e2480f52d22db55915572b75", "kind": "transparent" }, { "address": "0xf4e55515952BdAb2aeB4010f777E802D61eB384f", - "txHash": "0xcc824cedc9c2d1facfadac4953680de01820899687e7f1a916797910f647d8a1", + "txHash": "0x7401630ef2c0d13bc32e9fbb4905f068f6bc2015eb56e2b5180575692aaf94bf", "kind": "transparent" }, { "address": "0xcE7e5946C14Cdd1f8de4473dB9c20fd65EBd47d0", - "txHash": "0xe7f86a6f53575353097d896f51476ee50a7f962d8b5054b35385868d86e9c31c", + "txHash": "0x13880c2ee212d07f8c1f03f58eff67f9d5fd43dd5d64ee578ab735f3a0771c89", "kind": "transparent" }, { "address": "0x4E76FbE44fa5Dae076a7f4f676250e7941421fbA", - "txHash": "0xa694075135c85059552d6d41cf1e0603006dfddad93e9d31940209e5a037e582", + "txHash": "0xdfe56cddae7a592902e3decc1699947d02781dae3a514e4f89fb12d71587b7fb", "kind": "transparent" }, { "address": "0x49AeF2C4005Bf572665b09014A563B5b9E46Df21", - "txHash": "0xb5703d5b195a9de45ada2362b8de665b31de3a2a45a0bee421b455ef4735994a", + "txHash": "0xc0cee1c5661f68d8010aa520d4ab4830fb7d967a4720381e63293624863a53f3", "kind": "transparent" }, { "address": "0x72F853E9E202600c5017B5A060168603c3ed7368", - "txHash": "0xa1d321550ab3736a78ab228c2782d4459da284d18eab33c32996da30c393bc4f", + "txHash": "0x5938229a3f415c29ee514b420d68d4300c5226efcd13224a90adfb297d26d233", "kind": "transparent" }, { "address": "0x26Df0Ea798971A97Ae121514B32999DfDb220e1f", - "txHash": "0xd0eda354fc5fd272e500781ee6691c27c7e0e0d3483775467aa2356eb335a286", + "txHash": "0xc7cf494148e95277f797aea9d9ff2038bc7fd43b81514f30c240757587acbcd6", "kind": "transparent" }, { "address": "0xa138575a030a2F4977D19Cc900781E7BE3fD2bc0", - "txHash": "0x9fdee9dd06fdc759fc91f471d1b3684b19d1d8270be49e97fb8d39f9d3f93955", + "txHash": "0x833e7dfbff1718c1513cb7f2058a1aa2b1cdac43171dfe90183f108a757051c6", "kind": "transparent" }, { "address": "0xf524930660f75CF602e909C15528d58459AB2A56", - "txHash": "0xfab41dd05bc5da1b889f23d82f24025e14de5ad22dc91ca2f16b445bb1fbe2e3", + "txHash": "0xd64a4452ad0c7d3ae0694112fe9875dfb7e89b8fb05d552ebf805a4bb1dcb1e0", "kind": "transparent" }, { "address": "0xAAF0F531b7947e8492f21862471d61d5305f7538", - "txHash": "0x7722858688206c872d784220a722921ea7369e521143aae389e5777d73ba06ab", + "txHash": "0x55d94456314665266633b975f377458ac2b512a3e0d8d9162e31789ea4b9a984", "kind": "transparent" }, { "address": "0x81f4f47aa3bBd154171C877b4d70F6C9EeCAb216", - "txHash": "0x1ab41f19451d90156ca7762cc60adc82fb6e79c7c145313095dbac5c8dc3d13b", + "txHash": "0xce4893877ba62fa678962f9089224691e821378e3288c8830a1865a72a9c7b83", "kind": "transparent" }, { "address": "0xE5b6F5e695BA6E4aeD92B68c4CC8Df1160D69A81", - "txHash": "0x59667bbc3b42fbaa3610a41927d78ff5babfa6ad716b138346269f571a107798", + "txHash": "0x4eee04c886c54e7910e2604ca578d19d5d784b520c74655c69e4c2a6f1f4d71d", "kind": "transparent" }, { "address": "0x01c93598EeC9131C05a2450Cd033cbd8F82da31e", - "txHash": "0xbfee457090296d4f457c01143b26674dfd284653ff19b12a86af12ac78702e24", + "txHash": "0x42b55807ef1e00688a78d84ac2c09368c6b7bc948db9fae84d8a33b933c2e040", "kind": "transparent" }, { "address": "0x33f4f8bf90d8AA3d19fF812B50e79c15Df0d0b03", - "txHash": "0xb79751c0d739d4015945684c70bbb88a88a1cbf11bbdbfc838b0a4a4953e0e09", + "txHash": "0x3f6a78b7dac024e4906db5c668e005eaf60c56977918bed6113624afbf02e332", "kind": "transparent" }, { "address": "0xE57A305f34fD0B6A55A66e8ec9559e6573100cBe", - "txHash": "0x8f9ca6b1d40672c1f6d8c6b40f9d7005a5816e211b507c6a317bcc1238477e2a", + "txHash": "0x279151235953b5678371853980b6c1706705d91a7559057799f31f2ba53b15b3", "kind": "transparent" }, { "address": "0xB354ECF032e9e14442bE590D9Eaee37d2924B67A", - "txHash": "0x02d5b9851d21dc0906a8fa4a11ee0a46c257702e35d1424f62d8c1e6e8cc40f7", + "txHash": "0x7a3955b6af94dd2fee3ceaaea92c31823f09b526c002c355f61628312b913dc0", "kind": "transparent" }, { "address": "0x00436c9F57dfFd96cECd129c04D9E488c57266cF", - "txHash": "0x8ee64dc49999cd5a570d1d2bf0935c90bc44cb3302ae9fdb07026fb5636215f5", + "txHash": "0x4ec79f3be69427daedc50c8a58bbb3b24d02c66626b9326838a734ae8e326200", "kind": "transparent" }, { "address": "0xD962a5F050A5F0a2f8dF82aFc04CF1afFE585082", - "txHash": "0xd3cfa390401b3689f650f5a84a471fb1dac3144f814ba5c68a0ca96dbe1ea194", + "txHash": "0x0e38b63086d695f489af2c1dc95eddd1f2b32008ad73c29f91e9d2dff9c5667a", "kind": "transparent" }, { "address": "0x0BbfcD7a557FFB8A70CB0948FF680F0E573bbFf2", - "txHash": "0x0d596ceb8cf21d4405c76cb68485e6ebe70ff2213a0a10a03e3baedfb87e27fc", + "txHash": "0x735e09239819051f7cd9d67c6d264e46c82c771df82ad83513d039c383343c9b", "kind": "transparent" }, { "address": "0xdABF214E5a833269c192D9d70efDdE174680628D", - "txHash": "0x470e5e8b323b743fc39c839e15ffa873fcd4db079c430ff8184dbf4b37b50cc7", + "txHash": "0xeacadeccad8a764fc2d914b329381c37a4e1971f1eae46d876eb576af90273da", "kind": "transparent" }, { "address": "0x81F82957608f74441E085851cA5Cc091b23d17A2", - "txHash": "0x4190146c896598c68c29d0377f24ef245c16ec09a90ece513d33d0eeada2ad1f", + "txHash": "0x66934e36fd423a599443168b6e72222526ab306049f6e0f90ca0190cd1d45e29", "kind": "transparent" }, { "address": "0x9a8164cA007ff0899140719E9aEC9a9C889CbF1E", - "txHash": "0x857a5aaacf569766236e5aebc09a04b349a45c69e271650b6a97f80f0b7d4ac3", + "txHash": "0x09d031e33f1df1f4dcac1d7c755051bd168fe1c712cb48e55135cca0252d57c0", "kind": "transparent" }, { "address": "0x69F94e46cbC82Ab02781ac4FaFc3580d21f1a888", - "txHash": "0xb4f5e349c9872dc25e0f63cafbb1c4880d4290914029334e8d19e78783bfbb4b", + "txHash": "0x5dca9d5bf179ee1419a47ffd6b852a2680694a7d67ac52521619c81b92cf03a0", "kind": "transparent" }, { "address": "0x5BFaaA02cAb795d576276a19CB1c2D2D2d652717", - "txHash": "0xfe7ea834e5ab2705869ed8875fbfba0931c19ab8ad3e1f9df2d0e97d3d678aed", + "txHash": "0x66f2373741bf7d1543a155f63c70eb18280638129db7eb305168312be256fe8e", "kind": "transparent" }, { "address": "0x0462Bc7390a33C8BB748d5c2ad76E93690A365c5", - "txHash": "0x37f058d7bc14303a55d8f1dc079e5c99cd48581b213fe98a49d8a214640925ca", + "txHash": "0x21d4e4fb353896eee33d6ef0415ba4d6c0206fa20c5748a81344ff8e22f396dd", "kind": "transparent" }, { "address": "0x1c32f8818e38a50d37d1E98c72B9516a50985227", - "txHash": "0x53615903713668531b92a8d168c9802444e3510634f846636bed3f19c3a62cb6", + "txHash": "0xd0214c63a20c37f1934735163b0ec3db21d4319633c44c2e1fe97247cd4953a0", "kind": "transparent" }, { "address": "0x0BFC626B583e93A5F793Bc2cAa195BDBB2ED9F20", - "txHash": "0x68f9e119ad36bd813c75f168bcc18f2d6ebe9311ccf6c0f197973ea1391338bf", + "txHash": "0x7b7dd2e4981dc1de0af979af49997201546fdb11567a339a068a3b833fb3ad93", "kind": "transparent" }, { "address": "0x76d05F58D14c0838EC630C8140eDC5aB7CD159Dc", - "txHash": "0x8a61e302d71aaa9b13882efd7c6c46b94268d0dd587ba5889e53e4a28c3f8c0b", + "txHash": "0xa16ddac630916abc252aa47adad8f0a8823809a3e5a095fc3cf2d25d25b3d05a", "kind": "transparent" }, { "address": "0xd2983525E903Ef198d5dD0777712EB66680463bc", - "txHash": "0x5fca9229b20da44f3144666bb04fcc9cbf3275b53a3b01aab4102eff23e05010", + "txHash": "0xf0b69e8340afd8866669add2888b0cd81c7175697dd1097bc7dc2b0124f6cf62", "kind": "transparent" }, { "address": "0x862E3acDE54f01a4540C4505a4E199214Ff6cD49", - "txHash": "0xa8936ec9b5451e5e77ec4e47dcf9d562e3e30d094f9d5c84675c5b9d772df54a", + "txHash": "0x1393b7d876f063fd8c7e0805a22f81ad4fa1afa45383730031e0e26a24aa24df", "kind": "transparent" }, { "address": "0x37453c92a0E3C63949ba340ee213c6C97931F96D", - "txHash": "0xbf85ab6da2b534336e81a4d7331cc65dad37d052986942e7c3007b6bc2af08bc", + "txHash": "0x588c5526eedc2d4f2a5b9927be3e1e5e656cdcbdc4e938904e419b770e69bca6", "kind": "transparent" }, { "address": "0xAAd4F7BB5FB661181D500829e60010043833a85B", - "txHash": "0xe1b60763743ba6c1a194aea827521bb61cc90634d5e3ab227e4f89cd3d80fa0d", + "txHash": "0x2f51f6f920f4d884d9f11beba12285cb546a13c5d41f720dac70ab25103aa1b2", "kind": "transparent" }, { "address": "0x2B64822cf4bbDd77d386F51AA2B40c5cdbeb80b5", - "txHash": "0x77e1ead4aa50f7b80821e8d2e6e034d74cbc96744bb87f970c25389eddbd312b", + "txHash": "0x340463963a5f04c7f39897a29c3d04babf0870c1cfb0aa0533e16fb47f3cb416", "kind": "transparent" }, { "address": "0xCd9BC6cE45194398d12e27e1333D5e1d783104dD", - "txHash": "0xb531c3c5ac8c8360e4338e2f8697cb2555bb9d6fcaf7c6639f017873c13e3a34", + "txHash": "0xdd8d428330abea2e6cd06f5a37eff87f653a21e8873629b21500418b5241e819", "kind": "transparent" }, { "address": "0xd8E4Af8145A8288537B85878bb2371fa070Aa5eF", - "txHash": "0x650df3dbd878f14853e549e9a828a27a0d9b001a84ac53969875d2e5060a8a71", + "txHash": "0x7dd2e0b2d82df3e06483db69784f4ceb3fe00f7f616e09073271bca9c4aa4f3a", "kind": "transparent" }, { "address": "0x86c64cB21f88fA9E2c46b61c35889E75f08FDce1", - "txHash": "0xaa232771cb0aab5d40e983cee938c6c589702bc70ea2818dadb0a776f72d9bcd", + "txHash": "0x0d9a241b038d39234ebd1c8d2f5eb6bf4997ba935ee488986a9df7cce6143622", "kind": "transparent" }, { "address": "0xA901DA770A472Caf6E6698261BB02ea58C5d3235", - "txHash": "0x3580fa8e1c8bd78af16f2e81a57fe13a2606ff19120c53e589b276ea03b3de47", + "txHash": "0x703197c5a9a885b1836ac36a38410f715028726f114fbeafecbd19157b145c9b", "kind": "transparent" }, { "address": "0x5f58879Fe3a4330B6D85c1015971Ea6e5175AeDD", - "txHash": "0xd4e299027e3d8ccfdaad0081a0f32e7351edfbe7b49618abf9c5f45fe2ad0bb3", + "txHash": "0xdc711c4d692e1bc17bcab0cd15d67f5752c810429471e2b4d618d213482aa252", "kind": "transparent" }, { "address": "0x63ecE4C05B8fB272D16844E96702Ea2f26370982", - "txHash": "0x8bfdaaa815196dee2069ea6bd1f388b71eadbd2c96d55299be359d2af0d050b1", + "txHash": "0x318262b1cceb3174a76d8f5f6ffe93a7add8d3a1153a70c23abff173ece77129", "kind": "transparent" }, { "address": "0x8dF2a20225a5577fB173271c3777CF45305e816d", - "txHash": "0x9b7b3096794a63b4d51450921955e955d354bc25923cfbf3e31c9a343e5ca062", + "txHash": "0x6e3b92fe7ac098e4cfc6005b2cf3e3454a737ac1022272091610889ab693ab8b", "kind": "transparent" }, { "address": "0x645B0f55268eF561176f3247D06d0b7742f79819", - "txHash": "0xd49f19eb244b8dc40c25549188fb81cf117b7f6b601272a263368be772753c87", + "txHash": "0x5c5c42a8ca37d13e5cb5c8f04e02994394d4ad6b2e7840eb7ab6c455b1c8f829", "kind": "transparent" }, { "address": "0x8AFB0C54bAE39A5e56b984DF1C4b5702b2abf205", - "txHash": "0x1ae3d3f8208219f0eaa0ba6a8f7324ecac2ac3161b924bc0109e8b111d593b24", + "txHash": "0xa2f2a617d948d82b7c2551e612507d2a6b252776a0a14443296626b8c601ebd6", "kind": "transparent" }, { "address": "0x6B763F54D260aFF608CbbAeD8721c96992eC24Db", - "txHash": "0xfec94df2cdf86ef503b2038fac1771197448f427c03125a3f02018b554be3eaa", + "txHash": "0x75bd2c8fe53f9fea95f3f1a4fb1472d98fe1f4f310acaf1c603c15f713296c40", "kind": "transparent" }, { "address": "0x226A19c076a3047a53e5430B14bcDB42dbccA159", - "txHash": "0x521a9f7b8f4ec1ce512f91f2f55becb4db7210ff3b26c5981588578708db5215", + "txHash": "0xac13e93b5d47167d4962dddcaeeb0b12589320a6ec990e962b64508175e594a0", "kind": "transparent" }, { "address": "0x093D305366218D6d09bA10448922F10814b031dd", - "txHash": "0xfa216cf7cdd8ec029f6b24e2e93d67ad2a347a0142111d4f3a6867fd513a2e5e", + "txHash": "0x747cc89d60005d939a6cf90f7f2f23a9b1801beec776bad309a373fe69bf4fbc", "kind": "transparent" }, { "address": "0x9581c795DBcaf408E477F6f1908a41BE43093122", - "txHash": "0xc6c8387f568c70e4d4b9d454342d31e35875c9891e1056a7f61c1714925cc1fb", + "txHash": "0x39637e7fef82504a2ba817baa21c17cecc4d3ab4b1e08f918b1c7a16e49cdeb3", "kind": "transparent" }, { "address": "0x8a6E9a8E0bB561f8cdAb1619ECc4585aaF126D73", - "txHash": "0xa9ddbbc21bf7ee3e394de35131710093b2483877461ca60e17d051aee7278fec", + "txHash": "0xa5ff9546c67167ad7d203ad9b4090d7034436f10168d261fe205fa231885c5dc", "kind": "transparent" }, { "address": "0x492844c46CEf2d751433739fc3409B7A4a5ba9A7", - "txHash": "0x186ef67eb8696eaa83947f13acff4b8b94d48ff2e35a9a7a7959754d75c35072", + "txHash": "0x440efb7f54a2d786271a0ab45c422eccdf3333bff984d3c23092a28e69347127", "kind": "transparent" }, { "address": "0xC1dC7a8379885676a6Ea08E67b7Defd9a235De71", - "txHash": "0x652e1e23a142b0b237eaac3fdcd20503b88139c8898ddee803dc056f6d1f97f9", + "txHash": "0x6198f4090e09086b7a3e6c97de7f0b76c408ad1a6b0edf4301feac639db43a46", "kind": "transparent" }, { "address": "0xCC9676b9bf25cE45a3a5F88205239aFdDeCF1BC7", - "txHash": "0xa7f7e2fe37992e5a91f9c97e65fe685f27d5e40a5350132a3978a8dce563ad22", + "txHash": "0x1cf41f5c5228334c763b4b9641e57f6dbd50b0277f419266a8dd326849310c35", "kind": "transparent" }, { "address": "0xDC0a0B1Cd093d321bD1044B5e0Acb71b525ABb6b", - "txHash": "0x68bbe7e22f1d23d4ab2042d00fe1411037fa13047c9237241d9231d633eadfd2", + "txHash": "0x59fdddcc2f80bff63e082c761ebc3d9b60b907a4ac0f59cbf6e7600bbd09e7aa", "kind": "transparent" }, { "address": "0x1D87585dF4D48E52436e26521a3C5856E4553e3F", - "txHash": "0x35a809f62b98d43e497cd90531ab39b73c44fba8c0af9e3af53d51f72727501c", + "txHash": "0xfc7914145b5b5b78684aa1a7d1b8806cc850e9864c200829e884bc4ed41409ff", "kind": "transparent" }, { "address": "0x2B8F5e69C35c1Aff4CCc71458CA26c2F313c3ed3", - "txHash": "0x9d3e02afc58219194c46d7a83fc71e4e34c0dc1ef13766fe33d1bce6489683bc", + "txHash": "0xd5a1945c7772bcbc4cbf9b9b310665fe19d33898246a01e1090d074855e7233d", "kind": "transparent" }, { "address": "0xA899118f4BCCb62F8c6A37887a4F450D8a4E92E0", - "txHash": "0x47bda590191ddffd55a1885a85d0983ce4acb92275cc4f9a3fb61acd3e008fd4", + "txHash": "0x793da57a434398981e29fa7a4670da6dcc21f7ba8189a9861449ef0419086be8", "kind": "transparent" }, { "address": "0xD185B4846E5fd5419fD4D077dc636084BEfC51C0", - "txHash": "0x1b07ab0bc559e44322a87b7fefe57fd39637fe6b897c58dee261ea9121a493f8", + "txHash": "0x293838f5e9b320f569d6499f6610a766a37de7a252c2edbc28579fb73d932a98", "kind": "transparent" }, { "address": "0xBCF063A9eB18bc3C6eB005791C61801B7cB16fe4", - "txHash": "0xb01249b359a7a83e23bdd6d016c064d5566d7cb218dffa83ea7084a9e32c818b", + "txHash": "0xbcae198e971aa5fb0470968ec4a6a607b5432c578cb37991ddfa7fc24bfa62da", "kind": "transparent" }, { "address": "0x364C7188028348566E38D762f6095741c49f492B", - "txHash": "0xcd76725337e2d8a57f52764c8cf2cb46a9bd820ce4fd17666ae591cd5b286b7b", + "txHash": "0x6c8a065643457c634305141d5d46d6b7573c4dab80dc6d855a893b496705687c", "kind": "transparent" }, { "address": "0xF2cb3cfA36Bfb95E0FD855C1b41Ab19c517FcDB9", - "txHash": "0x9035914873124ff056a33a021a44a219aabf39a5275e76dba3ebfba68f24a46b", + "txHash": "0x171d0574f40b9330c2cb136fd3ceac3805be001ce46fb0346afe0f26d806fe49", "kind": "transparent" }, { "address": "0xAB8Eb9F37bD460dF99b11767aa843a8F27FB7A6e", - "txHash": "0xa11e81566363f7f230efe90341e55ea0fd15afb9d3271debf333c10dc1ed7f96", + "txHash": "0xac637e5db7efea8371328e5d9593dd2053a28ded16cccdf5aae7c38e7ce97dad", "kind": "transparent" }, { "address": "0xbB57FE325e769DEDB1236525a91cDEd842143fA7", - "txHash": "0x9ac319a1245d959286ae05898c7fb2700bb904ccb709c5b8cdf814109f2218d5", + "txHash": "0x96438e10f8f9912b625ec4b9eb6e08064a95c863d5576ff94aa0d12a3270fab9", "kind": "transparent" }, { "address": "0x6712008CCD96751d586FdBa0DEf5495E0E22D904", - "txHash": "0x50270bae5b4851ae7b3fa95817c6b047b0514032a075eaff11546113075c2489", + "txHash": "0x0e23a417ba52912f009b956977edeb8e3a12fd1f2ca6a754d1a4e5cd4b98e3ce", "kind": "transparent" }, { "address": "0x1f9c84B161b2c7FFB540BC5354543108cCE37df1", - "txHash": "0xb030a77c749fa2b3a70ae7d43dfdf070bf5b7cf8ac2d2485573724d26390d498", + "txHash": "0x3e6949d240817631ca5d6d4ba957985e8d044a61aca0d158ab8543b537ed29ff", "kind": "transparent" }, { "address": "0x87E8f332f34984728Da4c0A008a495A5Ec4E09a2", - "txHash": "0xb1ce0e3a6e4df055df0a2c8973acc3360f9dbe7b990d7ddebea8c8a820926e89", + "txHash": "0x5e66c65d8e01df59fdb365c16b0b835cce2867147ca5092250efe8489a648df4", "kind": "transparent" }, { "address": "0x1E2e9190Cea3A97b5Aa85d9757117F499D31C47d", - "txHash": "0x6464500c3858597839c521bb841a23db0033086787eaa169d397cedf650dca54", + "txHash": "0x7787869ced65c9e4cad9341b49c6a374a02cafa3497af417337094ea415e9b9b", "kind": "transparent" }, { "address": "0x53DaB165b879542E9aDFC41c6474A9d797B9b042", - "txHash": "0x2f77810312700b228cf19587fe7081c447ce3e86640df5e84af29e464e2d8bc0", + "txHash": "0xeecf39e61addd730ba2caa8416f00763b25455046baf53391c89424eeda53e93", "kind": "transparent" }, { "address": "0x4BEA9aAe24187d6128403DC556510A18d727871a", - "txHash": "0xbe4dd20817c400315d8a3fe60a0c148fc3b6f7ca89bb6156bf712299a67c23d2", + "txHash": "0x6957b452d12a52a9449280fd21eb42d5e1975c8f7ce2f1f4c8b7e8243d58cf08", "kind": "transparent" }, { "address": "0x64386BC53c213F23C6960d3e080139A0f9Ef1733", - "txHash": "0x80ad44dc7957e9e2c6916a6f530de95d9148bd9400747a18c5059a697376a5ed", + "txHash": "0xa4aa1ed1fa005383abcb6f876aaac76632b90930fa0713bc6ccad979d94d48d9", "kind": "transparent" }, { "address": "0x295129609d6876f5ECC62052Ba6bc082139A982c", - "txHash": "0x0fa37f342776f1f07e8aba35d5469d36de660c754044650fd124b676fef786ba", + "txHash": "0xcf9e0135cfbc71b4e7a88b6fc427b7e3b9db7c44024dc2f9de0b6ed678270093", "kind": "transparent" }, { "address": "0x737b8F095E3c575a6Ae5FE1711AdB8F271E20269", - "txHash": "0x2435764c5ab4c316e60be1ac39887f57ee3554e1586db2572e0464040753d81f", + "txHash": "0x3414e1c45512cd7f975a7179cb5ecfee9adb4a1009abb2d777bc1619f0438aa5", "kind": "transparent" }, { "address": "0x0Ac85d55ebFc7f7b0cF4c13bb3BD6Eaf3909d62d", - "txHash": "0x359a5272e53fb90671ada54f9c99b7acaa94ce392ab8c75fba9bc291c90233ce", + "txHash": "0x285051a6d6cc69829b472db5fb1a8cb303b4de7be368c9c4c8170f8f3a746417", "kind": "transparent" }, { "address": "0x8C08821f5f94b519c853486eB131667AA528A460", - "txHash": "0xcd4c8f8be2ed5ae1c1f4c0c0c0d833241e57baf00fc7a2dca9790e82efe66928", + "txHash": "0xffc7ec1499fd79bfb63461ef9a360bc2974c8032ebcef6b7c0b02f48bd59f106", "kind": "transparent" }, { "address": "0xcf23CE2ffa1DDd9Cc2b445aE6778c4DBD605a1A0", - "txHash": "0xbb260c19ff1d825440d04e37af93b6de3525284e6cbfbefe95c92f91e744de0a", + "txHash": "0xf445bed47415763139607b3c5354dd7f77166c024dfab9115bc1f7edb49553de", "kind": "transparent" }, { "address": "0x2963ff0196a901ec3F56d7531e7C4Ce8F226462B", - "txHash": "0x78f8228bc2842b6fd2e5c7f08ef5020a398b6f6af9d5af85d86486bd06a10159", + "txHash": "0x94b22ac01bf110dcaa823a3bd0ef92e933e99428e10df3e09e26734e08913e1b", "kind": "transparent" }, { "address": "0xA13d4a67745D4Ed129AF590c495897eE2C7F8Cfc", - "txHash": "0x46fee71ae0dcfbc7761a465ae53ef33bc05de56999bc267f24c7489ffb8ec918", + "txHash": "0xb60ef206ee51e563953377d4a6aa7c8f9d4fec620fa8881d3133213564ce3f73", "kind": "transparent" }, { "address": "0x23228469b3439d81DC64e3523068976201bA08C3", - "txHash": "0xd2ded286070daefaf34265219f2f04ffc0f5a03f2a8f98c0373c71476fa3efa4", + "txHash": "0xc25507cc24afe5dcd15260e57dee069c7a02abf001f1c0ffda904a46af39f56e", "kind": "transparent" }, { "address": "0x01D4648B896F53183d652C02619c226727477C82", - "txHash": "0x6ba81b50e1b69c22d6b9873e1e94a80d680ec324ec5bdbe47aa26755f475efa4", + "txHash": "0x2b6c192636e8774c5ee2938474fe72ac1e64f41c32176352f29b94a8d479dbbf", "kind": "transparent" }, { "address": "0xf4fa0d1C10c47cDe9F65D56c3eC977CbEb13449A", - "txHash": "0xc1068751eed6b651c3a4901b9a78c51d0d125128a4e983131dc0373080548b22", + "txHash": "0x80e85f5f787ef4fa1ade9d1046c0557af1181ad5ccc9317d9793e9698bdcf690", "kind": "transparent" }, { "address": "0x88B9Ad010A699Cc0c8C5C5EA8bAF90A0C375df1a", - "txHash": "0x9098bd1c0412da5e80af77823dd41e42d40edb2a94d1c2041fc0ef0d6720a289", + "txHash": "0x198b1c4425a3346da4fc88baebfa1972595f0d8b3935fe487c7e2383981dbaca", "kind": "transparent" }, { "address": "0xAaC7D4A36DAb95955ef3c641c23F1fA46416CF71", - "txHash": "0x908413ce836f33c60462af42d47cc45f695a655e1ea04f6248771da5669205f1", + "txHash": "0x78f3ecbda8d2e6211bfcbad1c96451a0aa8bc4440b91baabc5cec028e4a85990", "kind": "transparent" }, { "address": "0x594f79e85F6f041eb56cF6822FF4125ee316409E", - "txHash": "0x53d71a71480320331a5455aa9c96e64af1dad1e836fad17281985da7bae8eebf", + "txHash": "0xacc1cd8c3bed20a3be8da4326fae704bcaf91f6787bbf7f97cae56c269e1c41d", "kind": "transparent" }, { "address": "0x2fe19128A8257182fdD77f90eA96D27cA342897A", - "txHash": "0x6c46eac956f7743ee76c0faf244a0b22def34d4014567e8543f0cb419383e82c", + "txHash": "0xef2b49fa97033510a31d8c1a1a49f5777049355a12a3541774f77f8838ddabd6", "kind": "transparent" }, { "address": "0xb9b0c96e4E7181926D2A7ed331C9C346dfa59b4D", - "txHash": "0x898024368e85909e5e61b5fe327fdd5b536e7ae784c69a7f557f708579eea48e", + "txHash": "0x4e8f61ea090da76f66e6833686c2442ad23fd9b4f3aea9adf59cdb2c832c02e6", "kind": "transparent" }, { "address": "0xe3EF345391654121f385679613Cea79A692C2Dd8", - "txHash": "0x18ea4b71df31f6eaaa561685e568ca054475c37bb098166574ae7bb9a5543005", + "txHash": "0xe9ab9c289aec24c63f8f03f7da8709506b606a1d4242f90a873b3801d9c5e040", "kind": "transparent" }, { "address": "0x6D39d71fF4ab56a4873febd34e1a3BDefc01b41e", - "txHash": "0xc7b0fe6ab471c16c7770544583c12a6b87c80db50b395cae768775fad1703546", + "txHash": "0xef0d84a23fbb70e096f89cc42213f9f65cd482717e18fed251407de891985bfd", "kind": "transparent" }, { "address": "0xeF66010868Ff77119171628B7eFa0F6179779375", - "txHash": "0x235ce5c90453e10ed2457eddbdbd91fab3ccc302af81633256eef9988b807bd9", + "txHash": "0xa24835e54655b6f70b6dd24cebf09062c63b9ac2df192fb2d76b0d8e2d4543b9", "kind": "transparent" }, { "address": "0x103416cfCD0D0a32b904Ab4fb69dF6E5B5aaDf2b", - "txHash": "0x7fc754bc79957d0d299ca0082867850868126189a583d4732d2114d263d393e9", + "txHash": "0x18473eb62b55b9db6082262b646fff7b12cdea92b333a2d71e9662cfd1cd8354", "kind": "transparent" }, { "address": "0xACB5b53F9F193b99bcd8EF8544ddF4c398DE24a3", - "txHash": "0xb54eec53a2129d2b3850f4714757e0302bafd1177799c40f19893269b95792c1", + "txHash": "0xcbe9d6dd8fbfa06812dd320d40798ba8c58f0071f8c59a24d548ad256144f89f", "kind": "transparent" }, { "address": "0x6C3F7ed79b9D75486D0250946f7a20BDA74844Ba", - "txHash": "0x909be7e134f9ea23cbc29a136745c01eb8347a9942fdf8f4e0920807b0e7dcf8", + "txHash": "0x62270f80e808433a927f93d41f5a39b6d406cbdcd334bb48981548364b59c547", "kind": "transparent" }, { "address": "0x43c5DF0c482c88Cef8005389F64c362eE720A5bC", - "txHash": "0xd2693bd5a0c259e1ec4814227b52040e00e5247b22ba509e6ce4216c4ddecaf0", + "txHash": "0x1e48a5152db2105545a98ad23607da63650e6f61c2e670c98eb07710dff66b9e", "kind": "transparent" }, { "address": "0xF01f4567586c3A707EBEC87651320b2dd9F4A287", - "txHash": "0x4424569baadb3a3417af1525f70feed18f96f802c9a6548e355991a7a322cbb1", + "txHash": "0x69e34c81d23cad054d59f27b943de66d7f0887f3ade0436500a8be2b996e88d2", "kind": "transparent" }, { "address": "0xCaC60200c1Cb424f2C1e438c7Ee1B98d487f0254", - "txHash": "0x4ef8f40f4ffb1b17ba189cb49b7fa1199991280309ef7b88d1aaeb4ee445dff6", + "txHash": "0x4ce151eaa06da1ad481b60c32e826bbbef199dbb24c12c8f8e78d7a70540badd", "kind": "transparent" }, { "address": "0xFf8FA9381caf61cB3368a6ec0b3F5C788028D0Cd", - "txHash": "0x0ddde961746e0980703c1c15b1fd911b46f770ecd376fb54727fbb7efb5e05a4", + "txHash": "0x90c7ba18ea979a16010435a1b939afbf3635357f88aa30c8a2b63d901f8fcbf7", "kind": "transparent" }, { "address": "0x69eB226983E10D7318816134cd44BE3023dC74cd", - "txHash": "0x14a53f3e966dc1d12c898803c1525c5feb0e589af30d3f2d6786707faf9bd76a", + "txHash": "0x0e827f86d5265777475ee2ee58db0b0467441382dd8eddab730505b6c27eb85b", "kind": "transparent" }, { "address": "0xD8fE7c45330c8b12cA0D4728D75557b9e7BeB24F", - "txHash": "0xe251d8618c06cc376953a5a09435acd776dca105910fcd654079b8b48b310716", + "txHash": "0x2e4e794e143ae55a5b5a65bab58d5b888e97698496a8f5288a87105983b67587", "kind": "transparent" }, { "address": "0x3Aa338c8d5E6cefE95831cD0322b558677abA0f1", - "txHash": "0xfd183e40482bbc74e17650c22609f079af001225e76e82e8b74063f1e52885da", + "txHash": "0xc84388e1f705c75487dfe710426ba4b55e298db65cf98e8dd937313f6543cb7c", "kind": "transparent" }, { "address": "0x267fB71b280FB34B278CedE84180a9A9037C941b", - "txHash": "0x501ae8bf30ea1dbd2551f986ba1737efdf0f9d6ea5d63e996d0307284edc6ed7", + "txHash": "0x94320794647c7534e1b07aa9be8262fe6b42d3fc7bfd706113f8cdecce130bce", "kind": "transparent" }, { "address": "0x9015957A2210BB8B10e27d8BBEEF8d9498f123eF", - "txHash": "0xf4a10b2329504d575d1e1548a5681ee17f8c37b30ffdf5eb1a6475d14ee4c2a1", + "txHash": "0x6e04dfe831796032bb596bb9692d05d5f412eb19fdb67dd2255fb46c11675a07", "kind": "transparent" }, { "address": "0x9C6c49E1a5108eC5A2111c0b9B62624100d11e3a", - "txHash": "0xb118fa3de76c12a964e17c5e38dc0fcfc1942cc78e0ed7aa627f484c993d89b3", + "txHash": "0xced6993412fee813174c26fc6c1a5bf7d9fadecfb05c0b853707ebee0bc82880", "kind": "transparent" }, { "address": "0x95D7fF1684a8F2e202097F28Dc2e56F773A55D02", - "txHash": "0x87ccb08dd43f3def1c9f385f7b64a36ca83bcb4969c201c9550a44b6cbeceb8d", + "txHash": "0x6de6a0b2aa95743074764376480381aac4cf47aba274bdee856c30baf7c3d363", "kind": "transparent" }, { "address": "0x633a7eB9b8912b22f3616013F3153de687F96074", - "txHash": "0xbb92e43912bd42b9616925357dd46e32cc0715d92aeb41ef9dbd5c4b0d4404e0", + "txHash": "0xbc92ed716055db3da85200fe438ccab24e2b9f8910de773eaebaf5faafb65feb", "kind": "transparent" }, { "address": "0x1E53bea57Dd5dDa7bFf1a1180a2f64a5c9e222f5", - "txHash": "0x0bf88e78fa04862975f297c2edd065678b54ae776b83057577ea16f7feb11fd7", + "txHash": "0x16b0ea8a5e1f91a7f7e9de40b8b64049b3f9fee848a6e7b3511de9e7a2c2f003", "kind": "transparent" }, { "address": "0x17f4B55A352Be71CC03856765Ad04147119Aa09B", - "txHash": "0x91635e68bc304d8dfb994d4511f202b4fd9399d9a58e789baf1a8ca0be8dc2c1", + "txHash": "0x2408e2bda3a46360dd991601eb9f1ca5a93c48d02fc31a3901906a419ea36c52", "kind": "transparent" }, { "address": "0x08677Af0A7F54fE2a190bb1F75DE682fe596317e", - "txHash": "0xcc540ff89746020600d32eff1da6a61f63fc0fc64967820a2c3a2ad1b9a2d573", + "txHash": "0x2f31a8a3ab9c166f35d315cdbf89246a5594a9e00b6c3a9e13aecf96e866725b", "kind": "transparent" }, { "address": "0x87a2688d6E41b23d802F74c6B1F06a8e8d118929", - "txHash": "0xde6e7a071b053e31c6a1e3c778cd23113aee167280edee97bc65f51ffb5b9765", + "txHash": "0x1f51f4214353ba11a2020b468d3db3a0502ab94ce9e5aeb564a1c342c0354480", "kind": "transparent" }, { "address": "0x8797847c9d63D8Ed9C30B058F408d4257A33B76C", - "txHash": "0xaad0a04762380782e7d2435cb6465d12e915e61ccb92715934e9035848a6944e", + "txHash": "0x5cb00034950c2486f4e0ffd66cf93c1320892812a71f38a4289f950f3f359d21", "kind": "transparent" }, { "address": "0xF816b7FfDa4a8aB6B68540D1993fCa98E462b3bc", - "txHash": "0xa501fe5542d39dfd5f590f042b914a014988158ea391b66aa2068ef27ff32f19", + "txHash": "0x083d774155d5068fdd4f9874514d3e09a2156c57652e62839cc33b74764b5606", "kind": "transparent" }, { "address": "0xDB259fa7d7f9F68aE3ffC3c748516ba9567a7576", - "txHash": "0xc05d786a57888039ce4a8b6ae7dd2c11cc7bcbc37fab2348ab592ccfdced35a9", + "txHash": "0x0d14c95e7162ff3495b71a68fe7e559c6b85f2e8febe45865a2b15acc8d2bb5e", "kind": "transparent" }, { "address": "0x71d75C9A9e1a4fFa5a16556b51D6e630A4FA902A", - "txHash": "0xb1a4553030465f11524886ab3d87d64c444ad569d61cf5ad6bdb54bfdc5d3207", + "txHash": "0xf227dc48e0418517eb10cc0d7010b444cf8bbc0005fab3f0b0d704af33b1a2f9", "kind": "transparent" }, { "address": "0x701dC26AcaD119E892695bb6A06956e2165C2052", - "txHash": "0x5bc2dd3d1f7e85e268aa5b979b30cb4a31252bb085eed282b04ab28f01d29f9a", + "txHash": "0x107f87062e9ccb5595979d6afc69743268df7b4f54cf893cef0e497426ab4032", "kind": "transparent" }, { "address": "0xbaee9B65349929Bd78f9878555bF78027Df7f101", - "txHash": "0x7f5f41aef1f79aecfb8a1bf9dbbb898398610154745a15f93ba6b5bff2168e39", + "txHash": "0x68e04d5303cdd617651890168015a0b2d067e3423d9799df79dab5f42adabf3e", "kind": "transparent" }, { "address": "0x886a2A3ABF5B79AA5dFF1C73016BD07CFc817e04", - "txHash": "0xe10b4371962b280d9d8ae1ad9b1c460ace1305967b4d0eaf8b7003016e8bb9db", + "txHash": "0x8c01510acae079991b441afdfc55d6e26c96423e2039da0af26630713c47aa26", "kind": "transparent" }, { "address": "0x449C286Ab90639fd9F6604F4f15Ec86bce2b8A61", - "txHash": "0xc359e21505ceeef6d8d34524fbc441b76753f555ad688b94a89aa299db0a602e", + "txHash": "0xe52c6d0f26a57c7c329042ba3c556ad94eb69c8e19061a77aeb6893ea117c9e0", "kind": "transparent" }, { "address": "0x5aA185fbEFc205072FaecC6B9D564383e761f8C2", - "txHash": "0xdfdf10a3a3e25f1edbc76017fe814c59243e0a725aad5d213c7c1a729faf5c27", + "txHash": "0xf5065e665de80f7f8d067d16a3a2ebc708e6ce9518f875ce52091a865eabd83b", "kind": "transparent" }, { "address": "0x63275D081C4A77AE69f76c4952F9747a5559a519", - "txHash": "0x90b6cdd247a950e8b9b55d667854240a2be53974054a906355991cbdb184ccc3", + "txHash": "0xa42252b11c89aea24580f4303daa1aaee59a6cadc316af41479a7b96963ffc18", "kind": "transparent" }, { "address": "0x67832b9Fc47eb3CdBF7275b95a29740EC58193D2", - "txHash": "0x760c7911c1e2371d5e508867013a677e7dc87af56094f73697fe4441e52afa31", + "txHash": "0xa2d39237d58b146c4ac2ba58f0d0ed4871d4e2a90fe593ddc0bda058e96b3c18", "kind": "transparent" }, { "address": "0x832092FDF1D32A3A1b196270590fB0E25DF129FF", - "txHash": "0x9c06703c107505a17cc4dab86db19d8ad1409224fc7a77e1ea63be946c48e66a", + "txHash": "0x80bbe8abf3eebf92789d047f2c3299acca2b09a42ecb994daee6ffa0e8f74c8b", "kind": "transparent" }, { "address": "0x8729c0238b265BaCF6fE397E8309897BB5c40473", - "txHash": "0xca18daf3344bd254c03018c4c88c68510d4df626bc767ab766105ec90adf1fdf", + "txHash": "0xfcecdd885136bebcf2377b05dad1741094b2e5ae65ca391085dfc32381a3884c", "kind": "transparent" }, { "address": "0xDf795df2e0ad240a82d773DA01a812B96345F9C5", - "txHash": "0x43aca645e2389aeca7291fdcf1e920d6ce7023a0634a39cadf1c8879f93e7959", + "txHash": "0x89e58bcc5cfb3caed900d6bffe9a07999a7125544ae2a3bbd9f701bfedbdc012", "kind": "transparent" }, { "address": "0xDb731EaaFA0FFA7854A24C2379585a85D768Ed5C", - "txHash": "0xbf8f6e87264d16af441499df65dd3ac6626f3b33c71f5efe3854475232dfdd1f", + "txHash": "0xa6d86bbdd49e1ce3b0d40a9f2583c178dee0f6f062d4a74fa23bfde18f1f2f47", "kind": "transparent" }, { "address": "0x335796f7A0F72368D1588839e38f163d90C92C80", - "txHash": "0x695de7eca08cd0ec9367f0d228296e7d14bb9fafd2b1e95c9165dc079e7feb76", + "txHash": "0x4476648c95b6f99a9866f90dc838062f1d11d4a3771fa55ebe8075ef8289c11f", "kind": "transparent" }, { "address": "0xC63db9682Ff11707CADbD72bf1A0354a7feF143B", - "txHash": "0x88eedea406ef4a987ce3a0230633620c7b9e4cb35807369dfe07acb8bc9202f6", + "txHash": "0x7123a77cad6a34fe05d2f692c241a67eacf9ff83a8a60ea4ab1d2e2e5ae976d1", "kind": "transparent" }, { "address": "0xF8b1d4d0A2Dd9Dd53200A4C6783a69c15E3a25F4", - "txHash": "0xcb16d63658b653c346934a4583ef6ef09a013683e77f958edefb25a3ac92be99", + "txHash": "0xfc705b0062a0c218d89db4ba081e15b41f2171fb1b143f616821be3a5f4a2543", "kind": "transparent" } ], @@ -4372,9 +4372,9 @@ } } }, - "2b862cc284752b12e95bc814afc1bfaaf793da4dc895ef72c1fcb2fe7ae0cb6d": { + "156128106d8775221abadd9ecb56b9554163dababa30784223870f0d18ea2144": { "address": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "txHash": "0x8ea042d4adb2fdf95ba20252926c9974c51982bc45e641c2c86602c7b22cfde3", + "txHash": "0x773e40e78f751fe6af71d6372bcadcf2f88b51161e562744423f5a2a3d758fbc", "layout": { "storage": [ { @@ -4424,15 +4424,15 @@ "slot": "101", "type": "t_address", "contract": "TokenFactory", - "src": "contracts/TokenFactory.sol:18" + "src": "contracts/TokenFactory.sol:34" }, { "label": "templateNFTReward", "offset": 0, "slot": "102", - "type": "t_contract(INFTReward)3146", + "type": "t_contract(INFTReward)12197", "contract": "TokenFactory", - "src": "contracts/TokenFactory.sol:24" + "src": "contracts/TokenFactory.sol:40" } ], "types": { @@ -4452,7 +4452,7 @@ "label": "bool", "numberOfBytes": "1" }, - "t_contract(INFTReward)3146": { + "t_contract(INFTReward)12197": { "label": "contract INFTReward", "numberOfBytes": "20" }, @@ -4467,9 +4467,9 @@ } } }, - "1e0d4c62d8abb1db80927b96b5ecf32801a2ed6394d75617fb7bd37277e68ec2": { + "4c654f4b705ba21f6bda4c8b60c3471dac0d4ce4d93afcd16636c84e92b4692e": { "address": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", - "txHash": "0x8d773c6a4c042e344b8407d2ac1b39a7c3242df7eaa8f0e969ce4676421e360f", + "txHash": "0xb1f358b3169b2ebf85bf287528843b93bf5e606a642d23cee2d363fc8af25d24", "layout": { "storage": [ { @@ -4533,17 +4533,17 @@ "label": "courseData", "offset": 0, "slot": "151", - "type": "t_mapping(t_bytes32,t_struct(Course)8206_storage)", + "type": "t_mapping(t_bytes32,t_struct(Course)12027_storage)", "contract": "LearnToEarn", - "src": "contracts/LearnToEarn.sol:17" + "src": "contracts/LearnToEarn.sol:93" }, { "label": "learnerData", "offset": 0, "slot": "152", - "type": "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Learner)8216_storage))", + "type": "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Learner)12037_storage))", "contract": "LearnToEarn", - "src": "contracts/LearnToEarn.sol:20" + "src": "contracts/LearnToEarn.sol:96" } ], "types": { @@ -4571,19 +4571,19 @@ "label": "bytes32", "numberOfBytes": "32" }, - "t_mapping(t_address,t_struct(Learner)8216_storage)": { + "t_mapping(t_address,t_struct(Learner)12037_storage)": { "label": "mapping(address => struct Learner)", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Learner)8216_storage))": { + "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Learner)12037_storage))": { "label": "mapping(bytes32 => mapping(address => struct Learner))", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_struct(Course)8206_storage)": { + "t_mapping(t_bytes32,t_struct(Course)12027_storage)": { "label": "mapping(bytes32 => struct Course)", "numberOfBytes": "32" }, - "t_struct(Course)8206_storage": { + "t_struct(Course)12027_storage": { "label": "struct Course", "members": [ { @@ -4661,7 +4661,7 @@ ], "numberOfBytes": "320" }, - "t_struct(Learner)8216_storage": { + "t_struct(Learner)12037_storage": { "label": "struct Learner", "members": [ { @@ -4702,9 +4702,9 @@ } } }, - "12ebbaa45d78637d59ee2caefa0726423bd7f0f62280acd55c4eea365e160ab1": { + "8c6252e93ff6083b301751bb31529501d8437bc30b15f0ae64e377fdbe3ed8c0": { "address": "0x725314746e727f586E9FCA65AeD5dBe45aA71B99", - "txHash": "0xc172768cb250e8b85e5cee06eb17a62eaf0224d54e0df08c0cefd3d8ca0b7de2", + "txHash": "0x9cafff728a5feaca03f7dd7a07fc9c6ae36fb7fb9bebbe775369f6af05df0a04", "layout": { "storage": [ { @@ -4818,7 +4818,7 @@ "slot": "201", "type": "t_address", "contract": "NFTReward", - "src": "contracts/NFTReward.sol:15" + "src": "contracts/NFTReward.sol:27" }, { "label": "tokenIds", @@ -4826,7 +4826,7 @@ "slot": "202", "type": "t_uint256", "contract": "NFTReward", - "src": "contracts/NFTReward.sol:20" + "src": "contracts/NFTReward.sol:32" }, { "label": "uri", @@ -4834,7 +4834,7 @@ "slot": "203", "type": "t_string_storage", "contract": "NFTReward", - "src": "contracts/NFTReward.sol:25" + "src": "contracts/NFTReward.sol:37" } ], "types": { @@ -4893,9 +4893,9 @@ } } }, - "46a230b691bdb0eb3203b9d47bcd885a0a52010f4b36d2d46e80e004bb7eb200": { + "e72ce5612f004b1991ac3ed69acc655fb93a15309f647c70e37d6006c808fe49": { "address": "0xe24e7570Fe7207AdAaAa8c6c89a59850391B5276", - "txHash": "0x440b067b94ad6168cd3f93f026dbbf2728099ad34994b74960c6bb0e95eb6d18", + "txHash": "0x67dd1b704422711798233ebc22ba9fd76970e42c9be7668612d7cedccce76061", "layout": { "storage": [ { @@ -4961,39 +4961,39 @@ "slot": "151", "type": "t_address", "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:30" + "src": "contracts/ReBakedDAO.sol:122" }, { "label": "projectData", "offset": 0, "slot": "152", - "type": "t_mapping(t_bytes32,t_struct(Project)9615_storage)", + "type": "t_mapping(t_bytes32,t_struct(Project)14842_storage)", "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:33" + "src": "contracts/ReBakedDAO.sol:125" }, { "label": "packageData", "offset": 0, "slot": "153", - "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_struct(Package)9648_storage))", + "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_struct(Package)14875_storage))", "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:36" + "src": "contracts/ReBakedDAO.sol:128" }, { "label": "collaboratorData", "offset": 0, "slot": "154", - "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9663_storage)))", + "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)14890_storage)))", "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:42" + "src": "contracts/ReBakedDAO.sol:131" }, { "label": "observerData", "offset": 0, "slot": "155", - "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9670_storage)))", + "type": "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)14897_storage)))", "contract": "ReBakedDAO", - "src": "contracts/ReBakedDAO.sol:45" + "src": "contracts/ReBakedDAO.sol:134" } ], "types": { @@ -5017,43 +5017,43 @@ "label": "bytes32", "numberOfBytes": "32" }, - "t_mapping(t_address,t_struct(Collaborator)9663_storage)": { + "t_mapping(t_address,t_struct(Collaborator)14890_storage)": { "label": "mapping(address => struct Collaborator)", "numberOfBytes": "32" }, - "t_mapping(t_address,t_struct(Observer)9670_storage)": { + "t_mapping(t_address,t_struct(Observer)14897_storage)": { "label": "mapping(address => struct Observer)", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9663_storage))": { + "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)14890_storage))": { "label": "mapping(bytes32 => mapping(address => struct Collaborator))", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9670_storage))": { + "t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)14897_storage))": { "label": "mapping(bytes32 => mapping(address => struct Observer))", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)9663_storage)))": { + "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Collaborator)14890_storage)))": { "label": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Collaborator)))", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)9670_storage)))": { + "t_mapping(t_bytes32,t_mapping(t_bytes32,t_mapping(t_address,t_struct(Observer)14897_storage)))": { "label": "mapping(bytes32 => mapping(bytes32 => mapping(address => struct Observer)))", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_mapping(t_bytes32,t_struct(Package)9648_storage))": { + "t_mapping(t_bytes32,t_mapping(t_bytes32,t_struct(Package)14875_storage))": { "label": "mapping(bytes32 => mapping(bytes32 => struct Package))", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_struct(Package)9648_storage)": { + "t_mapping(t_bytes32,t_struct(Package)14875_storage)": { "label": "mapping(bytes32 => struct Package)", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_struct(Project)9615_storage)": { + "t_mapping(t_bytes32,t_struct(Project)14842_storage)": { "label": "mapping(bytes32 => struct Project)", "numberOfBytes": "32" }, - "t_struct(Collaborator)9663_storage": { + "t_struct(Collaborator)14890_storage": { "label": "struct Collaborator", "members": [ { @@ -5101,7 +5101,7 @@ ], "numberOfBytes": "224" }, - "t_struct(Observer)9670_storage": { + "t_struct(Observer)14897_storage": { "label": "struct Observer", "members": [ { @@ -5125,7 +5125,7 @@ ], "numberOfBytes": "96" }, - "t_struct(Package)9648_storage": { + "t_struct(Package)14875_storage": { "label": "struct Package", "members": [ { @@ -5227,7 +5227,7 @@ ], "numberOfBytes": "512" }, - "t_struct(Project)9615_storage": { + "t_struct(Project)14842_storage": { "label": "struct Project", "members": [ { From 1aa2cf0ff235a75be36d454e04bd5f1181787595 Mon Sep 17 00:00:00 2001 From: phongho01 Date: Mon, 24 Apr 2023 14:45:55 +0700 Subject: [PATCH 11/13] fix cicd --- .github/workflows/EchidnaAnalyzer.yml | 41 +++++++++++++++++++++++++++ .github/workflows/SlitherAnalyzer.yml | 8 +++--- 2 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/EchidnaAnalyzer.yml diff --git a/.github/workflows/EchidnaAnalyzer.yml b/.github/workflows/EchidnaAnalyzer.yml new file mode 100644 index 0000000..700c504 --- /dev/null +++ b/.github/workflows/EchidnaAnalyzer.yml @@ -0,0 +1,41 @@ +name: Slither Analysis +on: pull_request + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + analyze: + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Setup node LTS + uses: actions/setup-node@v3 + with: + node-version: 14.18.2 + + - name: Install packages + run: | + cp .env.dev .env + npm install + + - name: Run Slither + uses: crytic/slither-action@v0.3.0 + id: slither + with: + node-version: 16 + sarif: results.sarif + fail-on: none + + - name: Upload SARIF file + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: ${{ steps.slither.outputs.sarif }} + diff --git a/.github/workflows/SlitherAnalyzer.yml b/.github/workflows/SlitherAnalyzer.yml index e35645a..0ab4dde 100644 --- a/.github/workflows/SlitherAnalyzer.yml +++ b/.github/workflows/SlitherAnalyzer.yml @@ -9,12 +9,13 @@ jobs: analyze: runs-on: ubuntu-latest permissions: + actions: read contents: read security-events: write steps: - name: Checkout repository uses: actions/checkout@v3 - + - name: Setup node LTS uses: actions/setup-node@v3 with: @@ -26,9 +27,10 @@ jobs: npm install - name: Run Slither - uses: crytic/slither-action@v0.2.0 + uses: crytic/slither-action@v0.3.0 id: slither with: + node-version: 16 sarif: results.sarif fail-on: none @@ -36,5 +38,3 @@ jobs: uses: github/codeql-action/upload-sarif@v2 with: sarif_file: ${{ steps.slither.outputs.sarif }} - - \ No newline at end of file From 3916def36e774ffaf598cff53a9760dce1d09e12 Mon Sep 17 00:00:00 2001 From: phongho01 Date: Mon, 24 Apr 2023 14:49:47 +0700 Subject: [PATCH 12/13] fix cicd --- .github/workflows/EchidnaAnalyzer.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/EchidnaAnalyzer.yml b/.github/workflows/EchidnaAnalyzer.yml index 700c504..1bd5544 100644 --- a/.github/workflows/EchidnaAnalyzer.yml +++ b/.github/workflows/EchidnaAnalyzer.yml @@ -1,4 +1,4 @@ -name: Slither Analysis +name: Echidna Analysis on: pull_request concurrency: From 81ce8bb1b7947b4750e701e2084a78fa8f41ae52 Mon Sep 17 00:00:00 2001 From: phongho01 Date: Mon, 24 Apr 2023 14:51:09 +0700 Subject: [PATCH 13/13] add echidna cicd --- .github/workflows/EchidnaAnalyzer.yml | 29 ++++++++++----------------- 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/.github/workflows/EchidnaAnalyzer.yml b/.github/workflows/EchidnaAnalyzer.yml index 1bd5544..ca406cc 100644 --- a/.github/workflows/EchidnaAnalyzer.yml +++ b/.github/workflows/EchidnaAnalyzer.yml @@ -1,4 +1,4 @@ -name: Echidna Analysis +name: Echidna Fuzzer on: pull_request concurrency: @@ -6,12 +6,8 @@ concurrency: cancel-in-progress: true jobs: - analyze: + build: runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write steps: - name: Checkout repository uses: actions/checkout@v3 @@ -25,17 +21,14 @@ jobs: run: | cp .env.dev .env npm install + - name: Compile contracts + run: npx hardhat compile - - name: Run Slither - uses: crytic/slither-action@v0.3.0 - id: slither + - name: Run Echidna + uses: crytic/echidna-action@v2 with: - node-version: 16 - sarif: results.sarif - fail-on: none - - - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@v2 - with: - sarif_file: ${{ steps.slither.outputs.sarif }} - + solc-version: 0.8.16 + files: . + contract: LearnToEarn + test-mode: exploration + crytic-args: --hardhat-ignore-compile